2 # Copyright (C) 2006-2010 OpenWrt.org
4 # This is free software, licensed under the GNU General Public License v2.
5 # See /LICENSE for more information.
8 HOST_BUILD_DIR ?
= $(BUILD_DIR_HOST
)/$(PKG_NAME
)$(if
$(PKG_VERSION
),-$(PKG_VERSION
))
9 HOST_INSTALL_DIR ?
= $(HOST_BUILD_DIR
)/host-install
10 HOST_BUILD_PARALLEL ?
=
12 ifneq ($(CONFIG_PKG_BUILD_USE_JOBSERVER
),)
13 HOST_MAKE_J
:=$(if
$(MAKE_JOBSERVER
),$(MAKE_JOBSERVER
) $(if
$(filter 3.
% 4.0 4.1,$(MAKE_VERSION
)),-j
))
15 HOST_MAKE_J
:=-j
$(CONFIG_PKG_BUILD_JOBS
)
18 ifeq ($(strip $(HOST_BUILD_PARALLEL
)),0)
21 HOST_JOBS?
=$(if
$(HOST_BUILD_PARALLEL
)$(CONFIG_PKG_DEFAULT_PARALLEL
),\
22 $(if
$(CONFIG_PKG_BUILD_PARALLEL
),$(HOST_MAKE_J
),-j1
),-j1
)
25 include $(INCLUDE_DIR
)/host.mk
26 include $(INCLUDE_DIR
)/unpack.mk
27 include $(INCLUDE_DIR
)/depends.mk
30 HOST_STAMP_PREPARED
=$(HOST_BUILD_DIR
)/.prepared
$(if
$(HOST_QUILT
)$(DUMP
),,$(shell $(call find_md5
,${CURDIR} $(PKG_FILE_DEPENDS
),)))
31 HOST_STAMP_CONFIGURED
:=$(HOST_BUILD_DIR
)/.configured
32 HOST_STAMP_BUILT
:=$(HOST_BUILD_DIR
)/.built
33 HOST_BUILD_PREFIX
:=$(if
$(IS_PACKAGE_BUILD
),$(STAGING_DIR_HOSTPKG
),$(STAGING_DIR_HOST
))
34 HOST_STAMP_INSTALLED
:=$(HOST_BUILD_PREFIX
)/stamp
/.
$(PKG_NAME
)_installed
38 include $(INCLUDE_DIR
)/download.mk
39 include $(INCLUDE_DIR
)/quilt.mk
40 include $(INCLUDE_DIR
)/autotools.mk
42 Host
/Patch
:=$(Host
/Patch
/Default
)
43 ifneq ($(strip $(HOST_UNPACK
)),)
44 define Host
/Prepare
/Default
46 [ ! -d .
/src
/ ] ||
$(CP
) .
/src
/* $(HOST_BUILD_DIR
)
52 $(call Host
/Prepare
/Default
)
55 ifeq ($(HOST_OS
),Darwin
)
56 HOST_CFLAGS
+= -I
/usr
/local
/opt
/openssl
/include
57 HOST_LDFLAGS
+= -L
/usr
/local
/opt
/openssl
/lib
60 HOST_CONFIGURE_VARS
= \
62 CFLAGS
="$(HOST_CFLAGS)" \
63 CPPFLAGS
="$(HOST_CPPFLAGS)" \
64 LDFLAGS
="$(HOST_LDFLAGS)" \
67 HOST_CONFIGURE_ARGS
= \
68 --target
=$(GNU_HOST_NAME
) \
69 --host
=$(GNU_HOST_NAME
) \
70 --build
=$(GNU_HOST_NAME
) \
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
81 HOST_CONFIGURE_CMD
= $(BASH
) .
/configure
83 define 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)/ && \
88 $(HOST_CONFIGURE_CMD
) \
89 $(HOST_CONFIGURE_VARS
) \
90 $(HOST_CONFIGURE_ARGS
) \
97 $(call Host
/Configure
/Default
)
100 define Host
/Compile
/Default
101 +$(MAKE
) $(HOST_JOBS
) -C
$(HOST_BUILD_DIR
) \
107 $(call Host
/Compile
/Default
)
110 define Host
/Install
/Default
111 $(_SINGLE
)$(MAKE
) -C
$(HOST_BUILD_DIR
) install
115 $(call Host
/Install
/Default
,$(HOST_BUILD_PREFIX
))
119 ifneq ($(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
)))
126 define 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
))
134 Host
/Exports
=$(Host
/Exports
/Default
)
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
))
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
))
149 $(foreach hook
,$(Hooks
/HostPrepare
/Post
),$(call
$(hook
))$(sep
))
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
))
159 $(call Host
/Exports
,$(HOST_STAMP_BUILT
))
160 $(HOST_STAMP_BUILT
): $(HOST_STAMP_CONFIGURED
)
161 $(foreach hook
,$(Hooks
/HostCompile
/Pre
),$(call
$(hook
))$(sep
))
163 $(foreach hook
,$(Hooks
/HostCompile
/Post
),$(call
$(hook
))$(sep
))
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
)
175 prepare
: host-prepare
176 compile
: host-compile
177 install: host-install
180 refresh
: host-refresh
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
)
189 $(call Host
/Uninstall
)
190 rm -rf
$(HOST_BUILD_DIR
) $(HOST_STAMP_INSTALLED
) $(HOST_STAMP_BUILT
)