1# Configuration for Linux on x86 as a target. 2# Included by combo/select.make 3 4# You can set TARGET_TOOLS_PREFIX to get gcc from somewhere else 5ifeq ($(strip $($(combo_target)TOOLS_PREFIX)),) 6$(combo_target)TOOLS_PREFIX := \ 7 prebuilt/$(HOST_PREBUILT_TAG)/toolchain/i686-unknown-linux-gnu-4.2.1/bin/i686-unknown-linux-gnu- 8endif 9 10$(combo_target)CC := $($(combo_target)TOOLS_PREFIX)gcc$(HOST_EXECUTABLE_SUFFIX) 11$(combo_target)CXX := $($(combo_target)TOOLS_PREFIX)g++$(HOST_EXECUTABLE_SUFFIX) 12$(combo_target)AR := $($(combo_target)TOOLS_PREFIX)ar$(HOST_EXECUTABLE_SUFFIX) 13$(combo_target)OBJCOPY := $($(combo_target)TOOLS_PREFIX)objcopy$(HOST_EXECUTABLE_SUFFIX) 14$(combo_target)LD := $($(combo_target)TOOLS_PREFIX)ld$(HOST_EXECUTABLE_SUFFIX) 15 16ifneq ($(wildcard $($(combo_target)CC)),) 17$(combo_target)LIBGCC := \ 18 $(shell $($(combo_target)CC) -m32 -print-file-name=libgcc.a) \ 19 $(shell $($(combo_target)CC) -m32 -print-file-name=libgcc_eh.a) 20endif 21 22$(combo_target)NO_UNDEFINED_LDFLAGS := -Wl,--no-undefined 23 24libc_root := bionic/libc 25libm_root := bionic/libm 26libstdc++_root := bionic/libstdc++ 27libthread_db_root := bionic/libthread_db 28 29# unless CUSTOM_KERNEL_HEADERS is defined, we're going to use 30# symlinks located in out/ to point to the appropriate kernel 31# headers. see 'config/kernel_headers.make' for more details 32# 33ifneq ($(CUSTOM_KERNEL_HEADERS),) 34 KERNEL_HEADERS_COMMON := $(CUSTOM_KERNEL_HEADERS) 35 KERNEL_HEADERS_ARCH := $(CUSTOM_KERNEL_HEADERS) 36else 37 KERNEL_HEADERS_COMMON := $(libc_root)/kernel/common 38 KERNEL_HEADERS_ARCH := $(libc_root)/kernel/arch-$(TARGET_ARCH) 39endif 40KERNEL_HEADERS := $(KERNEL_HEADERS_COMMON) $(KERNEL_HEADERS_ARCH) 41 42$(combo_target)GLOBAL_CFLAGS += \ 43 -march=i686 \ 44 -m32 \ 45 -fPIC \ 46 -include $(call select-android-config-h,target_linux-x86) 47 48$(combo_target)GLOBAL_CPPFLAGS += \ 49 -fno-use-cxa-atexit 50 51$(combo_target)C_INCLUDES := \ 52 $(libc_root)/arch-x86/include \ 53 $(libc_root)/include \ 54 $(libstdc++_root)/include \ 55 $(KERNEL_HEADERS) \ 56 $(libm_root)/include \ 57 $(libm_root)/include/i387 \ 58 $(libthread_db_root)/include 59 60TARGET_CRTBEGIN_STATIC_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_static.o 61TARGET_CRTBEGIN_DYNAMIC_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_dynamic.o 62TARGET_CRTEND_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_android.o 63 64 65TARGET_CRTBEGIN_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtbegin_so.o 66TARGET_CRTEND_SO_O := $(TARGET_OUT_STATIC_LIBRARIES)/crtend_so.o 67 68# TARGET_STRIP_MODULE:=true 69 70$(combo_target)DEFAULT_SYSTEM_SHARED_LIBRARIES := libc libstdc++ libm 71 72$(combo_target)CUSTOM_LD_COMMAND := true 73define transform-o-to-shared-lib-inner 74$(TARGET_CXX) \ 75 $(TARGET_GLOBAL_LDFLAGS) \ 76 -nostdlib -Wl,-soname,$(notdir $@) \ 77 -shared -Bsymbolic \ 78 -fPIC -march=i686 \ 79 $(TARGET_GLOBAL_LD_DIRS) \ 80 $(TARGET_CRTBEGIN_SO_O) \ 81 $(PRIVATE_ALL_OBJECTS) \ 82 -Wl,--whole-archive \ 83 $(call normalize-host-libraries,$(PRIVATE_ALL_WHOLE_STATIC_LIBRARIES)) \ 84 -Wl,--no-whole-archive \ 85 $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 86 $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 87 -o $@ \ 88 $(PRIVATE_LDFLAGS) \ 89 $(TARGET_LIBGCC) \ 90 $(TARGET_CRTEND_SO_O) 91endef 92 93 94define transform-o-to-executable-inner 95$(TARGET_CXX) \ 96 $(TARGET_GLOBAL_LDFLAGS) \ 97 -nostdlib -Bdynamic \ 98 -Wl,-dynamic-linker,/system/bin/linker \ 99 -Wl,-z,nocopyreloc \ 100 -o $@ \ 101 $(TARGET_GLOBAL_LD_DIRS) \ 102 -Wl,-rpath-link=$(TARGET_OUT_INTERMEDIATE_LIBRARIES) \ 103 $(call normalize-target-libraries,$(PRIVATE_ALL_SHARED_LIBRARIES)) \ 104 $(TARGET_CRTBEGIN_DYNAMIC_O) \ 105 $(PRIVATE_ALL_OBJECTS) \ 106 $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 107 $(PRIVATE_LDFLAGS) \ 108 $(TARGET_LIBGCC) \ 109 $(TARGET_CRTEND_O) 110endef 111 112define transform-o-to-static-executable-inner 113$(TARGET_CXX) \ 114 $(TARGET_GLOBAL_LDFLAGS) \ 115 -nostdlib -Bstatic \ 116 -o $@ \ 117 $(TARGET_GLOBAL_LD_DIRS) \ 118 $(TARGET_CRTBEGIN_STATIC_O) \ 119 $(PRIVATE_LDFLAGS) \ 120 $(PRIVATE_ALL_OBJECTS) \ 121 -Wl,--start-group \ 122 $(call normalize-target-libraries,$(PRIVATE_ALL_STATIC_LIBRARIES)) \ 123 $(TARGET_LIBGCC) \ 124 -Wl,--end-group \ 125 $(TARGET_CRTEND_O) 126endef 127 128$(combo_target)GLOBAL_CFLAGS += -m32 129$(combo_target)GLOBAL_LDFLAGS += -m32 130