diff --git a/configure.ac b/configure.ac index 9b64683b..c305d633 100644 --- a/configure.ac +++ b/configure.ac @@ -129,6 +129,22 @@ if test "$ac_cv_have_gnuc_visibility_attribute" = "yes"; then [Defined to 1 if GCC visibility attribute is supported]) fi +# Check for -fstack-protector +ssp_cc=yes +if test "X$CC-cc" != "X"; then + AC_MSG_CHECKING([whether ${CC-cc} accepts -fstack-protector]) + ssp_old_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fstack-protector" + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[alloca(100);]])], [], [ssp_cc=no]) + AC_MSG_RESULT([$ssp_cc]) + if test "X$ssp_cc" = "Xno"; then + CFLAGS="$ssp_old_cflags" + else + AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.]) + fi +fi +AM_CONDITIONAL(USE_SSP, test "$ssp_cc" = "yes") + # Check for DRM (mandatory) LIBDRM_VERSION=libdrm_version PKG_CHECK_MODULES([DRM], [libdrm >= $LIBDRM_VERSION]) diff --git a/decode/Makefile.am b/decode/Makefile.am index febc50d6..8ea92522 100644 --- a/decode/Makefile.am +++ b/decode/Makefile.am @@ -24,11 +24,14 @@ bin_PROGRAMS = mpeg2vldemo loadjpeg AM_CPPFLAGS = \ -Wall \ - -fstack-protector \ $(LIBVA_CFLAGS) \ -I$(top_srcdir)/common \ $(NULL) +if USE_SSP +AM_CPPFLAGS += -fstack-protector +endif + TEST_LIBS = \ $(LIBVA_LIBS) \ $(top_builddir)/common/libva-display.la \ diff --git a/encode/Makefile.am b/encode/Makefile.am index ab1a86fa..7396352a 100644 --- a/encode/Makefile.am +++ b/encode/Makefile.am @@ -25,10 +25,13 @@ noinst_PROGRAMS = svctenc AM_CPPFLAGS = \ -Wall \ - -fstack-protector \ $(LIBVA_CFLAGS) \ $(NULL) +if USE_SSP +AM_CPPFLAGS += -fstack-protector +endif + h264encode_SOURCES = h264encode.c h264encode_CFLAGS = -I$(top_srcdir)/common -g h264encode_LDADD = \ diff --git a/putsurface/Makefile.am b/putsurface/Makefile.am index e7b62a16..10ae63ef 100644 --- a/putsurface/Makefile.am +++ b/putsurface/Makefile.am @@ -26,9 +26,12 @@ TEST_CFLAGS = \ $(LIBVA_CFLAGS) \ -I$(top_srcdir)/common \ -Wall \ - -fstack-protector \ $(NULL) +if USE_SSP +TEST_CFLAGS += -fstack-protector +endif + TEST_LIBS = \ $(LIBVA_LIBS) \ $(top_builddir)/common/libva-display.la \ diff --git a/vainfo/Makefile.am b/vainfo/Makefile.am index aff201f0..e59f4662 100644 --- a/vainfo/Makefile.am +++ b/vainfo/Makefile.am @@ -27,9 +27,12 @@ vainfo_cflags = \ $(LIBVA_CFLAGS) \ -DLIBVA_VERSION_S="\"$(LIBVA_VERSION)\"" \ -Wall \ - -fstack-protector \ $(NULL) +if USE_SSP +vainfo_cflags += -fstack-protector +endif + vainfo_libs = \ $(LIBVA_LIBS) \ $(top_builddir)/common/libva-display.la \ diff --git a/videoprocess/Makefile.am b/videoprocess/Makefile.am index cbb44a3e..0c527634 100644 --- a/videoprocess/Makefile.am +++ b/videoprocess/Makefile.am @@ -24,11 +24,14 @@ bin_PROGRAMS = vavpp vppscaling_csc vppdenoise vppsharpness vppchromasitting vpp AM_CPPFLAGS = \ -Wall \ - -fstack-protector \ $(LIBVA_CFLAGS) \ -I$(top_srcdir)/common \ $(NULL) +if USE_SSP +AM_CPPFLAGS += -fstack-protector +endif + TEST_LIBS = \ $(LIBVA_LIBS) \ $(top_builddir)/common/libva-display.la \