2016-07-26 01:03:53 +02:00
|
|
|
$(call record-module-type,HOST_EXECUTABLE)
|
2015-09-05 00:08:08 +02:00
|
|
|
LOCAL_IS_HOST_MODULE := true
|
2014-04-17 19:03:35 +02:00
|
|
|
my_prefix := HOST_
|
2015-08-14 21:59:50 +02:00
|
|
|
LOCAL_HOST_PREFIX :=
|
2014-04-17 19:03:35 +02:00
|
|
|
include $(BUILD_SYSTEM)/multilib.mk
|
|
|
|
|
2014-06-11 01:21:50 +02:00
|
|
|
ifndef LOCAL_MODULE_HOST_ARCH
|
2014-04-17 19:03:35 +02:00
|
|
|
ifndef my_module_multilib
|
|
|
|
# By default we only build host module for the first arch.
|
|
|
|
my_module_multilib := first
|
|
|
|
endif
|
2014-05-20 23:43:51 +02:00
|
|
|
endif
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
|
2014-09-04 00:01:46 +02:00
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
|
|
LOCAL_LDFLAGS += $(HOST_FPIE_FLAGS)
|
|
|
|
endif
|
|
|
|
|
2014-04-17 19:03:35 +02:00
|
|
|
ifeq ($(my_module_multilib),both)
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-02 22:54:51 +01:00
|
|
|
ifneq ($(LOCAL_MODULE_CLASS),NATIVE_TESTS)
|
2014-04-17 19:03:35 +02:00
|
|
|
ifeq ($(LOCAL_MODULE_PATH_32)$(LOCAL_MODULE_STEM_32),)
|
|
|
|
$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_32 or LOCAL_MODULE_PATH_32 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
endif
|
2014-04-17 19:03:35 +02:00
|
|
|
ifeq ($(LOCAL_MODULE_PATH_64)$(LOCAL_MODULE_STEM_64),)
|
|
|
|
$(error $(LOCAL_PATH): LOCAL_MODULE_STEM_64 or LOCAL_MODULE_PATH_64 is required for LOCAL_MULTILIB := both for module $(LOCAL_MODULE))
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
endif
|
Add NATIVE_TESTS class, move host native tests
Host native tests have been getting installed into
out/host/linux-x86/bin/..., but this pollutes the bin directory with a
lot of poorly named tests. Also, to support 32-bit and 64-bit tests, we
need to have different names with different suffixes. This causes
problems when tests expect to be named something specific (like gtest).
It's also convenient to store test data next to the test itself.
So with this change, native tests will be installed in
out/host/linux-x86/nativetest[64]/$(LOCAL_MODULE)/$(LOCAL_MODULE_STEM)
just like target tests get installed into /data/nativetest[64].
Implement this using a new NATIVE_TESTS class, which is like
EXECUTABLES, but sets up the install path differently, and configures
the rpath to load shared libraries with the proper relative path.
LOCAL_MODULE_RELATIVE_PATH can be used to control the directory name, it
will default to $(LOCAL_MODULE). This way multiple related tests can be
grouped together.
Target native tests also use NATIVE_TESTS now, but nothing should change
other than LOCAL_MODULE_RELATIVE_PATH can be used.
Change-Id: I535e42b1a6b21c5b8d6a580aa2f944d2be35e27d
2016-03-02 22:54:51 +01:00
|
|
|
endif
|
2014-04-17 19:03:35 +02:00
|
|
|
else #!LOCAL_MULTILIB == both
|
|
|
|
LOCAL_NO_2ND_ARCH_MODULE_SUFFIX := true
|
|
|
|
endif
|
|
|
|
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
|
2014-04-17 19:03:35 +02:00
|
|
|
ifeq ($(my_module_arch_supported),true)
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
|
|
endif
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
|
2014-04-17 19:03:35 +02:00
|
|
|
ifdef HOST_2ND_ARCH
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX := $(HOST_2ND_ARCH_VAR_PREFIX)
|
|
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
|
|
ifeq ($(my_module_arch_supported),true)
|
|
|
|
# Build for HOST_2ND_ARCH
|
|
|
|
OVERRIDE_BUILT_MODULE_PATH :=
|
|
|
|
LOCAL_BUILT_MODULE :=
|
|
|
|
LOCAL_INSTALLED_MODULE :=
|
|
|
|
LOCAL_INTERMEDIATE_TARGETS :=
|
2009-03-04 04:28:42 +01:00
|
|
|
|
2014-04-17 19:03:35 +02:00
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
|
|
endif
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
|
|
endif # HOST_2ND_ARCH
|
Build from source or prebuilt
With this change, you can easily switch between building from source
code and prebuilt.
Set LOCAL_PREBUILT_MODULE_FILE to the path of the prebuilt file,
relative to the top of the source tree, in the usual module definition.
The prebuilt will be used unless any of the followings satisfied:
1) ANDROID_BUILD_FROM_SOURCE is "true", which disable prebuilt globally;
2) The module name is in ANDROID_NO_PREBUILT_MODULES;
3) The LOCAL_PATH is prefixed by any of ANDROID_NO_PREBUILT_PATHS.
A developer can set ANDROID_NO_PREBUILT_MODULES or
ANDROID_NO_PREBUILT_PATHS to build only his own module(s) from source,
while build other modules from prebuilts.
You can set ANDROID_BUILD_FROM_SOURCE to true to build everything from
source.
Those variables can be set with shell environmental variable or in your
buildspec.mk.
Sometimes module B is able to be built from source only if module A is
also
built from source, for example, if B is the test apk of A.
In that case, you can use the macro include-if-build-from-source to
include B's Android.mk only if A is built from source too, or
if-build-from-source to conditionally include the definition of module
B,
if their module definitions are in the same Android.mk.
Support host-executable-hook and host-shared-library-hook.
Change-Id: Icab7cf028c87eaba0dd7efc2a7749fd6f32b44e4
2012-12-14 03:23:01 +01:00
|
|
|
|
2015-08-14 21:59:50 +02:00
|
|
|
ifdef HOST_CROSS_OS
|
|
|
|
my_prefix := HOST_CROSS_
|
|
|
|
LOCAL_HOST_PREFIX := $(my_prefix)
|
|
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
|
|
ifeq ($(my_module_arch_supported),true)
|
|
|
|
# Build for Windows
|
|
|
|
OVERRIDE_BUILT_MODULE_PATH :=
|
|
|
|
# we don't want others using the cross compiled version
|
|
|
|
saved_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
|
|
|
saved_LOCAL_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE)
|
2016-02-06 01:20:19 +01:00
|
|
|
saved_LOCAL_LDFLAGS := $(LOCAL_LDFLAGS)
|
2015-08-14 21:59:50 +02:00
|
|
|
LOCAL_BUILT_MODULE :=
|
|
|
|
LOCAL_INSTALLED_MODULE :=
|
|
|
|
LOCAL_INTERMEDIATE_TARGETS :=
|
|
|
|
|
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
|
|
LOCAL_LDFLAGS += $(HOST_CROSS_FPIE_FLAGS)
|
|
|
|
endif
|
|
|
|
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
2016-02-06 01:20:19 +01:00
|
|
|
LOCAL_LDFLAGS := $(saved_LOCAL_LDFLAGS)
|
2015-08-14 21:59:50 +02:00
|
|
|
LOCAL_BUILT_MODULE := $(saved_LOCAL_BUILT_MODULE)
|
|
|
|
LOCAL_INSTALLED_MODULE := $(saved_LOCAL_INSTALLED_MODULE)
|
|
|
|
endif
|
2016-02-06 01:20:19 +01:00
|
|
|
|
|
|
|
ifdef HOST_CROSS_2ND_ARCH
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX := $(HOST_CROSS_2ND_ARCH_VAR_PREFIX)
|
|
|
|
include $(BUILD_SYSTEM)/module_arch_supported.mk
|
|
|
|
ifeq ($(my_module_arch_supported),true)
|
|
|
|
OVERRIDE_BUILT_MODULE_PATH :=
|
|
|
|
# we don't want others using the cross compiled version
|
|
|
|
saved_LOCAL_BUILT_MODULE := $(LOCAL_BUILT_MODULE)
|
|
|
|
saved_LOCAL_INSTALLED_MODULE := $(LOCAL_INSTALLED_MODULE)
|
|
|
|
saved_LOCAL_LDFLAGS := $(LOCAL_LDFLAGS)
|
|
|
|
LOCAL_BUILT_MODULE :=
|
|
|
|
LOCAL_INSTALLED_MODULE :=
|
|
|
|
LOCAL_INTERMEDIATE_TARGETS :=
|
|
|
|
|
|
|
|
ifeq ($(LOCAL_NO_FPIE),)
|
|
|
|
LOCAL_LDFLAGS += $(HOST_CROSS_FPIE_FLAGS)
|
|
|
|
endif
|
|
|
|
|
|
|
|
include $(BUILD_SYSTEM)/host_executable_internal.mk
|
|
|
|
LOCAL_LDFLAGS := $(saved_LOCAL_LDFLAGS)
|
|
|
|
LOCAL_BUILT_MODULE := $(saved_LOCAL_BUILT_MODULE)
|
|
|
|
LOCAL_INSTALLED_MODULE := $(saved_LOCAL_INSTALLED_MODULE)
|
|
|
|
endif
|
|
|
|
LOCAL_2ND_ARCH_VAR_PREFIX :=
|
|
|
|
endif
|
2015-08-14 21:59:50 +02:00
|
|
|
LOCAL_HOST_PREFIX :=
|
|
|
|
endif
|
|
|
|
|
2014-04-17 19:03:35 +02:00
|
|
|
LOCAL_NO_2ND_ARCH_MODULE_SUFFIX :=
|
|
|
|
my_module_arch_supported :=
|