1e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#
2e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# Copyright (C) 2010 The Android Open Source Project
3e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#
4e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# Licensed under the Apache License, Version 2.0 (the "License");
5e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# you may not use this file except in compliance with the License.
6e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# You may obtain a copy of the License at
7e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#
8e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#      http://www.apache.org/licenses/LICENSE-2.0
9e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#
10e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# Unless required by applicable law or agreed to in writing, software
11e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# distributed under the License is distributed on an "AS IS" BASIS,
12e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# See the License for the specific language governing permissions and
14e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang# limitations under the License.
15e86245a09bb8b9e72f5dc68083444ec938865798Zonr Chang#
1694ca20429c0e0ecd2d82e9d1d1637a0207244ac9Ying WangLOCAL_PATH := $(call my-dir)
17a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wang
18a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wang# The prebuilt tools should be used when we are doing app-only build.
19a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wangifeq ($(TARGET_BUILD_APPS),)
20a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wang
21462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
224fda85844b116ecc9f156f1fb1dbc007cec85691Narayan Kamathlocal_cflags_for_slang := -Wno-sign-promo -Wall -Wno-unused-parameter -Wno-return-type -Werror
23881abe9f9491361f6980077f0457c7ddfbd42201Tim Murrayifeq ($(TARGET_BUILD_VARIANT),eng)
24881abe9f9491361f6980077f0457c7ddfbd42201Tim Murraylocal_cflags_for_slang += -O0
25881abe9f9491361f6980077f0457c7ddfbd42201Tim Murrayelse
26432439488464171534f16c1fe013927373e3c579Jean-Luc Brouilletifeq ($(TARGET_BUILD_VARIANT),userdebug)
27432439488464171534f16c1fe013927373e3c579Jean-Luc Brouilletelse
289be9360d8e02b52ed669afbd69f9becb575c3f0dAlex Sakhartchouklocal_cflags_for_slang += -D__DISABLE_ASSERTS
299be9360d8e02b52ed669afbd69f9becb575c3f0dAlex Sakhartchoukendif
30432439488464171534f16c1fe013927373e3c579Jean-Luc Brouilletendif
31ba7c6dc08e1ab8486ccaf842e8ae87dc5c99d8cfStephen Hineslocal_cflags_for_slang += -DTARGET_BUILD_VARIANT=$(TARGET_BUILD_VARIANT)
329be9360d8e02b52ed669afbd69f9becb575c3f0dAlex Sakhartchouk
33483f47c87b2f69a766b5a33845091f7c800846b0Stephen Hinesinclude $(LOCAL_PATH)/rs_version.mk
34483f47c87b2f69a766b5a33845091f7c800846b0Stephen Hineslocal_cflags_for_slang += $(RS_VERSION_DEFINE)
356b201eb3306b9609a991728a52ce948974bd4aedStephen Hines
36000c307d2115160200c4efa849d3e36c0267cd7aYing Wangstatic_libraries_needed_by_slang := \
379207a2e495c8363606861e4f034504ec5c153dabLogan Chien	libLLVMBitWriter_2_9 \
389b044ec938fd56355012851890c63974c8042c9fStephen Hines	libLLVMBitWriter_2_9_func \
39bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen Hines	libLLVMBitWriter_3_2
40835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liao
41000c307d2115160200c4efa849d3e36c0267cd7aYing Wang# Static library libslang for host
42000c307d2115160200c4efa849d3e36c0267cd7aYing Wang# ========================================================
43000c307d2115160200c4efa849d3e36c0267cd7aYing Wanginclude $(CLEAR_VARS)
44000c307d2115160200c4efa849d3e36c0267cd7aYing Wanginclude $(CLEAR_TBLGEN_VARS)
45000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
46000c307d2115160200c4efa849d3e36c0267cd7aYing WangLLVM_ROOT_PATH := external/llvm
47000c307d2115160200c4efa849d3e36c0267cd7aYing WangCLANG_ROOT_PATH := external/clang
48000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
49000c307d2115160200c4efa849d3e36c0267cd7aYing Wanginclude $(CLANG_ROOT_PATH)/clang.mk
50000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
51000c307d2115160200c4efa849d3e36c0267cd7aYing WangLOCAL_MODULE := libslang
52000c307d2115160200c4efa849d3e36c0267cd7aYing WangLOCAL_MODULE_TAGS := optional
53231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienifneq ($(HOST_OS),windows)
5419bb5f5a3fd5146956de28127b88089f3538a4cdAndrew HsiehLOCAL_CLANG := true
55231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienendif
56000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
579be9360d8e02b52ed669afbd69f9becb575c3f0dAlex SakhartchoukLOCAL_CFLAGS += $(local_cflags_for_slang)
58000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
59000c307d2115160200c4efa849d3e36c0267cd7aYing WangTBLGEN_TABLES :=    \
60000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	AttrList.inc	\
61000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	Attrs.inc	\
620da7f6c8201b27938d3b9f048d71fd784cd1df9aStephen Hines	CommentCommandList.inc \
6343730fe3c839af391efe6bdf56b0479860121924Shih-wei Liao	CommentNodes.inc \
64000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	DeclNodes.inc	\
65000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	DiagnosticCommonKinds.inc	\
66000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	DiagnosticFrontendKinds.inc	\
67000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	DiagnosticSemaKinds.inc	\
68000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	StmtNodes.inc
69000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
70000c307d2115160200c4efa849d3e36c0267cd7aYing WangLOCAL_SRC_FILES :=	\
71000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	slang.cpp	\
72000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	slang_utils.cpp	\
73000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	slang_backend.cpp	\
74000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	slang_pragma_recorder.cpp	\
75000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	slang_diagnostic_buffer.cpp
76000c307d2115160200c4efa849d3e36c0267cd7aYing Wang
775e6d0d5a911fff0b7b4bce216a213a4cf8a811f5Stephen HinesLOCAL_C_INCLUDES += frameworks/compile/libbcc/include
785e6d0d5a911fff0b7b4bce216a213a4cf8a811f5Stephen Hines
79231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan ChienLOCAL_LDLIBS := -ldl -lpthread
80231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienifneq ($(HOST_OS),windows)
81231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan ChienLOCAL_LDLIBS += -lc++
82231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienendif
83835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liao
8408df36e5c0a990306d958c9f6d59a5de23b748f6Zonr Changinclude $(CLANG_HOST_BUILD_MK)
8508df36e5c0a990306d958c9f6d59a5de23b748f6Zonr Changinclude $(CLANG_TBLGEN_RULES_MK)
8608df36e5c0a990306d958c9f6d59a5de23b748f6Zonr Changinclude $(LLVM_GEN_INTRINSICS_MK)
87e2201c0362dd68c316cec670e1607b1d3d77c5c5Ying Wanginclude $(BUILD_HOST_STATIC_LIBRARY)
8808df36e5c0a990306d958c9f6d59a5de23b748f6Zonr Chang
89c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser# ========================================================
90c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosserinclude $(CLEAR_VARS)
91c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
92c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_MODULE := llvm-rs-as
93c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_MODULE_TAGS := optional
94c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
95c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_MODULE_CLASS := EXECUTABLES
96c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
97c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_SRC_FILES :=	\
98c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser	llvm-rs-as.cpp
99c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
100c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_CFLAGS += $(local_cflags_for_slang)
101c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_STATIC_LIBRARIES :=	\
102c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser	libslang \
103c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser	$(static_libraries_needed_by_slang)
104c908b90b45448af6c39ce407b607f46b0e0461d6Tobias GrosserLOCAL_SHARED_LIBRARIES := \
105c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser	libLLVM
106c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
107c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosserinclude $(CLANG_HOST_BUILD_MK)
108c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosserinclude $(BUILD_HOST_EXECUTABLE)
109c908b90b45448af6c39ce407b607f46b0e0461d6Tobias Grosser
110ffa58bb392b79944a1cc23b0d41cbef9a34f8c2eShih-wei Liao# Executable llvm-rs-cc for host
111835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liao# ========================================================
112835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liaoinclude $(CLEAR_VARS)
113835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liaoinclude $(CLEAR_TBLGEN_VARS)
114835a7b773631261b9ea2fb448a4c8a7a8cacfaabShih-wei Liao
115b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei LiaoLOCAL_IS_HOST_MODULE := true
116b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei LiaoLOCAL_MODULE := llvm-rs-cc
117231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienifneq ($(HOST_OS),windows)
11819bb5f5a3fd5146956de28127b88089f3538a4cdAndrew HsiehLOCAL_CLANG := true
119231f578e0b0c2467e1b71e3ba5cd035caf1a9d88Logan Chienendif
120b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei LiaoLOCAL_MODULE_TAGS := optional
121462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
122bdd788877b3f18980836a3ed0d46627169483653Shih-wei LiaoLOCAL_MODULE_CLASS := EXECUTABLES
123bdd788877b3f18980836a3ed0d46627169483653Shih-wei Liao
1249be9360d8e02b52ed669afbd69f9becb575c3f0dAlex SakhartchoukLOCAL_CFLAGS += $(local_cflags_for_slang)
125cecd11d2af5d45d8ba322bed61fb48a99c305528Shih-wei Liao
126462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei LiaoTBLGEN_TABLES :=    \
127f52a620440fa62257dfdcf2583f0f9df5b855c76Shih-wei Liao	AttrList.inc    \
128f52a620440fa62257dfdcf2583f0f9df5b855c76Shih-wei Liao	Attrs.inc    \
1290da7f6c8201b27938d3b9f048d71fd784cd1df9aStephen Hines	CommentCommandList.inc \
13043730fe3c839af391efe6bdf56b0479860121924Shih-wei Liao	CommentNodes.inc \
131f52a620440fa62257dfdcf2583f0f9df5b855c76Shih-wei Liao	DeclNodes.inc    \
132f52a620440fa62257dfdcf2583f0f9df5b855c76Shih-wei Liao	DiagnosticCommonKinds.inc   \
133b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao	DiagnosticDriverKinds.inc	\
134cf6af6abc1de499920571308b14a27e19cf57097Zonr Chang	DiagnosticFrontendKinds.inc	\
135b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao	DiagnosticSemaKinds.inc	\
13692b344a51c6c4934e96882bd401e4b13d6d03db8Zonr Chang	StmtNodes.inc	\
137b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao	RSCCOptions.inc
138462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
139462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei LiaoLOCAL_SRC_FILES :=	\
140b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao	llvm-rs-cc.cpp	\
1418b5c5c6566078d49c4dcd8d8c7a6364c33c09037Stephen Hines	rs_cc_options.cpp \
1423a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang	slang_rs.cpp	\
143292e00a0259ac28cac1055cb6077cf6fc7c6743cStephen Hines	slang_rs_ast_replace.cpp	\
14411274a7324b478ec13e1d10a1b81350b34a65ab1Stephen Hines	slang_rs_check_ast.cpp	\
145462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_context.cpp	\
146462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_pragma_handler.cpp	\
147462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_backend.cpp	\
148641558f02fe6ce0ee3ae5076eb366c25e2ad5903Zonr Chang	slang_rs_exportable.cpp	\
149462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_export_type.cpp	\
150462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_export_element.cpp	\
151462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_export_var.cpp	\
152462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao	slang_rs_export_func.cpp	\
153593a894650e81be54173106ec266f0311cebebd3Stephen Hines	slang_rs_export_foreach.cpp \
1544b32ffdfc1ac766f8932e7effbcdf7484e804a8eStephen Hines	slang_rs_object_ref_count.cpp	\
1553f8b44dba57685b437cecc208f2a20a4ed93ed36Ying Wang	slang_rs_reflection.cpp \
1561b6a0883cd6984e11e59b0c847fb334df1f41afcJason Sams	slang_rs_reflection_cpp.cpp \
157552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines	slang_rs_reflect_utils.cpp \
158552d872e5cdc883d9f8e76d8c67d3a82e3ece488Stephen Hines	strip_unknown_attributes.cpp
159462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
160462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei LiaoLOCAL_STATIC_LIBRARIES :=	\
161bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen Hines	libslang \
162000c307d2115160200c4efa849d3e36c0267cd7aYing Wang	$(static_libraries_needed_by_slang)
163e2201c0362dd68c316cec670e1607b1d3d77c5c5Ying Wang
164bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen HinesLOCAL_SHARED_LIBRARIES := \
165bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen Hines	libclang \
166bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen Hines	libLLVM
167bfe3e9729efcd5db389cc0e46fff662fd0c1f8b5Stephen Hines
16811e2b93b206dbb401077d1fa39b1bcdc6de4d986Raphaelifeq ($(HOST_OS),windows)
16911e2b93b206dbb401077d1fa39b1bcdc6de4d986Raphael  LOCAL_LDLIBS := -limagehlp -lpsapi
17011e2b93b206dbb401077d1fa39b1bcdc6de4d986Raphaelelse
17111e2b93b206dbb401077d1fa39b1bcdc6de4d986Raphael  LOCAL_LDLIBS := -ldl -lpthread
17211e2b93b206dbb401077d1fa39b1bcdc6de4d986Raphaelendif
173462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
174b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao# For build RSCCOptions.inc from RSCCOptions.td
175d1e54f507e6d27924f8aa4024648309819df7435Ying Wangintermediates := $(call local-generated-sources-dir)
176b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei LiaoLOCAL_GENERATED_SOURCES += $(intermediates)/RSCCOptions.inc
1770e3f8c70bb16eaae98d68828ffffca36788570caTim Murray$(intermediates)/RSCCOptions.inc: $(LOCAL_PATH)/RSCCOptions.td $(LLVM_ROOT_PATH)/include/llvm/Option/OptParser.td $(LLVM_TBLGEN)
178b7d1269f983f28d9fe625a96439fa88b39dc96f6Stephen Hines	@echo "Building Renderscript compiler (llvm-rs-cc) Option tables with tblgen"
179a1f95ee8df425089100148a42954cf61dc285015Stephen Hines	$(call transform-host-td-to-out,opt-parser-defs)
180b81c6a4cbd9c08e0b20ea4fbc615b416ac1bc9ecShih-wei Liao
181462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoinclude $(CLANG_HOST_BUILD_MK)
182462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoinclude $(CLANG_TBLGEN_RULES_MK)
183462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoinclude $(BUILD_HOST_EXECUTABLE)
184a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wang
185a20a2fdbf5baedc7fac36707e1e052e1697f52a1Ying Wangendif  # TARGET_BUILD_APPS
1864cc499d6e5ec602309501873449c938af61170b2Stephen Hines
1874cc499d6e5ec602309501873449c938af61170b2Stephen Hines#=====================================================================
1884cc499d6e5ec602309501873449c938af61170b2Stephen Hines# Include Subdirectories
1894cc499d6e5ec602309501873449c938af61170b2Stephen Hines#=====================================================================
1904cc499d6e5ec602309501873449c938af61170b2Stephen Hinesinclude $(call all-makefiles-under,$(LOCAL_PATH))
191