# # Copyright 2007 Google Inc. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # # GGL_CHECK_STACK_PROTECTOR([ACTION-IF-OK], [ACTION-IF-NOT-OK]) # Check if c compiler supports -fstack-protector and -fstack-protector-all # options. AC_DEFUN([GGL_CHECK_STACK_PROTECTOR], [ ggl_check_stack_protector_save_CXXFLAGS="$CXXFLAGS" ggl_check_stack_protector_save_CFLAGS="$CFLAGS" AC_MSG_CHECKING([if -fstack-protector and -fstack-protector-all are supported.]) CXXFLAGS="$CXXFLAGS -fstack-protector" CFLAGS="$CFLAGS -fstack-protector" AC_COMPILE_IFELSE([AC_LANG_SOURCE([ int main() { return 0; } ])], [ggl_check_stack_protector_ok=yes], [ggl_check_stack_protector_ok=no]) CXXFLAGS="$ggl_check_stack_protector_save_CXXFLAGS -fstack-protector-all" CFLAGS="$ggl_check_stack_protector_save_CFLAGS -fstack-protector-all" AC_COMPILE_IFELSE([AC_LANG_SOURCE([ int main() { return 0; } ])], [ggl_check_stack_protector_all_ok=yes], [ggl_check_stack_protector_all_ok=no]) if test "x$ggl_check_stack_protector_ok" = "xyes" -a \ "x$ggl_check_stack_protector_all_ok" = "xyes"; then AC_MSG_RESULT([yes]) ifelse([$1], , :, [$1]) else AC_MSG_RESULT([no]) ifelse([$2], , :, [$2]) fi CXXFLAGS="$ggl_check_stack_protector_save_CXXFLAGS" CFLAGS="$ggl_check_stack_protector_save_CFLAGS" ]) # GGL_CHECK_STACK_PROTECTOR