dpkg-buildflags cleanup

use make variables populated by /usr/share/dpkg/buildflags.mk and
remove _EXTRA suffix from STAGE_1_ and STAGE_2_ flag vars
This commit is contained in:
Erik Maciejewski 2021-10-24 19:55:40 -07:00
parent 5b59bd3630
commit 5088c76222

88
debian/rules vendored
View File

@ -39,43 +39,42 @@ include /usr/share/dpkg/architecture.mk
CONFIGURE_EXTRA =
# set up global build flags (dpkg-buildflags)
# dpkg-buildflags support
# disable lto
export DEB_BUILD_MAINT_OPTIONS=optimize=-lto
export DEB_BUILD_MAINT_OPTIONS = optimize=-lto
# these are handled on a per stage / build basis
export DEB_CFLAGS_MAINT_STRIP=-g -O2
export DEB_CXXFLAGS_MAINT_STRIP=-g -O2
# additional global build flags
export DEB_CFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument
export DEB_CXXFLAGS_MAINT_APPEND=-Wno-unused-command-line-argument
export DEB_LDFLAGS_MAINT_APPEND=-Wl,--build-id
export DEB_CFLAGS_MAINT_STRIP = -g -O2
export DEB_CXXFLAGS_MAINT_STRIP = -g -O2
# all stages all builds
CFLAGS_EXTRA = $(shell dpkg-buildflags --get CFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
CXXFLAGS_EXTRA = $(shell dpkg-buildflags --get CXXFLAGS) $(shell dpkg-buildflags --get CPPFLAGS)
LDFLAGS_EXTRA = $(shell dpkg-buildflags --get LDFLAGS)
include /usr/share/dpkg/buildflags.mk
# We use a stage2 build. It means that a first clang is built using gcc,
# a second clang is built with the first
# And the various compoments are built using the second clang.
# See https://llvm.org/docs/AdvancedBuilds.html
# stage 1 toolchain build only
STAGE_1_CFLAGS_EXTRA = $(CFLAGS_EXTRA)
STAGE_1_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA)
STAGE_1_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA)
# stage 2 toolchain and stand-alone builds
STAGE_2_CFLAGS_EXTRA = $(CFLAGS_EXTRA)
STAGE_2_CXXFLAGS_EXTRA = $(CXXFLAGS_EXTRA)
STAGE_2_LDFLAGS_EXTRA = $(LDFLAGS_EXTRA)
# collect additional flags for all stages all builds
CFLAGS_EXTRA = -Wno-unused-command-line-argument
CXXFLAGS_EXTRA = -Wno-unused-command-line-argument
LDFLAGS_EXTRA = -Wl,--build-id
# toolchain build cmake options
# collect all flags for stage 1 toolchain build only
STAGE_1_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS)
STAGE_1_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS)
STAGE_1_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA)
# collect all flags for stage 2 toolchain and stand-alone builds
STAGE_2_CFLAGS = $(CFLAGS) $(CFLAGS_EXTRA) $(CPPFLAGS)
STAGE_2_CXXFLAGS = $(CXXFLAGS) $(CXXFLAGS_EXTRA) $(CPPFLAGS)
STAGE_2_LDFLAGS = $(LDFLAGS) $(LDFLAGS_EXTRA)
# collect additional cmake options for toolchain build configuration
STAGE_1_CMAKE_EXTRA =
STAGE_2_CMAKE_EXTRA = -DPYTHON_EXECUTABLE=/usr/bin/python3
STAGE_ALL_CMAKE_EXTRA =
# build-only var combining all first stage cmake options
# toolchain config-only var combining all stage 1 cmake options
CMAKE_EXTRA = $(STAGE_1_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA)
# build-only var prepending BOOTSTRAP_ prefix to all stage 2 cmake vars
# toolchain config-only var prepending BOOTSTRAP_ to all stage 2 cmake options
BOOTSTRAP_CMAKE_EXTRA = $(foreach extra,$(STAGE_2_CMAKE_EXTRA) $(STAGE_ALL_CMAKE_EXTRA), $(subst -D,-DBOOTSTRAP_,$(extra)))
BASE_PATH := $(CURDIR)
@ -470,20 +469,17 @@ override_dh_auto_configure: preconfigure
echo "Running tests: $(RUN_TEST)"
echo "Using cmake: $(CMAKE_BIN)"; \
CFLAGS="$(CFLAGS_EXTRA)" \
CXXFLAGS="$(CXXFLAGS_EXTRA)" \
LDFLAGS="$(LDFLAGS_EXTRA)" \
LD_LIBRARY_PATH=$$LD_LIBRARY_PATH \
$(PRE_PROCESS_CONF) $(CMAKE_BIN) -S llvm/ -B $(TARGET_BUILD) \
-G $(GENERATOR) \
-DCMAKE_INSTALL_PREFIX=/usr/lib/llvm-$(LLVM_VERSION) \
-DCMAKE_SUPPRESS_REGENERATION=ON \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS_EXTRA)" \
-DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS_EXTRA)" \
-DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \
-DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \
-DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS_EXTRA)" \
-DCMAKE_C_FLAGS="$(STAGE_1_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$(STAGE_1_CXXFLAGS)" \
-DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \
-DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \
-DCMAKE_EXE_LINKER_FLAGS="$(STAGE_1_LDFLAGS)" \
-DPACKAGE_VENDOR=$(VENDOR) \
-DENABLE_LINKER_BUILD_ID=ON \
-DLLVM_TARGETS_TO_BUILD=Native \
@ -523,18 +519,18 @@ override_dh_auto_configure: preconfigure
-DLIBOMP_ENABLE_RTTI=OFF \
-DLIBOMP_OMPT_SUPPORT=OFF \
$(CMAKE_EXTRA) \
-DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DBUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DRUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_1_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_1_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_1_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=Release;-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DCLANG_ENABLE_BOOTSTRAP=ON \
-DCLANG_BOOTSTRAP_TARGETS="$(ENABLED_STAGE2_CMAKE_BUILD_TARGETS)" \
-DBOOTSTRAP_CMAKE_BUILD_TYPE=RelWithDebInfo \
-DBOOTSTRAP_CMAKE_C_FLAGS_RELWITHDEBINFO="$(opt_flags)" \
-DBOOTSTRAP_CMAKE_CXX_FLAGS_RELWITHDEBINFO="$(opt_flags)" \
-DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS_EXTRA)" \
-DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS_EXTRA)" \
-DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \
-DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \
-DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA)" \
-DBOOTSTRAP_CMAKE_C_FLAGS="$(STAGE_2_CFLAGS)" \
-DBOOTSTRAP_CMAKE_CXX_FLAGS="$(STAGE_2_CXXFLAGS)" \
-DBOOTSTRAP_CMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \
-DBOOTSTRAP_CMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \
-DBOOTSTRAP_CMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS)" \
-DBOOTSTRAP_LLVM_ENABLE_FFI=ON \
-DBOOTSTRAP_LLVM_ENABLE_DUMP=ON \
-DBOOTSTRAP_LLVM_ENABLE_LIBPFM=ON \
@ -550,8 +546,8 @@ override_dh_auto_configure: preconfigure
-DBOOTSTRAP_LIBCLANG_LIBRARY_VERSION=$(SONAME_EXT) \
-DBOOTSTRAP_LIBCXX_INSTALL_EXPERIMENTAL_LIBRARY=ON \
$(BOOTSTRAP_CMAKE_EXTRA) \
-DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS_EXTRA);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS_EXTRA);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DBOOTSTRAP_BUILTINS_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DBOOTSTRAP_RUNTIMES_CMAKE_ARGS="-DCMAKE_C_FLAGS=$(STAGE_2_CFLAGS);-DCMAKE_CXX_FLAGS=$(STAGE_2_CXXFLAGS);-DCMAKE_EXE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SHARED_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_MODULE_LINKER_FLAGS=$(STAGE_2_LDFLAGS) -L$(STAGE_1_LIB_DIR);-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_BUILD_TYPE=RelWithDebInfo;-DCMAKE_C_FLAGS_RELWITHDEBINFO=$(opt_flags);-DCMAKE_CXX_FLAGS_RELWITHDEBINFO=$(opt_flags);-DLLVM_ENABLE_PER_TARGET_RUNTIME_DIR=OFF" \
-DCLANG_BOOTSTRAP_PASSTHROUGH="CMAKE_INSTALL_PREFIX;CMAKE_SUPPRESS_REGENERATION;ENABLE_LINKER_BUILD_ID;LLVM_ENABLE_PIC;LLVM_ENABLE_RTTI;LLVM_INCLUDE_GO_TESTS;CLANG_DEFAULT_LINKER;CLANG_DEFAULT_CXX_STDLIB;CLANG_DEFAULT_RTLIB;COMPILER_RT_USE_LIBCXX;COMPILER_RT_USE_BUILTINS_LIBRARY;COMPILER_RT_INCLUDE_TESTS;LIBUNWIND_ENABLE_SHARED;LIBUNWIND_USE_COMPILER_RT;LIBCXXABI_ENABLE_SHARED;LIBCXXABI_ENABLE_EXCEPTIONS;LIBCXXABI_USE_COMPILER_RT;LIBCXX_USE_COMPILER_RT;LIBCXX_ENABLE_SHARED;LIBCXX_ENABLE_EXCEPTIONS;LIBCXX_ENABLE_STATIC_ABI_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY;LIBCXX_STATICALLY_LINK_ABI_IN_SHARED_LIBRARY;LIBOMP_ENABLE_RTTI;PYTHON_EXECUTABLE"
FOUND_VERSION=`grep LLVM_VERSION_STRING build-llvm/include/llvm/Config/llvm-config.h|cut -d\" -f2`; \
if ! echo "$(LLVM_VERSION_FULL)"|grep "$$FOUND_VERSION"; then \
@ -582,7 +578,7 @@ debian-full-build:
debian-libfuzzer-build:
ifeq (${LIBFUZZER_ENABLE},yes)
cd $(TARGET_BUILD); \
CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)"; \
CFLAGS="$(opt_flags) $(STAGE_2_CFLAGS)"; \
echo $$CFLAGS; \
$(STAGE_2_BIN_DIR)/clang++ -c $$CFLAGS -std=c++11 $(BASE_PATH)/compiler-rt/lib/fuzzer/*.cpp -IFuzzer; \
ar ruv libFuzzer.a Fuzzer*.o
@ -598,11 +594,11 @@ debian-libclc-build:
-G $(GENERATOR) \
-DCMAKE_C_COMPILER=$(STAGE_2_BIN_DIR)/clang \
-DCMAKE_CXX_COMPILER=$(STAGE_2_BIN_DIR)/clang++ \
-DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS_EXTRA)" \
-DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS_EXTRA)" \
-DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS_EXTRA) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_C_FLAGS="$(opt_flags) $(STAGE_2_CFLAGS)" \
-DCMAKE_CXX_FLAGS="$(opt_flags) $(STAGE_2_CXXFLAGS)" \
-DCMAKE_SHARED_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_MODULE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_EXE_LINKER_FLAGS="$(STAGE_2_LDFLAGS) -L$(STAGE_2_LIB_DIR)" \
-DCMAKE_INSTALL_PREFIX=/usr \
-DCMAKE_INSTALL_DATADIR=lib \
-DCMAKE_INSTALL_INCLUDEDIR=include \