From a203c722816f34c2a7f68f09957934dc05945203 Mon Sep 17 00:00:00 2001 From: "Markus F.X.J. Oberhumer" Date: Tue, 20 Dec 2022 11:40:48 +0100 Subject: [PATCH] make: update Makefile --- Makefile | 86 ++++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index 06ccfb48..34900ec7 100644 --- a/Makefile +++ b/Makefile @@ -36,49 +36,73 @@ build/release: PHONY debug: build/debug release: build/release +.PHONY: PHONY + #*********************************************************************** -# some pre-defined build configurations +# extra convenience: some pre-defined build configurations #*********************************************************************** -# force building with gcc/g++ -build/debug-gcc: PHONY - $(call run_config,$@,Debug) - $(call run_build,$@,Debug) -build/release-gcc: PHONY - $(call run_config,$@,Release) - $(call run_build,$@,Release) -build/%-gcc: export CC=gcc -build/%-gcc: export CXX=g++ +define run_config_and_build + $(call run_config,$1,$2) + $(call run_build,$1,$2) +endef # force building with clang/clang++ -build/debug-clang: PHONY - $(call run_config,$@,Debug) - $(call run_build,$@,Debug) -build/release-clang: PHONY - $(call run_config,$@,Release) - $(call run_build,$@,Release) -build/%-clang: export CC=clang -build/%-clang: export CXX=clang++ +build/debug-clang: PHONY ; $(call run_config_and_build,$@,Debug) +build/release-clang: PHONY ; $(call run_config_and_build,$@,Release) +build/%-clang: export CC = clang +build/%-clang: export CXX = clang++ -# cross compiler: Windows mingw-w64 -build/debug-cross-mingw64: PHONY - $(call run_config,$@,Debug) - $(call run_build,$@,Debug) -build/release-cross-mingw64: PHONY - $(call run_config,$@,Release) - $(call run_build,$@,Release) -build/%-cross-mingw64: export CC=x86_64-w64-mingw32-gcc -build/%-cross-mingw64: export CXX=x86_64-w64-mingw32-g++ +# force building with clang/clang++ -m32 +build/debug-clang-m32: PHONY ; $(call run_config_and_build,$@,Debug) +build/release-clang-m32: PHONY ; $(call run_config_and_build,$@,Release) +build/%-clang-m32: export CC = clang -m32 +build/%-clang-m32: export CXX = clang++ -m32 + +# force building with clang/clang++ -m64 +build/debug-clang-m64: PHONY ; $(call run_config_and_build,$@,Debug) +build/release-clang-m64: PHONY ; $(call run_config_and_build,$@,Release) +build/%-clang-m64: export CC = clang -m64 +build/%-clang-m64: export CXX = clang++ -m64 + +# force building with gcc/g++ +build/debug-gcc: PHONY; $(call run_config_and_build,$@,Debug) +build/release-gcc: PHONY; $(call run_config_and_build,$@,Release) +build/%-gcc: export CC = gcc +build/%-gcc: export CXX = g++ + +# force building with gcc/g++ -m32 +build/debug-gcc-m32: PHONY; $(call run_config_and_build,$@,Debug) +build/release-gcc-m32: PHONY; $(call run_config_and_build,$@,Release) +build/%-gcc-m32: export CC = gcc -m32 +build/%-gcc-m32: export CXX = g++ -m32 + +# force building with gcc/g++ -m64 +build/debug-gcc-m64: PHONY; $(call run_config_and_build,$@,Debug) +build/release-gcc-m64: PHONY; $(call run_config_and_build,$@,Release) +build/%-gcc-m64: export CC = gcc -m64 +build/%-gcc-m64: export CXX = g++ -m64 + +# cross compiler: Windows win32 mingw32 +build/debug-cross-mingw32: PHONY ; $(call run_config_and_build,$@,Debug) +build/release-cross-mingw32: PHONY ; $(call run_config_and_build,$@,Release) +build/%-cross-mingw32: export CC = i686-w64-mingw32-gcc +build/%-cross-mingw32: export CXX = i686-w64-mingw32-g++ +# disable sanitize to avoid link errors on GitHub CI +build/%-cross-mingw32: UPX_CMAKE_CONFIG_FLAGS += -DUPX_CONFIG_DISABLE_SANITIZE=1 + +# cross compiler: Windows win64 mingw64 +build/debug-cross-mingw64: PHONY ; $(call run_config_and_build,$@,Debug) +build/release-cross-mingw64: PHONY ; $(call run_config_and_build,$@,Release) +build/%-cross-mingw64: export CC = x86_64-w64-mingw32-gcc +build/%-cross-mingw64: export CXX = x86_64-w64-mingw32-g++ # disable sanitize to avoid link errors on GitHub CI build/%-cross-mingw64: UPX_CMAKE_CONFIG_FLAGS += -DUPX_CONFIG_DISABLE_SANITIZE=1 #*********************************************************************** -# misc +# check git submodules #*********************************************************************** -.PHONY: PHONY - -# check git submodules ifeq ($(wildcard ./vendor/doctest/doctest/.),) $(error ERROR: missing git submodule; run 'git submodule update --init') endif