1b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_PATH:= $(call my-dir)
2b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
3b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_MODULE_TAGS := optional
4b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
5b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# Set up common build variables
6b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# =====================================================
7b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
8b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_C_INCLUDES := $(LOCAL_PATH)/include
9b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
10b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_SRC_FILES := \
112bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar  Main.cpp
12b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
13b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
14b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_WHOLE_STATIC_LIBRARIES := \
15b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldADT \
16b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldCore \
17b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldFragment \
18b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldLD \
19b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldLDVariant \
20b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldMC \
21b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldObject \
22b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldScript \
23b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldSupport \
24b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  libmcldTarget
25b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
26b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_SHARED_LIBRARIES := libLLVM
27b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
28b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# Collect target specific code generation libraries
29b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_ARM_LIBS := libmcldARMTarget libmcldARMInfo
30b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_AARCH64_LIBS := libmcldAArch64Target libmcldAArch64Info
31b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_MIPS_LIBS := libmcldMipsTarget libmcldMipsInfo
32b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_X86_LIBS := libmcldX86Target libmcldX86Info
33b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
34b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarMCLD_MODULE:= ld.mc
35b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
362bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar# Executable for the device
37b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# =====================================================
38b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(CLEAR_VARS)
392bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainarinclude $(CLEAR_TBLGEN_VARS)
40b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
41b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_C_INCLUDES := $(MCLD_C_INCLUDES)
42b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_SRC_FILES := $(MCLD_SRC_FILES)
43b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_WHOLE_STATIC_LIBRARIES := $(MCLD_WHOLE_STATIC_LIBRARIES)
44b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
45b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# Add target specific code generation libraries
46b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarifeq ($(TARGET_ARCH), arm)
47b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  LOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_ARM_LIBS)
48b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarendif
49b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
50b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# Include ARM libs to enable 32-bit linking on AARCH64 targets
51b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarifeq ($(TARGET_ARCH), arm64)
52b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  LOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_AARCH64_LIBS) \
53b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar                                  $(MCLD_ARM_LIBS)
54b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarendif
55b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
5676f76d53b6ead31e1ca40bad492d500e45714357Duane Sandifneq (, $(findstring mips,$(TARGET_ARCH)))
57b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  LOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_MIPS_LIBS)
58b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarendif
59b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
60b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# Add x86 libraries for both x86 and x86_64 targets
61b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarifneq (, $(findstring x86,$(TARGET_ARCH)))
62b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar  LOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_X86_LIBS)
638c10afdc806cbb9d4560e90b100f0dcefdd46a21Miao Wangifeq ($(BUILD_ARM_FOR_X86),true)
648c10afdc806cbb9d4560e90b100f0dcefdd46a21Miao Wang  LOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_ARM_LIBS) \
658c10afdc806cbb9d4560e90b100f0dcefdd46a21Miao Wang                                  $(MCLD_AARCH64_LIBS)
668c10afdc806cbb9d4560e90b100f0dcefdd46a21Miao Wangendif
67b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarendif
68b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
69b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
70b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# zlib's libnames are different for the host and target.
71b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# For the target, it is the standard libz
72b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_SHARED_LIBRARIES := $(MCLD_SHARED_LIBRARIES) libz
73b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
74b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_MODULE := $(MCLD_MODULE)
752bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga NainarLOCAL_MODULE_CLASS := EXECUTABLES
762bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar
772bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar# Build Options.inc from Options.td for the device
782bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainarintermediates := $(call local-generated-sources-dir)
792bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga NainarLOCAL_GENERATED_SOURCES += $(intermediates)/Options.inc
802bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar$(intermediates)/Options.inc: $(LOCAL_PATH)/Options.td $(LLVM_ROOT_PATH)/include/llvm/Option/OptParser.td $(LLVM_TBLGEN)
812bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar	$(call transform-device-td-to-out,opt-parser-defs)
822bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar
83b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(MCLD_DEVICE_BUILD_MK)
84b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(BUILD_EXECUTABLE)
85b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
862bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar# Executable for the host
87b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# =====================================================
88b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(CLEAR_VARS)
892bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainarinclude $(CLEAR_TBLGEN_VARS)
90b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
91b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_C_INCLUDES := $(MCLD_C_INCLUDES)
92b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_SRC_FILES := $(MCLD_SRC_FILES)
93b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
94b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_WHOLE_STATIC_LIBRARIES := $(MCLD_WHOLE_STATIC_LIBRARIES)
95b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_WHOLE_STATIC_LIBRARIES += $(MCLD_ARM_LIBS) \
96b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar                                $(MCLD_AARCH64_LIBS) \
97b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar                                $(MCLD_MIPS_LIBS) \
98b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar                                $(MCLD_X86_LIBS)
99b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
100b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# zlib's libnames are different for the host and target.
101b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar# For the host, it is libz-host
102b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_SHARED_LIBRARIES := $(MCLD_SHARED_LIBRARIES) libz-host
103b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainar
104b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga NainarLOCAL_MODULE := $(MCLD_MODULE)
1052bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga NainarLOCAL_MODULE_CLASS := EXECUTABLES
1062bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga NainarLOCAL_IS_HOST_MODULE := true
1072bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar
1082bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar# Build Options.inc from Options.td for the host
1092bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainarintermediates := $(call local-generated-sources-dir)
1102bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga NainarLOCAL_GENERATED_SOURCES += $(intermediates)/Options.inc
1112bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar$(intermediates)/Options.inc: $(LOCAL_PATH)/Options.td $(LLVM_ROOT_PATH)/include/llvm/Option/OptParser.td $(LLVM_TBLGEN)
1122bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar	$(call transform-host-td-to-out,opt-parser-defs)
1132bf3f881f79c4d883f379e63725e788c310739a3Pirama Arumuga Nainar
114b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(MCLD_HOST_BUILD_MK)
115b4be41c9170580c07b79afb01617f52e0d8bcb70Pirama Arumuga Nainarinclude $(BUILD_HOST_EXECUTABLE)
116