[BACK]Return to cflags.m4 CVS log [TXT][DIR] Up to [local] / acopm / m4

File: [local] / acopm / m4 / cflags.m4 (download)

Revision 1.1, Sat May 8 15:42:18 2021 UTC (3 years ago) by bountyht
Branch point for: MAIN

Initial revision

ACOPM_TEST_CFLAGS_RESULT=""

AC_DEFUN([ACOPM_TEST_CFLAGS],
	[
		AC_MSG_CHECKING([for C compiler flag(s) $1 ])
		CFLAGS_SAVED="${CFLAGS}"
		CFLAGS="${CFLAGS} $1"

		AC_COMPILE_IFELSE(
			[AC_LANG_PROGRAM([[]], [[]])],
			[
				ACOPM_TEST_CFLAGS_RESULT='yes'
			],
			[
				ACOPM_TEST_CFLAGS_RESULT='no'
				CFLAGS="${CFLAGS_SAVED}"
			]
		)

		AC_MSG_RESULT([${ACOPM_TEST_CFLAGS_RESULT}])
		unset CFLAGS_SAVED
	]
)

AC_DEFUN([ACOPM_TEST_CFLAGS_DIAGNOSTICS],
	[

		ACOPM_TEST_CFLAGS([-Werror=unknown-warning-option])
		ACOPM_TEST_CFLAGS([-Werror=implicit])

		ACOPM_TEST_CFLAGS([-Weverything])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-Wall])
			ACOPM_TEST_CFLAGS([-Wextra])

			ACOPM_TEST_CFLAGS([-Waggregate-return])
			ACOPM_TEST_CFLAGS([-Walloc-zero])
			ACOPM_TEST_CFLAGS([-Walloca])
			ACOPM_TEST_CFLAGS([-Wbad-function-cast])
			ACOPM_TEST_CFLAGS([-Wc99-c11-compat])
			ACOPM_TEST_CFLAGS([-Wcast-qual])
			ACOPM_TEST_CFLAGS([-Wconversion])
			ACOPM_TEST_CFLAGS([-Wdangling-else])
			ACOPM_TEST_CFLAGS([-Wdate-time])
			ACOPM_TEST_CFLAGS([-Wdisabled-optimization])
			ACOPM_TEST_CFLAGS([-Wdouble-promotion])
			ACOPM_TEST_CFLAGS([-Wduplicate-decl-specifier])
			ACOPM_TEST_CFLAGS([-Wduplicated-branches])
			ACOPM_TEST_CFLAGS([-Wduplicated-cond])
			ACOPM_TEST_CFLAGS([-Wfatal-errors])
			ACOPM_TEST_CFLAGS([-Wformat-nonliteral])
			ACOPM_TEST_CFLAGS([-Wformat-security])
			ACOPM_TEST_CFLAGS([-Wformat-signedness])
			ACOPM_TEST_CFLAGS([-Wformat-y2k])
			ACOPM_TEST_CFLAGS([-Winline])
			ACOPM_TEST_CFLAGS([-Winit-self])
			ACOPM_TEST_CFLAGS([-Winvalid-pch])
			ACOPM_TEST_CFLAGS([-Wjump-misses-init])
			ACOPM_TEST_CFLAGS([-Wlogical-op])
			ACOPM_TEST_CFLAGS([-Wmissing-declarations])
			ACOPM_TEST_CFLAGS([-Wmissing-format-attribute])
			ACOPM_TEST_CFLAGS([-Wmissing-include-dirs])
			ACOPM_TEST_CFLAGS([-Wmissing-parameter-type])
			ACOPM_TEST_CFLAGS([-Wmissing-prototypes])
			ACOPM_TEST_CFLAGS([-Wnested-externs])
			ACOPM_TEST_CFLAGS([-Wnormalized=nfkc])
			ACOPM_TEST_CFLAGS([-Wnull-dereference])
			ACOPM_TEST_CFLAGS([-Wold-style-definition])
			ACOPM_TEST_CFLAGS([-Wpacked])
			ACOPM_TEST_CFLAGS([-Wpointer-arith])
			ACOPM_TEST_CFLAGS([-Wpointer-compare])
			ACOPM_TEST_CFLAGS([-Wredundant-decls])
			ACOPM_TEST_CFLAGS([-Wregister])
			ACOPM_TEST_CFLAGS([-Wrestrict])
			ACOPM_TEST_CFLAGS([-Wshadow])
			ACOPM_TEST_CFLAGS([-Wstack-protector])

			ACOPM_TEST_CFLAGS([-Wstrict-overflow=3])

			if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

				ACOPM_TEST_CFLAGS([-Wstrict-overflow])
			fi

			ACOPM_TEST_CFLAGS([-Wstrict-prototypes])
			ACOPM_TEST_CFLAGS([-Wstringop-overflow=4])
			ACOPM_TEST_CFLAGS([-Wtrampolines])
			ACOPM_TEST_CFLAGS([-Wundef])
			ACOPM_TEST_CFLAGS([-Wuninitialized])
			ACOPM_TEST_CFLAGS([-Wunsafe-loop-optimizations])
			ACOPM_TEST_CFLAGS([-Wunsuffixed-float-constants])
			ACOPM_TEST_CFLAGS([-Wvla])
			ACOPM_TEST_CFLAGS([-Wwrite-strings])
		fi

		ACOPM_TEST_CFLAGS([-Wpedantic])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-pedantic])
		fi

		ACOPM_TEST_CFLAGS([-Walloc-size-larger-than=1048576])
		ACOPM_TEST_CFLAGS([-Wlarger-than=1048576])

		ACOPM_TEST_CFLAGS([-Wno-address-of-packed-member])
		ACOPM_TEST_CFLAGS([-Wno-cast-align])
		ACOPM_TEST_CFLAGS([-Wno-disabled-macro-expansion])
		ACOPM_TEST_CFLAGS([-Wno-packed])
		ACOPM_TEST_CFLAGS([-Wno-padded])
		ACOPM_TEST_CFLAGS([-Wno-unused-command-line-argument])
	]
)

