prevent warnings from creeping back in, we now have the ability to break the
build when new warnings appear.
-This is only available for systems with gcc 4.2 or later, and is disabled
+This is only available for systems with gcc 4.2 or later, and is disabled
unless the --enable-checking option is supplied to configure. Because we
can't remove all of the warnings, we permit file by file (and warning by
warning) disabling of specific warnings. The --enable-checking=all prevents
You can disable a single warning type in a particular file by using GCC
pragmas. If a warning can be disabled with a pragma, then the switch to use
will be listed in the error message you receive from the compiler. Pragmas
-should be wrapped in IGNORE_SOME_GCC_WARNINGS, so that they aren't used
+should be wrapped in IGNORE_SOME_GCC_WARNINGS, so that they aren't used
with non-gcc compilers, and can be disabled if desired. For example:
#ifdef IGNORE_SOME_GCC_WARNINGS
# pragma GCC diagnostic warning "-Wold-style-definition"
#endif
-If a pragma isn't available for your particular warning, you will need to
+It would appear that when built with -Werror, the llvm clang compiler will
+still upgrade warnings that are suppresed in this way to errors. In this case,
+the fix is to mark that warning as ignored, but only for clang. For example:
+ #ifdef IGNORE_SOME_GCC_WARNINGS
+ # ifdef __clang__
+ # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
+ # else
+ # pragma GCC diagnostic warning "-Wdeprecated-declarations"
+ # endif
+ #endif
+
+If a pragma isn't available for your particular warning, you will need to
disable all warnings for the file in question. You can do this by supplying
-the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For
+the autoconf macro @CFLAGS_NOERROR@ in the build options for the file. For
example:
lex.yy.o : lex.yy.c y.tab.c
${CC} -c ${CFLAGS} @CFLAGS_NOERROR@ lex.yy.c
afs/afs_syscall.c : old-style
: strict-proto
: all (ukernel) : syscall pointer issues
-afsd/afsd.c : deprecated : daemon() marked as deprecated on Darwin
- : all : call_syscall missing prototype
+afsd/afsd_kernel.c : deprecated : daemon() marked as deprecated on Darwin
auth/ktc.c : all (ukernel) : call_syscall doesn't have a prototype
bozo/bosserver.c : deprecated : daemon() marked as deprecated on Darwin
-bozo/bos.c : all : DES key types & string consts
-bozo/bos_util.c : all : DES key types
bucoord/ubik_db_if.c : strict-proto : Ubik_Call
bucoord/commands.c : all : Ubik_Call
: signed vs unsigned for dates
-butc/tcmain.c : all : prototypes
butc/tcudbprocs.c : all : ubik_Call
-kauth/admin_tools.c : all : ubik_Call nonsense
+external/heimdal/hcrypto/validate.c: all: statement with empty body
+kauth/admin_tools.c : all : signed vs unsigned for dates
kauth/authclient.c : strict-proto : ubik_Call nonsense
-libadmin/bos/afs_bosAdmin.c: all : DES keys, time types, and const
-libadmin/kas/afs_kasAdmin.c: all : Ubik_Call nonsense, DES keys
+libadmin/kas/afs_kasAdmin.c: all : Ubik_Call nonsense
libadmin/samples/rxstat_query_peer.c : all : util_RPCStatsStateGet types
libadmin/samples/rxstat_query_process.c : all : util_RPCStatsStateGet types
libadmin/test/client.c : all : util_RPCStatsStateGet types
-rxkad/rxkad_server.c : all : Des key nonsense - maybe fixed (no errors in pthread)
-rxkad/ticket5.c : all : CRC functions - maybe fixed (no errors in normal & pthread)
-rx/rx.c : all (pthread) : rxkad_global_stats_init not proto'd
-rx/xdr_rx.c : all (ukernel) : Prototypes don't match due to AFS_XDR_T
- not being used in the xdr header
-ubik/utst_int_ss.c : all : Client / Server symbol collisions
-ubik/beacon.c : all : Ubik uses signed/unsigned
- interchangably for IP addresses, a
- fix will require API changes.
+rxkad/ticket5.c : all : v5gen.c has set-but-unused variables
ubik/ubikclient.c : strict-protos : ubik_Call
-uss/uss_vol.c : all Format issues
-uss/uss_kauth.c : all : Des keys, ubik_Call
-viced/fsprobe.c : all : ubik_Call
-vol/salvager.c : all : consts & undefined variable from header - maybe fixed!
volser/vol-dump.c : format : afs_sfsize_t