]> granicus.if.org Git - nethack/commitdiff
compiler settings alignment between macOS.2020 and linux.2020
authornhmall <nhmall@nethack.org>
Fri, 22 Jan 2021 21:05:30 +0000 (16:05 -0500)
committernhmall <nhmall@nethack.org>
Fri, 22 Jan 2021 21:05:30 +0000 (16:05 -0500)
get the warning flags on linux and macOS into better alignment

move the compiler flags into hints/include/compiler.2020 so that
maintenance changes can be made there and take effect for both
linux and macOS

this will likely trigger some initial new code warnings to be
investigated on either or both platforms

sys/unix/hints/include/compiler.2020 [new file with mode: 0755]
sys/unix/hints/include/multiw-1.2020
sys/unix/hints/linux.2020
sys/unix/hints/macOS.2020

diff --git a/sys/unix/hints/include/compiler.2020 b/sys/unix/hints/include/compiler.2020
new file mode 100755 (executable)
index 0000000..52b028c
--- /dev/null
@@ -0,0 +1,76 @@
+#------------------------------------------------------------------------------
+# 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
+
+ifndef WANT_WIN_QT
+ifndef WANT_LIBNH
+#      these are normally used when compiling nethack's core
+#      but -ansi forces -std=c90 for C or -std=c++98 for C++;
+#      win/Qt/qt_*.cpp compiled with C++98 semantics trigger
+#In file included from .../qt5/include/QtCore/qglobal.h:105:
+#.../qt5/include/QtCore/qcompilerdetection.h:561:6:
+#  error Qt requires a C++11 compiler and yours does not seem to be that.
+#      so we suppress -ansi when the build includes Qt
+#CFLAGS+=-ansi -Wno-long-long
+#CFLAGS+=-std=c99
+#
+#LIBNH's winshim requires C99 for the way it is currently coded
+endif
+endif
+
+CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers -Wimplicit \
+       -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings
+CFLAGS+=-pedantic
+CFLAGS+=-DGCC_WARN
+CFLAGS+=-Wimplicit-function-declaration
+CFLAGS+=-Wimplicit-int
+CFLAGS+=-Wmissing-declarations
+CFLAGS+=-Wmissing-prototypes
+ifeq "$(CCISCLANG)" ""
+#gcc-specific here
+CFLAGS+=-Wmissing-parameter-type
+# 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+=-Wno-format-overflow
+endif  #gcc version greater than or equal to 9
+else   # clang
+# clang-specific here
+endif  # clang
+# As of LLVM build 2336.1.00, this gives dozens of spurious messages, so
+# leave it out by default.
+#CFLAGS+=-Wunreachable-code
+#
+# Can't use these; NetHack uses old-style-definitions
+#CFLAGS+=-Wold-style-definition
+#CFLAGS+=-Wstrict-prototypes
+
+#end of compiler.2020
+#------------------------------------------------------------------------------
index 3fb5508824ab39d30fb7fd05d48111ee77fbb0c8..a7d934e4a8f3d1aad1361dc4ecbcc91139db7b12 100644 (file)
@@ -1,3 +1,4 @@
+
 #------------------------------------------------------------------------------
 # NetHack 3.7  multiw-1.2020 $NHDT-Date: 1597332785 2020/08/13 15:33:05 $  $NHDT-Branch: NetHack-3.7 $
 
 #WANT_DEFAULT=Qt
 #WANT_DEFAULT=X11
 
-# 3. compiler detection or optional override
-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
-
 #end of multiw-1.2020
 #------------------------------------------------------------------------------
index a9aeef494a4b3b557565be59a74f267ae3595182..b79d495e8d8ee9bebd85ea87a64dab5c54313f82 100755 (executable)
 # linux.2020 hints file provides a single-user build for Linux (such
 # as Ubuntu focal).
 
-# 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.
-
-# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 3
+# note: '#-INCLUDE' is not just a comment
+#        multiw-1.2020 contains sections 1 to 2
 #-INCLUDE multiw-1.2020
 