AC_DEFUN([ACOPM_TEST_CFLAGS_DEBUG],
	[

		ACOPM_TEST_CFLAGS([-fstack-protector-all])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-fstack-protector=all])
		fi

		ACOPM_TEST_CFLAGS([-Og])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-O0])
		fi

		ACOPM_TEST_CFLAGS([-gdwarf-4])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-ggdb3])

			if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

				ACOPM_TEST_CFLAGS([-g])
			fi
		fi
	]
)

AC_DEFUN([ACOPM_TEST_CFLAGS_NODEBUG],
	[

		ACOPM_TEST_CFLAGS([-fstack-protector-strong])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-fstack-protector=strong])
		fi

		ACOPM_TEST_CFLAGS([-O2])

		if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

			ACOPM_TEST_CFLAGS([-O1])

			if test "x${ACOPM_TEST_CFLAGS_RESULT}" = "xno" ; then

				ACOPM_TEST_CFLAGS([-O])
			fi
		fi
	]
)

AC_DEFUN([ACOPM_TEST_CFLAGS_EXTRA],
	[
		ACOPM_TEST_CFLAGS([-Wa,--noexecstack])
		ACOPM_TEST_CFLAGS([-Wl,-z,now])
		ACOPM_TEST_CFLAGS([-Wl,-z,relro])
		ACOPM_TEST_CFLAGS([-Wl,--as-needed])

		ACOPM_TEST_CFLAGS([-fstrict-aliasing])
		ACOPM_TEST_CFLAGS([-pipe])
		ACOPM_TEST_CFLAGS([-DPIC -fPIC -pie])

		AC_MSG_CHECKING([whether _FORTIFY_SOURCE is defined ])

		AC_RUN_IFELSE(
			[
				AC_LANG_PROGRAM(
					[[
						#include <stdlib.h>
					]], [[
						#ifdef _FORTIFY_SOURCE
						return EXIT_SUCCESS;
						#else
						return EXIT_FAILURE;
						#endif
					]]
				)
			],
			[
				AC_MSG_RESULT([yes])
			],
			[
				AC_MSG_RESULT([no])
				ACOPM_TEST_CFLAGS([-D_FORTIFY_SOURCE=2])
			],
			[
				AC_MSG_RESULT([cannot; cross-compiling])
				ACOPM_TEST_CFLAGS([-D_FORTIFY_SOURCE=2])
			]
		)
	]
)