On Tuesday 14 June 2016 13:05:53 Paul Eggert wrote: > On 06/14/2016 11:54 AM, Tim Rühsen wrote: > > mmm, you (or anyone else) don't know a way to use special CFLAGS just > > for gnulib / lib directory (or in general: a subdirectory) ? > > Yes, that's reasonably common. See coreutils configure.ac for an > example; look for "We use a slightly smaller set of warning options for > lib/."
Paul, thank you so much for this valuable hint. Just for the record: I had to create a custom Makefile.am in lib/ and add --makefile-name=gnulib.mk to the gnulib-tool invocation. To include gnulib.mk I needed the Makefile.am to look like this: #### MOSTLYCLEANFILES = noinst_LTLIBRARIES = EXTRA_DIST = BUILT_SOURCES = MOSTLYCLEANDIRS = CLEANFILES = SUFFIXES = AM_CFLAGS = $(GNULIB_WARN_CFLAGS) $(WERROR_CFLAGS) include gnulib.mk #### In configure.ac, using gl_MANYWARN_COMPLEMENT (=remove warn options) alone was not enough. Some options like -Wsign-compare are implicitly added by -Wextra and/or -W. These have to be disabled by e.g. gl_WARN_ADD([-Wno-sign-compare]). gl_WARN_ADD changes $WARN_CFLAGS, which is not what I want for the non-gnulib flags. Backing up and restoring $WARN_FLAGS is working. #### Snippet from configure.ac #### # We use a slightly smaller set of warning options for lib/. # Remove the following and save the result in GNULIB_WARN_CFLAGS. # Removing is not enough if these switches are implicitly set by other # flags like -Wall or -Wextra. We have to explicitely unset them # with -Wno-.... nw= nw="$nw -Wpedantic" nw="$nw -Wunused-macros" nw="$nw -Wsign-compare" nw="$nw -Wunused-parameter" nw="$nw -Wswitch-default" nw="$nw -Wformat-nonliteral" bak="$WARN_CFLAGS" # disable options implicitly set by other options gl_WARN_ADD([-Wno-sign-compare]) gl_WARN_ADD([-Wno-unused-parameter]) gl_MANYWARN_COMPLEMENT([GNULIB_WARN_CFLAGS], [$WARN_CFLAGS], [$nw]) AC_SUBST([GNULIB_WARN_CFLAGS]) WARN_CFLAGS="$bak" #### Regards, Tim
signature.asc
Description: This is a digitally signed message part.