-# 4. If you set WANT_WIN_QT, you need to
+# 3. If you set WANT_WIN_QT, you need to
 #  A) set QTDIR either here or in the environment  to point to the Qt5
 #     Library installation root.
 #  B) set XPMLIB to point to the Xpm library
@@ -46,7 +36,7 @@ ifndef LIBXPM
 LIBXPM= -L/opt/X11/lib -lXpm
 endif
 
-#5. Other
+#4. Other
 GAMEUID  = $(USER)
 GAMEGRP  = games
 
@@ -57,21 +47,10 @@ GAMEGRP  = games
 
 #-INCLUDE multiw-2.2020
 
-CFLAGS=$(CCFLAGS) -I../include -DNOTPARMDECL
+# compiler.2020 contains compiler detection and adjustments common
+# to both linux and macOS
 
-ifeq "$(CCISCLANG)" ""
-# get the version of gcc
-GCCGTEQ9 := $(shell expr `$(CC) -dumpversion | cut -f1 -d.` \>= 9)
-ifeq "$(GCCGTEQ9)" "1"
-CFLAGS+=-Wno-format-overflow
-endif  #gcc version greater than or equal to 9
-endif  #not clang
-# As of LLVM build 2336.1.00, this gives dozens of spurious messages, so
-# leave it out by default.
-#CFLAGS+=-Wunreachable-code
-#CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers -Wimplicit \
-#      -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings
-#CFLAGS+=-DGCC_WARN
+#-INCLUDE compiler.2020
 
 # NetHack sources control
 CFLAGS+=-DDLB
index 283f1a7799f8cff78946db2ad3f96bcf4f443ca4..a743049b52db3ed42e6531be58437389fe59167a 100755 (executable)
 # macOS X hints file
 #
 
-# 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.
-
-# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 3
+# note: '#-INCLUDE' is not just a comment; multiw-1 contains sections 1 to 2
 #-INCLUDE multiw-1.2020
 
-# 4. If you set WANT_WIN_QT, you need to
+# 3. If you set WANT_WIN_QT, you need to
 #  A) set QTDIR either here or in the environment to point to the Qt5
 #     library installation root.  (Qt2, Qt3, Qt4 will not work)
 #  B) set XPMLIB to point to the Xpm library
@@ -50,7 +39,7 @@ ifndef LIBXPM
 LIBXPM= -L/opt/X11/lib -lXpm
 endif
 
-# 5. Other
+# 4. Other
 
 #-----------------------------------------------------------------------------
 # You shouldn't need to change anything below here (in the hints file; if
@@ -59,27 +48,10 @@ endif
 
 #-INCLUDE multiw-2.2020
 
-CFLAGS=$(CCFLAGS) -I../include -DNOTPARMDECL
+# compiler.2020 contains compiler detection and adjustments common
+# to both linux and macOS
 
-ifndef WANT_WIN_QT
-ifndef WANT_LIBNH
-#      these are normally used when compiling nethack's core
-CFLAGS+=-ansi -pedantic -Wno-long-long
-#      but -ansi forces -std=c90 for C or -std=c++98 for C++;
-#      win/Qt/qt_*.cpp compiled with C++98 semantics trigger
-#In file included from .../qt5/include/QtCore/qglobal.h:105:
-#.../qt5/include/QtCore/qcompilerdetection.h:561:6:
-#  error Qt requires a C++11 compiler and yours does not seem to be that.
-#      so we suppress -ansi when the build includes Qt
-#LIBNH's winshim requires C99 for the way it is currently coded
-endif
-endif
-# As of LLVM build 2336.1.00, this gives dozens of spurious messages, so
-# leave it out by default.
-#CFLAGS+=-Wunreachable-code
-CFLAGS+=-Wall -Wextra -Wno-missing-field-initializers -Wimplicit \
-       -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wwrite-strings
-CFLAGS+=-DGCC_WARN
+#-INCLUDE compiler.2020
 
 # NetHack sources control
 CFLAGS+=-DDLB