1# 2# Copyright (C) 2006-2010 OpenWrt.org 3# 4# This is free software, licensed under the GNU General Public License v2. 5# See /LICENSE for more information. 6# 7 8include $(INCLUDE_DIR)/download.mk 9 10HOST_BUILD_DIR ?= $(BUILD_DIR_HOST)/$(PKG_NAME)$(if $(PKG_VERSION),-$(PKG_VERSION)) 11HOST_INSTALL_DIR ?= $(HOST_BUILD_DIR)/host-install 12HOST_BUILD_PARALLEL ?= 13 14ifneq ($(CONFIG_PKG_BUILD_USE_JOBSERVER),) 15 HOST_MAKE_J:=$(if $(MAKE_JOBSERVER),$(MAKE_JOBSERVER) $(if $(filter 3.% 4.0 4.1,$(MAKE_VERSION)),-j)) 16else 17 HOST_MAKE_J:=-j$(CONFIG_PKG_BUILD_JOBS) 18endif 19 20ifeq ($(strip $(HOST_BUILD_PARALLEL)),0) 21HOST_JOBS?=-j1 22else 23HOST_JOBS?=$(if $(HOST_BUILD_PARALLEL)$(CONFIG_PKG_DEFAULT_PARALLEL),\ 24 $(if $(CONFIG_PKG_BUILD_PARALLEL),$(HOST_MAKE_J),-j1),-j1) 25endif 26 27include $(INCLUDE_DIR)/host.mk 28include $(INCLUDE_DIR)/unpack.mk 29include $(INCLUDE_DIR)/depends.mk 30 31BUILD_TYPES += host 32HOST_STAMP_PREPARED=$(HOST_BUILD_DIR)/.prepared$(if $(HOST_QUILT)$(DUMP),,$(shell $(call find_md5,${CURDIR} $(PKG_FILE_DEPENDS),))) 33HOST_STAMP_CONFIGURED:=$(HOST_BUILD_DIR)/.configured 34HOST_STAMP_BUILT:=$(HOST_BUILD_DIR)/.built 35HOST_BUILD_PREFIX:=$(if $(IS_PACKAGE_BUILD),$(STAGING_DIR_HOSTPKG),$(STAGING_DIR_HOST)) 36HOST_STAMP_INSTALLED:=$(HOST_BUILD_PREFIX)/stamp/.$(PKG_NAME)_installed 37 38override MAKEFLAGS= 39 40include $(INCLUDE_DIR)/quilt.mk 41include $(INCLUDE_DIR)/autotools.mk 42 43Host/Patch:=$(Host/Patch/Default) 44ifneq ($(strip $(HOST_UNPACK)),) 45 define Host/Prepare/Default 46 $(HOST_UNPACK) 47 $(Host/Patch) 48 endef 49endif 50 51define Host/Prepare 52 $(call Host/Prepare/Default) 53endef 54 55ifeq ($(HOST_OS),Darwin) 56 HOST_CFLAGS += -I/usr/local/opt/openssl/include 57 HOST_LDFLAGS += -L/usr/local/opt/openssl/lib 58endif 59 60HOST_CONFIGURE_VARS = \ 61 CC="$(HOSTCC)" \ 62 CFLAGS="$(HOST_CFLAGS)" \ 63 CPPFLAGS="$(HOST_CPPFLAGS)" \ 64 LDFLAGS="$(HOST_LDFLAGS)" \ 65 SHELL="$(SHELL)" 66 67HOST_CONFIGURE_ARGS = \ 68 --target=$(GNU_HOST_NAME) \ 69 --host=$(GNU_HOST_NAME) \ 70 --build=$(GNU_HOST_NAME) \ 71 --program-prefix="" \ 72 --program-suffix="" \ 73 --prefix=$(HOST_BUILD_PREFIX) \ 74 --exec-prefix=$(HOST_BUILD_PREFIX) \ 75 --sysconfdir=$(HOST_BUILD_PREFIX)/etc \ 76 --localstatedir=$(HOST_BUILD_PREFIX)/var \ 77 --sbindir=$(HOST_BUILD_PREFIX)/bin 78 79HOST_MAKE_FLAGS = 80 81HOST_CONFIGURE_CMD = $(BASH) ./configure 82 83define Host/Configure/Default 84 $(if $(HOST_CONFIGURE_PARALLEL),+)(cd $(HOST_BUILD_DIR)/$(3); \ 85 if [ -x configure ]; then \ 86 $(CP) $(SCRIPT_DIR)/config.{guess,sub} $(HOST_BUILD_DIR)/$(3)/ && \ 87 $(2) \ 88 $(HOST_CONFIGURE_CMD) \ 89 $(HOST_CONFIGURE_VARS) \ 90 $(HOST_CONFIGURE_ARGS) \ 91 $(1); \ 92 fi \ 93 ) 94endef 95 96define Host/Configure 97 $(call Host/Configure/Default) 98endef 99 100define Host/Compile/Default 101 +$(MAKE) $(HOST_JOBS) -C $(HOST_BUILD_DIR) \ 102 $(HOST_MAKE_FLAGS) \ 103 $(1) 104endef 105 106define Host/Compile 107 $(call Host/Compile/Default) 108endef 109 110define Host/Install/Default 111 $(_SINGLE)$(MAKE) -C $(HOST_BUILD_DIR) install 112endef 113 114define Host/Install 115 $(call Host/Install/Default,$(HOST_BUILD_PREFIX)) 116endef 117 118 119ifneq ($(if $(HOST_QUILT),,$(CONFIG_AUTOREBUILD)),) 120 define HostHost/Autoclean 121 $(call rdep,${CURDIR} $(PKG_FILE_DEPENDS),$(HOST_STAMP_PREPARED)) 122 $(if $(if $(Host/Compile),$(filter prepare,$(MAKECMDGOALS)),1),,$(call rdep,$(HOST_BUILD_DIR),$(HOST_STAMP_BUILT))) 123 endef 124endif 125 126define Host/Exports/Default 127 $(1) : export ACLOCAL_INCLUDE=$$(foreach p,$$(wildcard $$(STAGING_DIR_HOST)/share/aclocal $$(STAGING_DIR_HOST)/share/aclocal-* $(if $(IS_PACKAGE_BUILD),$$(STAGING_DIR)/host/share/aclocal $$(STAGING_DIR)/host/share/aclocal-*)),-I $$(p)) 128 $(1) : export STAGING_PREFIX=$$(HOST_BUILD_PREFIX) 129 $(1) : export PKG_CONFIG_PATH=$$(STAGING_DIR_HOST)/lib/pkgconfig:$$(HOST_BUILD_PREFIX)/lib/pkgconfig 130 $(1) : export PKG_CONFIG_LIBDIR=$$(HOST_BUILD_PREFIX)/lib/pkgconfig 131 $(1) : export CCACHE_DIR:=$(STAGING_DIR_HOST)/ccache 132 $(if $(IS_PACKAGE_BUILD),$(1) : export PATH=$$(TARGET_PATH_PKG)) 133endef 134Host/Exports=$(Host/Exports/Default) 135 136.NOTPARALLEL: 137 138ifndef DUMP 139 define HostBuild 140 $(if $(HOST_QUILT),$(Host/Quilt)) 141 $(if $(if $(PKG_HOST_ONLY),,$(STAMP_PREPARED)),,$(if $(strip $(PKG_SOURCE_URL)),$(call Download,default))) 142 $(if $(DUMP),,$(call HostHost/Autoclean)) 143 144 $(HOST_STAMP_PREPARED): 145 @-rm -rf $(HOST_BUILD_DIR) 146 @mkdir -p $(HOST_BUILD_DIR) 147 $(foreach hook,$(Hooks/HostPrepare/Pre),$(call $(hook))$(sep)) 148 $(call Host/Prepare) 149 $(foreach hook,$(Hooks/HostPrepare/Post),$(call $(hook))$(sep)) 150 touch $$@ 151 152 $(call Host/Exports,$(HOST_STAMP_CONFIGURED)) 153 $(HOST_STAMP_CONFIGURED): $(HOST_STAMP_PREPARED) 154 $(foreach hook,$(Hooks/HostConfigure/Pre),$(call $(hook))$(sep)) 155 $(call Host/Configure) 156 $(foreach hook,$(Hooks/HostConfigure/Post),$(call $(hook))$(sep)) 157 touch $$@ 158 159 $(call Host/Exports,$(HOST_STAMP_BUILT)) 160 $(HOST_STAMP_BUILT): $(HOST_STAMP_CONFIGURED) 161 $(foreach hook,$(Hooks/HostCompile/Pre),$(call $(hook))$(sep)) 162 $(call Host/Compile) 163 $(foreach hook,$(Hooks/HostCompile/Post),$(call $(hook))$(sep)) 164 touch $$@ 165 166 $(call Host/Exports,$(HOST_STAMP_INSTALLED)) 167 $(HOST_STAMP_INSTALLED): $(HOST_STAMP_BUILT) $(if $(FORCE_HOST_INSTALL),FORCE) 168 $(call Host/Install,$(HOST_BUILD_PREFIX)) 169 $(foreach hook,$(Hooks/HostInstall/Post),$(call $(hook))$(sep)) 170 mkdir -p $$(shell dirname $$@) 171 touch $(HOST_STAMP_BUILT) 172 touch $$@ 173 174 ifndef STAMP_BUILT 175 prepare: host-prepare 176 compile: host-compile 177 install: host-install 178 clean: host-clean 179 update: host-update 180 refresh: host-refresh 181 endif 182 183 host-prepare: $(HOST_STAMP_PREPARED) 184 host-configure: $(HOST_STAMP_CONFIGURED) 185 host-compile: $(HOST_STAMP_BUILT) $(if $(STAMP_BUILT),$(HOST_STAMP_INSTALLED)) 186 host-install: $(HOST_STAMP_INSTALLED) 187 host-clean: FORCE 188 $(call Host/Clean) 189 $(call Host/Uninstall) 190 rm -rf $(HOST_BUILD_DIR) $(HOST_STAMP_INSTALLED) $(HOST_STAMP_BUILT) 191 192 endef 193 194 download: 195 prepare: 196 compile: 197 install: 198 clean: 199 200endif 201