build_bc_lib_internal.mk revision e81f26204ca98c9c8f0ea3bf67d991c6b9750284
118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# 218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# Copyright (C) 2012 The Android Open Source Project 318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# 418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# Licensed under the Apache License, Version 2.0 (the "License"); 518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# you may not use this file except in compliance with the License. 618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# You may obtain a copy of the License at 718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# 818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# http://www.apache.org/licenses/LICENSE-2.0 918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# 1018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# Unless required by applicable law or agreed to in writing, software 1118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# distributed under the License is distributed on an "AS IS" BASIS, 1218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# See the License for the specific language governing permissions and 1418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# limitations under the License. 1518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# 1618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 1718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornifndef BCC_RS_TRIPLE 1818b64f446cd7b9043909b0cd42d1ab364392da24Dianne HackbornBCC_RS_TRIPLE := $($(LOCAL_2ND_ARCH_VAR_PREFIX)RS_TRIPLE) 1918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornendif 2018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 2118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# Set these values always by default 2218b64f446cd7b9043909b0cd42d1ab364392da24Dianne HackbornLOCAL_MODULE_TAGS := optional 2318b64f446cd7b9043909b0cd42d1ab364392da24Dianne HackbornLOCAL_MODULE_CLASS := SHARED_LIBRARIES 2418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 2518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborninclude $(BUILD_SYSTEM)/base_rules.mk 2618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 2718b64f446cd7b9043909b0cd42d1ab364392da24Dianne HackbornBCC_STRIP_ATTR := $(BUILD_OUT_EXECUTABLES)/bcc_strip_attr$(BUILD_EXECUTABLE_SUFFIX) 2818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 2918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_clang := $(RS_CLANG) 300dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackbornifdef RS_DRIVER_CLANG_EXE 310dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackbornbc_clang := $(RS_DRIVER_CLANG_EXE) 3239b467482d1bf256a111c757e9b7621c6f523271Jason Monkendif 3318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 3418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_clang_cc1_cflags := -fnative-half-type -fallow-half-arguments-and-returns 3518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornifeq ($(BCC_RS_TRIPLE),armv7-none-linux-gnueabi) 3618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# We need to pass the +long64 flag to the underlying version of Clang, since 3718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# we are generating a library for use with Renderscript (64-bit long type, 3818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# not 32-bit). 3918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_clang_cc1_cflags += -target-feature +long64 4018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornendif 4118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_translated_clang_cc1_cflags := $(addprefix -Xclang , $(bc_clang_cc1_cflags)) 4218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 4318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn# Bug: 25435756 - must be switched back to the proper API level 440dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackbornbc_RS_VERSION := -DRS_VERSION=4294967295 450dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackborn 460dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackborn# Disable deprecated warnings, because we have to support even legacy APIs. 4718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_warning_flags := -Wno-deprecated -Werror 4818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 4918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_cflags := -MD \ 508b0afc7fb53b90e522b86ba04bb17c0cba2364abDianne Hackborn $(bc_RS_VERSION) \ 518b0afc7fb53b90e522b86ba04bb17c0cba2364abDianne Hackborn -std=c99 \ 5218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -c \ 5318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -O3 \ 5418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -fno-builtin \ 5518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -emit-llvm \ 5618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -target $(BCC_RS_TRIPLE) \ 5718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn -fsigned-char \ 5818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $($(LOCAL_2ND_ARCH_VAR_PREFIX)RS_TRIPLE_CFLAGS) \ 598b0afc7fb53b90e522b86ba04bb17c0cba2364abDianne Hackborn $(bc_warning_flags) \ 608b0afc7fb53b90e522b86ba04bb17c0cba2364abDianne Hackborn $(LOCAL_CFLAGS) \ 6118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(bc_translated_clang_cc1_cflags) \ 6218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(LOCAL_CFLAGS_$(my_32_64_bit_suffix)) 6318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 6418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornifeq ($(rs_debug_runtime),1) 6527daaab633a80be50863e6539e947db674090662Dianne Hackborn bc_cflags += -DRS_DEBUG_RUNTIME 6618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornendif 6727daaab633a80be50863e6539e947db674090662Dianne Hackborn 6818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornifeq ($(rs_g_runtime),1) 6927daaab633a80be50863e6539e947db674090662Dianne Hackborn bc_cflags += -DRS_G_RUNTIME 7018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornendif 7118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 7218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_src_files := $(LOCAL_SRC_FILES) 7318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornbc_src_files += $(LOCAL_SRC_FILES_$(TARGET_$(LOCAL_2ND_ARCH_VAR_PREFIX)ARCH)) $(LOCAL_SRC_FILES_$(my_32_64_bit_suffix)) 7427daaab633a80be50863e6539e947db674090662Dianne Hackborn 7518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornc_sources := $(filter %.c,$(bc_src_files)) 7618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornll_sources := $(filter %.ll,$(bc_src_files)) 7718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 7818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornc_bc_files := $(patsubst %.c,%.bc, \ 7918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(addprefix $(intermediates)/, $(c_sources))) 8018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 8118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackbornll_bc_files := $(patsubst %.ll,%.bc, \ 8218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(addprefix $(intermediates)/, $(ll_sources))) 8318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 8418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn$(c_bc_files): PRIVATE_INCLUDES := \ 8527daaab633a80be50863e6539e947db674090662Dianne Hackborn frameworks/rs/scriptc \ 8618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn external/clang/lib/Headers 8718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn$(c_bc_files): PRIVATE_CFLAGS := $(bc_cflags) 8818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 8918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn$(c_bc_files): $(intermediates)/%.bc: $(LOCAL_PATH)/%.c $(bc_clang) 9018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn @echo "bc: $(PRIVATE_MODULE) <= $<" 9118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn @mkdir -p $(dir $@) 9218b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(hide) $(bc_clang) $(addprefix -I, $(PRIVATE_INCLUDES)) $(PRIVATE_CFLAGS) $< -o $@ 9318b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(call transform-d-to-p-args,$(@:%.bc=%.d),$(@:%.bc=%.P)) 9418b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 9518b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn$(ll_bc_files): $(intermediates)/%.bc: $(LOCAL_PATH)/%.ll $(RS_LLVM_AS) 9618b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn @mkdir -p $(dir $@) 9718b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn $(hide) $(RS_LLVM_AS) $< -o $@ 9818b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 9918b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn-include $(c_bc_files:%.bc=%.P) 10018b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn 10118b64f446cd7b9043909b0cd42d1ab364392da24Dianne Hackborn$(LOCAL_BUILT_MODULE): PRIVATE_BC_FILES := $(c_bc_files) $(ll_bc_files) 1020dd9902c89e7b705fd73158aadf1bf27843ad201Dianne Hackborn$(LOCAL_BUILT_MODULE): $(c_bc_files) $(ll_bc_files) 10327daaab633a80be50863e6539e947db674090662Dianne Hackborn$(LOCAL_BUILT_MODULE): $(RS_LLVM_LINK) 10415ab7758df616a27c28276ab97ddb2e2de6089f7Dianne Hackborn$(LOCAL_BUILT_MODULE): $(RS_LLVM_AS) $(BCC_STRIP_ATTR) 1054a06e4cc4370f5897f07f6314f25b37db759cf18David Christie @echo "bc lib: $(PRIVATE_MODULE) ($@)" 106bdf28e40251772a35f776af9fd1a4b903f0f9771Michael Wright @mkdir -p $(dir $@) 10727daaab633a80be50863e6539e947db674090662Dianne Hackborn $(hide) $(RS_LLVM_LINK) $(PRIVATE_BC_FILES) -o $@.unstripped 2> >(grep -o -v "modules of different" >&2) 10827daaab633a80be50863e6539e947db674090662Dianne Hackborn $(hide) $(BCC_STRIP_ATTR) -o $@ $@.unstripped 10927daaab633a80be50863e6539e947db674090662Dianne Hackborn 11015ab7758df616a27c28276ab97ddb2e2de6089f7Dianne HackbornBCC_RS_TRIPLE := 11127daaab633a80be50863e6539e947db674090662Dianne Hackborn