#------------------------------------------------------------------------------ # NetHack 3.7 compiler.2020 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $ $NHDT-Branch: NetHack-3.7 $ # compiler flags: CCFLAGS is used to construct a value for CFLAGS with # various -I, -D, and -W settings appended below; # these are the settings of most interest for an end-user build # (clang doesn't support '-Og', gcc needs 4.x or later) CCFLAGS = -g #CCFLAGS = -g -Og #CCFLAGS = -O2 # Note: this is not the usual 'CFLAGS' which is used in default # rules for compiling C code; specifying a value for that on the # 'make' command line should be avoided. CCISCLANG := $(shell echo `$(CC) --version` | grep clang) ifeq "$(CCISCLANG)" "" CXX=g++ -std=gnu++11 else CXX=clang++ -std=gnu++11 endif # if you want to override the compiler detection just carried out # uncomment one of the following pairs as desired. #CC= gcc #CXX= g++ -std-gnu++11 # #CC= clang #CXX=clang++ -std=gnu++11 CFLAGS=$(CCFLAGS) -I../include -DNOTPARMDECL CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers \ -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings CFLAGS+=-pedantic CFLAGS+=-Wmissing-declarations CFLAGS+=-Wformat-nonliteral # As of LLVM build 2336.1.00, this gives dozens of spurious messages, so # # leave it out by default. # #CFLAGS+=-Wunreachable-code # # # # the following are not allowed in C++ CFLAGS+=-Wimplicit CFLAGS+=-Wimplicit-function-declaration CFLAGS+=-Wimplicit-int CFLAGS+=-Wmissing-prototypes CFLAGS+=-Wold-style-definition CFLAGS+=-Wstrict-prototypes CCXXFLAGS = -g -I../include -DNOTPARMDECL CCXXFLAGS+=-Wall -Wextra -Wno-missing-field-initializers \ -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings CCXXFLAGS+=-pedantic CCXXFLAGS+=-Wmissing-declarations CCXXFLAGS+=-Wformat-nonliteral ifeq "$(CCISCLANG)" "" # gcc-specific follows CFLAGS+=-Wmissing-parameter-type ifdef WANT_WIN_QT CCXXFLAGS+= -Wno-deprecated-copy endif # WANT_WIN_QT # get the version of gcc GCCGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9) ifeq "$(GCCGTEQ9)" "1" # flags present in gcc version greater than or equal to 9 can go here CFLAGS+=-Wformat-overflow endif #gcc version greater than or equal to 9 #still in gcc-specific section here # get the version of g++ GPPGTEQ9 := $(shell expr `$(CXX) -dumpversion | cut -f1 -d.` \>= 9) ifeq "$(GPPGTEQ9)" "1" CCXXFLAGS+=-Wformat-overflow ifdef WANT_WIN_QT CCXXFLAGS+=-Wno-deprecated-copy endif # WANT_WIN_QT endif # g++ version greater than or equal to 9 # end of gcc-specific else # clang-specific follows # get the version of clang++ CLANGPPGTEQ9 := $(shell expr `$(CXX) -dumpversion | cut -f1 -d.` \>= 9) ifeq "$(CLANGPPGTEQ9)" "1" ifdef WANT_WIN_QT CCXXFLAGS+=-Wno-deprecated-copy endif # WANT_WIN_QT endif #clang++ greater than or equal to 9 ifdef WANT_WIN_QT CCXXFLAGS+=-Wno-deprecated-declarations endif # WANT_WIN_QT endif # clang-specific ends here # enable some optional code in various NetHack source files CFLAGS+=-DGCC_WARN CCXXFLAGS+=-DGCC_WARN #end of compiler.2020 #------------------------------------------------------------------------------