Move control of debug/release flags from makefile internal to user controlled

This commit is contained in:
rexy712 2021-04-19 13:28:23 -07:00
parent d45372cb23
commit d4f7e5e601
5 changed files with 58 additions and 66 deletions

View File

@ -27,8 +27,10 @@ LIBDIRS::=lib
INCLUDE_DIRS::=include INCLUDE_DIRS::=include
CFLAGS::=-std=c18 -Wall -pedantic -Wextra CFLAGS::=-std=c18 -Wall -pedantic -Wextra
CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra
DEBUG_CFLAGS::= DEBUG_CFLAGS::=$(CFLAGS) -O0 -g3 -ggdb
DEBUG_CXXFLAGS::= DEBUG_CXXFLAGS::=$(CXXFLAGS) -O0 -g3 -ggdb
RELEASE_CFLAGS::=$(CFLAGS) -O2 -Wno-strict-aliasing
RELEASE_CXXFLAGS::=$(CXXFLAGS) -O2 -Wno-strict-aliasing
EXT::=cpp EXT::=cpp
LANG::=$(EXT) LANG::=$(EXT)
MAIN_EXECUTABLE::=tester MAIN_EXECUTABLE::=tester
@ -105,25 +107,22 @@ endif
#setup compiler and flags based on language #setup compiler and flags based on language
ifeq ($(LANG),cpp) ifeq ($(LANG),cpp)
COMPILER_FLAGS::=$(CXXFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+= $(DEBUG_CXXFLAGS) COMPILER_FLAGS::=$(DEBUG_CXXFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CXXFLAGS)
endif endif
COMPILER::=$(CXX) COMPILER::=$(CXX)
else ifeq ($(LANG),c) else ifeq ($(LANG),c)
COMPILER_FLAGS::=$(CFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+= $(DEBUG_CFLAGS) COMPILER_FLAGS::=$(DEBUG_CFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CFLAGS)
endif endif
COMPILER::=$(CC) COMPILER::=$(CC)
endif endif
ifeq ($(RELEASE),1) ifneq ($(RELEASE),1)
#a lot of false strict aliasing warnings from gcc 9
COMPILER_FLAGS+=-O2 -Wno-strict-aliasing
else
#default target
COMPILER_FLAGS+=-O0 -g3 -ggdb
ifeq ($(MEMCHK),1) ifeq ($(MEMCHK),1)
#use asan to check memory leaks/invalid accesses #use asan to check memory leaks/invalid accesses
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls

View File

@ -11,7 +11,7 @@
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>. #along with this program. If not, see <http://www.gnu.org/licenses/>.
#Copyright 2020 rexy712 #Copyright 2020-2021 rexy712
#Makefile to generate a single executable from all sources in SOURCE_DIRS that end in EXT #Makefile to generate a single executable from all sources in SOURCE_DIRS that end in EXT
@ -27,8 +27,10 @@ LIBDIRS::=lib
INCLUDE_DIRS::=include INCLUDE_DIRS::=include
CFLAGS::=-std=c18 -Wall -pedantic -Wextra CFLAGS::=-std=c18 -Wall -pedantic -Wextra
CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra
DEBUG_CFLAGS::= DEBUG_CFLAGS::=$(CFLAGS) -O0 -g3 -ggdb
DEBUG_CXXFLAGS::= DEBUG_CXXFLAGS::=$(CXXFLAGS) -O0 -g3 -ggdb
RELEASE_CFLAGS::=$(CFLAGS) -O2 -Wno-strict-aliasing
RELEASE_CXXFLAGS::=$(CXXFLAGS) -O2 -Wno-strict-aliasing
EXT::=cpp EXT::=cpp
LANG::=$(EXT) LANG::=$(EXT)
MAIN_EXECUTABLE::=tester MAIN_EXECUTABLE::=tester
@ -102,26 +104,22 @@ endif
#setup compiler and flags based on language #setup compiler and flags based on language
ifeq ($(LANG),cpp) ifeq ($(LANG),cpp)
COMPILER_FLAGS::=$(CXXFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+= $(DEBUG_CXXFLAGS) COMPILER_FLAGS::=$(DEBUG_CXXFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CXXFLAGS)
endif endif
COMPILER::=$(CXX) COMPILER::=$(CXX)
else ifeq ($(LANG),c) else ifeq ($(LANG),c)
COMPILER_FLAGS::=$(CFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+= $(DEBUG_CFLAGS) COMPILER_FLAGS::=$(DEBUG_CFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CFLAGS)
endif endif
COMPILER::=$(CC) COMPILER::=$(CC)
endif endif
ifeq ($(RELEASE),1) ifneq ($(RELEASE),1)
#a lot of false strict aliasing warnings from gcc 9
COMPILER_FLAGS+=-O2 -Wno-strict-aliasing
POST_TARGETS+= do_strip
else
#default target
COMPILER_FLAGS+=-O0 -g3 -ggdb
ifeq ($(MEMCHK),1) ifeq ($(MEMCHK),1)
#use asan to check memory leaks/invalid accesses #use asan to check memory leaks/invalid accesses
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls

View File

@ -27,8 +27,10 @@ LIBDIRS::=lib
INCLUDE_DIRS::=include INCLUDE_DIRS::=include
CFLAGS::=-std=c18 -Wall -pedantic -Wextra CFLAGS::=-std=c18 -Wall -pedantic -Wextra
CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra
DEBUG_CFLAGS::= DEBUG_CFLAGS::=$(CFLAGS) -O0 -g3 -ggdb
DEBUG_CXXFLAGS::= DEBUG_CXXFLAGS::=$(CXXFLAGS) -O0 -g3 -ggdb
RELEASE_CFLAGS::=$(CFLAGS) -O2 -Wno-strict-aliasing
RELEASE_CXXFLAGS::=$(CXXFLAGS) -O2 -Wno-strict-aliasing
EXT::=cpp EXT::=cpp
LANG::=$(EXT) LANG::=$(EXT)
MAIN_LIBRARY::=tester MAIN_LIBRARY::=tester
@ -118,25 +120,22 @@ endif
#setup compiler and flags based on language #setup compiler and flags based on language
ifeq ($(LANG),cpp) ifeq ($(LANG),cpp)
COMPILER_FLAGS::=$(CXXFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CXXFLAGS) COMPILER_FLAGS::=$(DEBUG_CXXFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CXXFLAGS)
endif endif
COMPILER::=$(CXX) COMPILER::=$(CXX)
else ifeq ($(LANG),c) else ifeq ($(LANG),c)
COMPILER_FLAGS::=$(CFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CFLAGS) COMPILER_FLAGS::=$(DEBUG_CFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CFLAGS)
endif endif
COMPILER::=$(CC) COMPILER::=$(CC)
endif endif
ifeq ($(RELEASE),1) ifneq ($(RELEASE),1)
#a lot of false strict aliasing warnings from gcc 9
COMPILER_FLAGS+=-O2 -Wno-strict-aliasing
else
#default target
COMPILER_FLAGS+=-O0 -g3 -ggdb
ifeq ($(MEMCHK),1) ifeq ($(MEMCHK),1)
#use asan to check memory leaks/invalid accesses #use asan to check memory leaks/invalid accesses
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls

View File

@ -11,7 +11,7 @@
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>. #along with this program. If not, see <http://www.gnu.org/licenses/>.
#Copyright 2018-2020 rexy712 #Copyright 2018-2021 rexy712
#Makefile to generate a single static or shared library from all the sources in SOURCE_DIRS ending in EXT #Makefile to generate a single static or shared library from all the sources in SOURCE_DIRS ending in EXT
@ -27,8 +27,10 @@ LIBDIRS::=lib
INCLUDE_DIRS::=include INCLUDE_DIRS::=include
CFLAGS::=-std=c18 -Wall -pedantic -Wextra CFLAGS::=-std=c18 -Wall -pedantic -Wextra
CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra
DEBUG_CFLAGS::= DEBUG_CFLAGS::=$(CFLAGS) -O0 -g3 -ggdb
DEBUG_CXXFLAGS::= DEBUG_CXXFLAGS::=$(CXXFLAGS) -O0 -g3 -ggdb
RELEASE_CFLAGS::=$(CFLAGS) -O2 -Wno-strict-aliasing
RELEASE_CXXFLAGS::=$(CXXFLAGS) -O2 -Wno-strict-aliasing
EXT::=cpp EXT::=cpp
LANG::=$(EXT) LANG::=$(EXT)
MAIN_LIBRARY::=tester MAIN_LIBRARY::=tester
@ -110,27 +112,22 @@ endif
#setup compiler and flags based on language #setup compiler and flags based on language
ifeq ($(LANG),cpp) ifeq ($(LANG),cpp)
COMPILER_FLAGS::=$(CXXFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CXXFLAGS) COMPILER_FLAGS::=$(DEBUG_CXXFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CXXFLAGS)
endif endif
COMPILER::=$(CXX) COMPILER::=$(CXX)
else ifeq ($(LANG),c) else ifeq ($(LANG),c)
COMPILER_FLAGS::=$(CFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CFLAGS) COMPILER_FLAGS::=$(DEBUG_CFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CFLAGS)
endif endif
COMPILER::=$(CC) COMPILER::=$(CC)
endif endif
ifeq ($(RELEASE),1) ifneq ($(RELEASE),1)
#a lot of false strict aliasing warnings from gcc 9
COMPILER_FLAGS+=-O2 -Wno-strict-aliasing
POST_TARGETS+= do_strip
else
#default target
COMPILER_FLAGS+=-O0 -g3 -ggdb
ifeq ($(MEMCHK),1)
#use asan to check memory leaks/invalid accesses #use asan to check memory leaks/invalid accesses
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls
COMPILER_FLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls COMPILER_FLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls

View File

@ -11,7 +11,7 @@
#You should have received a copy of the GNU General Public License #You should have received a copy of the GNU General Public License
#along with this program. If not, see <http://www.gnu.org/licenses/>. #along with this program. If not, see <http://www.gnu.org/licenses/>.
#Copyright 2018-2020 rexy712 #Copyright 2018-2021 rexy712
#Makefile to generate a single executable from all sources in SOURCE_DIRS that end in EXT #Makefile to generate a single executable from all sources in SOURCE_DIRS that end in EXT
@ -27,8 +27,10 @@ LIBDIRS::=lib
INCLUDE_DIRS::=include INCLUDE_DIRS::=include
CFLAGS::=-std=c18 -Wall -pedantic -Wextra CFLAGS::=-std=c18 -Wall -pedantic -Wextra
CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra CXXFLAGS::=-std=c++17 -Wall -pedantic -Wextra
DEBUG_CFLAGS::= DEBUG_CFLAGS::=$(CFLAGS) -O0 -g3 -ggdb
DEBUG_CXXFLAGS::= DEBUG_CXXFLAGS::=$(CXXFLAGS) -O0 -g3 -ggdb
RELEASE_CFLAGS::=$(CFLAGS) -O2 -Wno-strict-aliasing
RELEASE_CXXFLAGS::=$(CXXFLAGS) -O2 -Wno-strict-aliasing
EXT::=cpp EXT::=cpp
LANG::=$(EXT) LANG::=$(EXT)
MAIN_EXECUTABLE::=tester MAIN_EXECUTABLE::=tester
@ -102,25 +104,22 @@ endif
#setup compiler and flags based on language #setup compiler and flags based on language
ifeq ($(LANG),cpp) ifeq ($(LANG),cpp)
COMPILER_FLAGS::=$(CXXFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CXXFLAGS) COMPILER_FLAGS::=$(DEBUG_CXXFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CXXFLAGS)
endif endif
COMPILER::=$(CXX) COMPILER::=$(CXX)
else ifeq ($(LANG),c) else ifeq ($(LANG),c)
COMPILER_FLAGS::=$(CFLAGS)
ifneq ($(RELEASE),1) ifneq ($(RELEASE),1)
COMPILER_FLAGS+=$(DEBUG_CFLAGS) COMPILER_FLAGS::=$(DEBUG_CFLAGS)
else
COMPILER_FLAGS::=$(RELEASE_CFLAGS)
endif endif
COMPILER::=$(CC) COMPILER::=$(CC)
endif endif
ifeq ($(RELEASE),1) ifneq ($(RELEASE),1)
#a lot of false strict aliasing warnings from gcc 9
COMPILER_FLAGS+=-O2 -Wno-strict-aliasing
else
#default target
COMPILER_FLAGS+=-O0 -g3 -ggdb
ifeq ($(MEMCHK),1) ifeq ($(MEMCHK),1)
#use asan to check memory leaks/invalid accesses #use asan to check memory leaks/invalid accesses
LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls LDFLAGS+=-fsanitize=address -fno-omit-frame-pointer -fno-optimize-sibling-calls