build_bc_lib_internal.mk revision 448c4db4867adeedf5860de7f89a401233393539
19fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# 29fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# Copyright (C) 2012 The Android Open Source Project 39fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# 49fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# Licensed under the Apache License, Version 2.0 (the "License"); 59fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# you may not use this file except in compliance with the License. 69fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# You may obtain a copy of the License at 79fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# 89fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# http://www.apache.org/licenses/LICENSE-2.0 99fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# 109fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# Unless required by applicable law or agreed to in writing, software 119fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# distributed under the License is distributed on an "AS IS" BASIS, 129fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# See the License for the specific language governing permissions and 149fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# limitations under the License. 159fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# 169fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 179fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyifndef BCC_RS_TRIPLE 189fc4b356a4552336f661bf4dfaaa19a251194cdbRomain GuyBCC_RS_TRIPLE := $($(LOCAL_2ND_ARCH_VAR_PREFIX)RS_TRIPLE) 199fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyendif 209fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 219fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# Set these values always by default 229fc4b356a4552336f661bf4dfaaa19a251194cdbRomain GuyLOCAL_MODULE_TAGS := optional 239fc4b356a4552336f661bf4dfaaa19a251194cdbRomain GuyLOCAL_MODULE_CLASS := SHARED_LIBRARIES 249fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 259fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyinclude $(BUILD_SYSTEM)/base_rules.mk 269fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 279fc4b356a4552336f661bf4dfaaa19a251194cdbRomain GuyBCC_STRIP_ATTR := $(BUILD_OUT_EXECUTABLES)/bcc_strip_attr$(BUILD_EXECUTABLE_SUFFIX) 289fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 299fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guybc_clang_cc1_cflags := 309fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyifeq ($(BCC_RS_TRIPLE),armv7-none-linux-gnueabi) 319fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# We need to pass the +long64 flag to the underlying version of Clang, since 329fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# we are generating a library for use with Renderscript (64-bit long type, 339fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy# not 32-bit). 349fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guybc_clang_cc1_cflags += -target-feature +long64 359fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyendif 369fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guybc_translated_clang_cc1_cflags := $(addprefix -Xclang , $(bc_clang_cc1_cflags)) 379fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 389fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guybc_cflags := -MD \ 399fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -DRS_VERSION=$(RS_VERSION) \ 409fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -std=c99 \ 419fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -c \ 429fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -O3 \ 439fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -fno-builtin \ 449fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -emit-llvm \ 459fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -target $(BCC_RS_TRIPLE) \ 469fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy -fsigned-char \ 479fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy $(LOCAL_CFLAGS) \ 489fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy $(bc_translated_clang_cc1_cflags) 499fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 509fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyifeq ($(rs_debug_runtime),1) 519fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy bc_cflags += -DRS_DEBUG_RUNTIME 529fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyendif 539fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyrs_debug_runtime:= 549fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 559fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyc_sources := $(filter %.c,$(LOCAL_SRC_FILES)) 569fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyll_sources := $(filter %.ll,$(LOCAL_SRC_FILES)) 579fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 589fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyc_bc_files := $(patsubst %.c,%.bc, \ 599fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy $(addprefix $(intermediates)/, $(c_sources))) 609fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 619fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guyll_bc_files := $(patsubst %.ll,%.bc, \ 629fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy $(addprefix $(intermediates)/, $(ll_sources))) 639fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy 649fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy$(c_bc_files): PRIVATE_INCLUDES := \ 659fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy frameworks/rs/scriptc \ 669fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy external/clang/lib/Headers 679fc4b356a4552336f661bf4dfaaa19a251194cdbRomain Guy$(c_bc_files): PRIVATE_CFLAGS := $(bc_cflags) 68 69$(c_bc_files): $(intermediates)/%.bc: $(LOCAL_PATH)/%.c $(CLANG) 70 @echo "bc: $(PRIVATE_MODULE) <= $<" 71 @mkdir -p $(dir $@) 72 $(hide) $(CLANG) $(addprefix -I, $(PRIVATE_INCLUDES)) $(PRIVATE_CFLAGS) $< -o $@ 73 74$(ll_bc_files): $(intermediates)/%.bc: $(LOCAL_PATH)/%.ll $(LLVM_AS) 75 @mkdir -p $(dir $@) 76 $(hide) $(LLVM_AS) $< -o $@ 77 78-include $(c_bc_files:%.bc=%.d) 79-include $(ll_bc_files:%.bc=%.d) 80 81$(LOCAL_BUILT_MODULE): PRIVATE_BC_FILES := $(c_bc_files) $(ll_bc_files) 82$(LOCAL_BUILT_MODULE): $(c_bc_files) $(ll_bc_files) 83$(LOCAL_BUILT_MODULE): $(LLVM_LINK) $(clcore_LLVM_LD) 84$(LOCAL_BUILT_MODULE): $(LLVM_AS) $(BCC_STRIP_ATTR) 85 @echo "bc lib: $(PRIVATE_MODULE) ($@)" 86 @mkdir -p $(dir $@) 87 $(hide) $(LLVM_LINK) $(PRIVATE_BC_FILES) -o $@.unstripped 88 $(hide) $(BCC_STRIP_ATTR) -o $@ $@.unstripped 89 90BCC_RS_TRIPLE := 91