7fe992c0cc
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
80 lines
3 KiB
Makefile
80 lines
3 KiB
Makefile
#
|
|
# Copyright (C) 2006 The Android Open Source Project
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
#
|
|
|
|
# Configuration for Darwin (Mac OS X) on x86.
|
|
# Included by combo/select.mk
|
|
|
|
include $(BUILD_COMBOS)/mac_version.mk
|
|
|
|
define $(combo_var_prefix)transform-shared-lib-to-toc
|
|
$(call _gen_toc_command_for_macho,$(1),$(2))
|
|
endef
|
|
|
|
$(combo_2nd_arch_prefix)HOST_SHLIB_SUFFIX := .dylib
|
|
$(combo_2nd_arch_prefix)HOST_JNILIB_SUFFIX := .jnilib
|
|
|
|
$(combo_2nd_arch_prefix)HOST_GLOBAL_ARFLAGS := cqs
|
|
|
|
# Use Darwin's libc++, as Darwin's libstdc++ is old and does not support C++11
|
|
$(combo_2nd_arch_prefix)HOST_SYSTEMCPP_CPPFLAGS := -isystem $(mac_sdk_path)/Toolchains/XcodeDefault.xctoolchain/usr/include/c++/v1
|
|
$(combo_2nd_arch_prefix)HOST_SYSTEMCPP_LDFLAGS := -stdlib=libc++
|
|
|
|
############################################################
|
|
## Macros after this line are shared by the 64-bit config.
|
|
|
|
HOST_CUSTOM_LD_COMMAND := true
|
|
|
|
define transform-host-o-to-shared-lib-inner
|
|
$(hide) $(PRIVATE_CXX) \
|
|
-dynamiclib -single_module -read_only_relocs suppress \
|
|
$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LD_DIRS) \
|
|
$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \
|
|
$(PRIVATE_HOST_GLOBAL_LDFLAGS) \
|
|
) \
|
|
$(PRIVATE_ALL_OBJECTS) \
|
|
$(addprefix -force_load , $(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
|
|
$(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
|
|
$(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
|
|
$(PRIVATE_LDLIBS) \
|
|
-o $@ \
|
|
-install_name @rpath/$(notdir $@) \
|
|
-Wl,-rpath,@loader_path/../$(notdir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)) \
|
|
-Wl,-rpath,@loader_path/$(notdir $($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_OUT_SHARED_LIBRARIES)) \
|
|
$(PRIVATE_LDFLAGS)
|
|
endef
|
|
|
|
define transform-host-o-to-executable-inner
|
|
$(hide) $(PRIVATE_CXX) \
|
|
$(foreach path,$(PRIVATE_RPATHS), \
|
|
-Wl,-rpath,@loader_path/$(path)) \
|
|
-o $@ \
|
|
-Wl,-headerpad_max_install_names \
|
|
$($(PRIVATE_2ND_ARCH_VAR_PREFIX)HOST_GLOBAL_LD_DIRS) \
|
|
$(if $(PRIVATE_NO_DEFAULT_COMPILER_FLAGS),, \
|
|
$(PRIVATE_HOST_GLOBAL_LDFLAGS) \
|
|
) \
|
|
$(call normalize-host-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \
|
|
$(PRIVATE_ALL_OBJECTS) \
|
|
$(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \
|
|
$(call normalize-host-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \
|
|
$(PRIVATE_LDFLAGS) \
|
|
$(PRIVATE_LDLIBS)
|
|
endef
|
|
|
|
# $(1): The file to check
|
|
define get-file-size
|
|
stat -f "%z" $(1)
|
|
endef
|