Revision: 70275
          http://sourceforge.net/p/brlcad/code/70275
Author:   starseeker
Date:     2017-09-13 23:26:14 +0000 (Wed, 13 Sep 2017)
Log Message:
-----------
Consolidate BRLCAD_CompilerFlags.cmake into the toplevel CMakeLists.txt file.

Modified Paths:
--------------
    brlcad/trunk/CMakeLists.txt
    brlcad/trunk/misc/CMake/CMakeLists.txt

Removed Paths:
-------------
    brlcad/trunk/misc/CMake/BRLCAD_CompilerFlags.cmake

Modified: brlcad/trunk/CMakeLists.txt
===================================================================
--- brlcad/trunk/CMakeLists.txt 2017-09-13 23:21:46 UTC (rev 70274)
+++ brlcad/trunk/CMakeLists.txt 2017-09-13 23:26:14 UTC (rev 70275)
@@ -1903,12 +1903,233 @@
 set(CMAKE_REQUIRED_FLAGS ${CMAKE_REQUIRED_FLAGS_BAK})
 
 # ******************************************************************* #
+# The following tests are almost entirely for gcc-style flags.
+if(NOT MSVC)
+  # -ffast-math provokes a stack corruption in the shadow computations because
+  # of strict aliasing getting enabled.  we _require_
+  # -fno-strict-aliasing until someone changes how lists are managed.
+  # -fast-math results in non-IEEE floating point math among a handful
+  # of other optimizations that cause substantial error in ray tracing
+  # and tessellation (and probably more).
+  CHECK_C_FLAG(O3 GROUPS OPTIMIZE_C_FLAGS)
+  # CHECK_C_FLAG(Ofast GROUPS OPTIMIZE_C_FLAGS)
+  # CHECK_C_FLAG(march=native GROUPS OPTIMIZE_C_FLAGS)
+  CHECK_C_FLAG(fstrength-reduce GROUPS OPTIMIZE_C_FLAGS)
+  CHECK_C_FLAG(fexpensive-optimizations GROUPS OPTIMIZE_C_FLAGS)
+  CHECK_C_FLAG(finline-functions GROUPS OPTIMIZE_C_FLAGS)
+  CHECK_C_FLAG("finline-limit=10000 --param inline-unit-growth=300 --param 
large-function-growth=300" GROUPS OPTIMIZE_C_FLAGS)
+  CHECK_CXX_FLAG(O3 GROUPS OPTIMIZE_CXX_FLAGS)
+  # CHECK_CXX_FLAG(Ofast GROUPS OPTIMIZE_CXX_FLAGS)
+  # CHECK_CXX_FLAG(march=native GROUPS OPTIMIZE_CXX_FLAGS)
+  CHECK_CXX_FLAG(fstrength-reduce GROUPS OPTIMIZE_CXX_FLAGS)
+  CHECK_CXX_FLAG(fexpensive-optimizations GROUPS OPTIMIZE_CXX_FLAGS)
+  CHECK_CXX_FLAG(finline-functions GROUPS OPTIMIZE_CXX_FLAGS)
+  CHECK_CXX_FLAG("finline-limit=10000 --param inline-unit-growth=300 --param 
large-function-growth=300" GROUPS OPTIMIZE_CXX_FLAGS)
 
-if(NOT MSVC)
-  # We could include this, but these tests are almost entirely for
-  # gcc-style flags.  This file is intentionally included after we
-  # wipe out the various FLAGS variables.
-  include(BRLCAD_CompilerFlags)
+  # FIXME: need to conditionally set gcc-ar/gcc-ranlib if we using -flto
+  #######
+  # CHECK_C_FLAG(flto GROUPS OPTIMIZE_C_FLAGS)
+  # CHECK_CXX_FLAG(flto GROUPS OPTIMIZE_CXX_FLAGS)
+  # SET(CMAKE_AR "gcc-ar" CACHE FILEPATH "Archiver" FORCE)
+  # SET(CMAKE_RANLIB "gcc-ranlib" CACHE FILEPATH "Ranlib" FORCE)
+  if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+    if(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
+      CHECK_C_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
+      CHECK_CXX_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
+    else(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
+      CHECK_C_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
+      CHECK_CXX_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
+    endif(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
+  endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+
+  if(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
+    if(CMAKE_CONFIGURATION_TYPES)
+      set(opt_conf_list "Release")
+    else(CMAKE_CONFIGURATION_TYPES)
+      if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+       set(opt_conf_list "ALL")
+      endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+    endif(CMAKE_CONFIGURATION_TYPES)
+  else(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
+    if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+      set(opt_conf_list "ALL")
+    endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
+  endif(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
+  if(opt_conf_list)
+    ADD_NEW_FLAG(C OPTIMIZE_C_FLAGS "${opt_conf_list}")
+    ADD_NEW_FLAG(CXX OPTIMIZE_CXX_FLAGS "${opt_conf_list}")
+  endif(opt_conf_list)
+
+  # enable stack protection for unoptimized debug builds.  this is
+  # intended to help make it easier to identify problematic code but
+  # only when compiling unoptimized (because the extra barrier checks
+  # can affect the memory footprint and runtime performance.
+  if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
+    CHECK_C_FLAG(fstack-protector-all)
+    CHECK_CXX_FLAG(fstack-protector-all)
+    # checking both in case compiling c/c++ with different compilers
+    CHECK_C_FLAG(qstackprotect)
+    CHECK_CXX_FLAG(qstackprotect)
+  endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
+
+  # enable memory error detector AddressSanitizer (see
+  # https://code.google.com/p/address-sanitizer/ for more info.)
+  if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_ADDRESS_SANITIZER)
+    CHECK_C_FLAG(fsanitize=address)
+    CHECK_C_FLAG(fno-omit-frame-pointer)
+    CHECK_CXX_FLAG(fsanitize=address)
+    CHECK_CXX_FLAG(fno-omit-frame-pointer)
+  endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_ADDRESS_SANITIZER)
+
+  # enable data race detector  ThreadSanitizer (see
+  # https://code.google.com/p/thread-sanitizer/ for more info.)
+  if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_THREAD_SANITIZER)
+    CHECK_C_FLAG(fsanitize=thread)
+    CHECK_CXX_FLAG(fsanitize=thread)
+  endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_THREAD_SANITIZER)
+
+  # verbose warning flags.  we intentionally try to turn on as many as
+  # possible.  adding more is encouraged (as long as all issues are
+  # fixed first).
+  if(BRLCAD_ENABLE_COMPILER_WARNINGS OR BRLCAD_ENABLE_STRICT)
+    # also of interest:
+    # -Wunreachable-code -Wmissing-declarations -Wmissing-prototypes 
-Wstrict-prototypes -ansi
+    # -Wformat=2 (after bu_fopen_uniq() is obsolete)
+    CHECK_C_FLAG(pedantic)
+    CHECK_CXX_FLAG(pedantic)
+
+    #Added to make llvm happy on FreeBSD, but a good idea anyway
+    CHECK_C_FLAG(pedantic-errors)
+    #CHECK_CXX_FLAG(pedantic-errors)  #This line makes poissonrecon break, so 
disable for now
+
+    # this catches a lot, it's good
+    CHECK_C_FLAG(Wall)
+    CHECK_CXX_FLAG(Wall)
+
+    # this catches a lot more, also good
+    CHECK_C_FLAG(Wextra)
+    CHECK_CXX_FLAG(Wextra)
+
+    # make sure our preprocessor logic references defined symbol names
+    CHECK_C_FLAG(Wundef)
+    CHECK_CXX_FLAG(Wundef)
+
+    # this makes sure we don't try to compare floating point exactly
+    CHECK_C_FLAG(Wfloat-equal)
+    CHECK_CXX_FLAG(Wfloat-equal)
+
+    # make sure we're using unambiguous symbol names, no shadowing
+    CHECK_C_FLAG(Wshadow)
+    CHECK_CXX_FLAG(Wshadow)
+
+    # make sure we're not dangerously casting return types. C-only for
+    # gcc, but maybe not for clang or others.
+    CHECK_C_FLAG(Wbad-function-cast)
+    CHECK_CXX_FLAG(Wbad-function-cast)
+
+    # this makes sure we don't declare variables mid-scope, helps build on 
Windows
+    CHECK_C_FLAG(Wdeclaration-after-statement)
+    CHECK_CXX_FLAG(Wdeclaration-after-statement)
+
+    # C-only: this makes sure C sources will compile as C++ code
+    CHECK_C_FLAG(Wc++-compat)
+
+    # FIXME: this one is a lot of work, a work-in-progress, but good to have 
eventually
+    # this makes sure prototypes are properly declared, no k&r and no assuming 
() means (void)
+    # CHECK_C_FLAG(Wstrict-prototypes)
+
+    # FIXME: shouldn't be throwing away const, should be using it more.  ton 
of work.
+    # this reports where we throw away const
+    #  CHECK_C_FLAG(Wcast-qual)
+    #  CHECK_CXX_FLAG(Wcast-qual)
+
+    # check for redundant declarations
+    #  CHECK_C_FLAG(Wredundant-decls)
+    #  CHECK_CXX_FLAG(Wredundant-decls)
+
+    # want C inline warnings, but not for c++.  versions of g++ (circa
+    # 4.7) spew unquellable bogus warnings on default constructors that
+    # we don't have access to (e.g., in opennurbs and boost), so turn
+    # them off
+    CHECK_C_FLAG(Winline)
+    CHECK_CXX_FLAG(Wno-inline)
+
+    # this makes sure we don't warn about using long long.  really, it's okay.
+    CHECK_C_FLAG(Wno-long-long)
+    CHECK_CXX_FLAG(Wno-long-long)
+
+    # this is for X11 headers, they use variadic macros
+    CHECK_C_FLAG(Wno-variadic-macros)
+    CHECK_CXX_FLAG(Wno-variadic-macros)
+
+    # this is used to check Doxygen comment syntax
+    CHECK_C_FLAG(Wdocumentation)
+    CHECK_CXX_FLAG(Wdocumentation)
+
+  endif(BRLCAD_ENABLE_COMPILER_WARNINGS OR BRLCAD_ENABLE_STRICT)
+
+  if(BRLCAD_ENABLE_COVERAGE)
+    CHECK_C_FLAG(ftest-coverage)
+    CHECK_CXX_FLAG(ftest-coverage)
+    if(FTEST_COVERAGE_C_FLAG_FOUND)
+      SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
+      SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
+      SET(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} --coverage 
-fprofile-arcs")
+      SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} --coverage 
-fprofile-arcs")
+    else(FTEST_COVERAGE_C_FLAG_FOUND)
+      message(SEND_ERROR "Building with coverage is not supported by BRL-CAD 
on this platform.")
+    endif(FTEST_COVERAGE_C_FLAG_FOUND)
+  endif(BRLCAD_ENABLE_COVERAGE)
+
+  if(BRLCAD_ENABLE_STRICT)
+    # If we're going strict, suppress C11 warnings about isnan due to
+    # clang issue:  https://llvm.org/bugs/show_bug.cgi?id=17788
+    CHECK_C_FLAG(Wno-c11-extensions)
+    CHECK_CXX_FLAG(Wno-c11-extensions)
+
+    # Add the flag that actually turns warnings into errors
+    CHECK_C_FLAG(Werror)
+    CHECK_CXX_FLAG(Werror)
+  endif(BRLCAD_ENABLE_STRICT)
+
+  # End detection of flags intended for BRL-CAD use.  Make sure all variables 
have
+  # their appropriate values written to the cache - otherwise, DiffCache will 
see
+  # differences and update the COUNT file.
+  set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "C Compiler flags used by 
all targets" FORCE)
+  set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler flags 
used by all targets" FORCE)
+  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING 
"Linker flags used by all shared library targets" FORCE)
+  set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Linker 
flags used by all exe targets" FORCE)
+  mark_as_advanced(CMAKE_C_FLAGS)
+  mark_as_advanced(CMAKE_CXX_FLAGS)
+  mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS)
+  mark_as_advanced(CMAKE_EXE_LINKER_FLAGS)
+  if(CMAKE_BUILD_TYPE)
+    string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_UPPER)
+    set(CMAKE_C_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_C_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "C Compiler flags used for 
${CMAKE_BUILD_TYPE} builds" FORCE)
+    set(CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "C++ Compiler flags used 
for ${CMAKE_BUILD_TYPE} builds" FORCE)
+    set(CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "Linker flags 
used for ${CMAKE_BUILD_TYPE} builds" FORCE)
+    set(CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "Exe linker flags 
used for ${CMAKE_BUILD_TYPE} builds" FORCE)
+    mark_as_advanced(CMAKE_C_FLAGS_${BUILD_TYPE_UPPER})
+    mark_as_advanced(CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER})
+    mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER})
+    mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER})
+  endif(CMAKE_BUILD_TYPE)
+
+  foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
+    string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
+    set(CMAKE_C_FLAGS_${CFG_TYPE_UPPER} "${CMAKE_C_FLAGS_${CFG_TYPE_UPPER}}" 
CACHE STRING "C Compiler flags used for ${CFG_TYPE} builds" FORCE)
+    set(CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER} 
"${CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER}}" CACHE STRING "C++ Compiler flags used 
for ${CFG_TYPE} builds" FORCE)
+    set(CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER} 
"${CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER}}" CACHE STRING "Linker flags 
used for ${CFG_TYPE} builds" FORCE)
+    set(CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER} 
"${CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER}}" CACHE STRING "Exe linker flags 
used for ${CFG_TYPE} builds" FORCE)
+    mark_as_advanced(CMAKE_C_FLAGS_${CFG_TYPE_UPPER})
+    mark_as_advanced(CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER})
+    mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER})
+    mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER})
+  endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
+
+  # TODO - figure out if this should be integrated above
+  CHECK_COMPILER_FLAG(C "-Wunused-const-variable" 
HAVE_C_WUNUSED_CONST_VARIABLE)
+
 endif(NOT MSVC)
 
 

Deleted: brlcad/trunk/misc/CMake/BRLCAD_CompilerFlags.cmake
===================================================================
--- brlcad/trunk/misc/CMake/BRLCAD_CompilerFlags.cmake  2017-09-13 23:21:46 UTC 
(rev 70274)
+++ brlcad/trunk/misc/CMake/BRLCAD_CompilerFlags.cmake  2017-09-13 23:26:14 UTC 
(rev 70275)
@@ -1,270 +0,0 @@
-#      B R L C A D _ C O M P I L E R F L A G S . C M A K E
-# BRL-CAD
-#
-# Copyright (c) 2011-2016 United States Government as represented by
-# the U.S. Army Research Laboratory.
-#
-# Redistribution and use in source and binary forms, with or without
-# modification, are permitted provided that the following conditions
-# are met:
-#
-# 1. Redistributions of source code must retain the above copyright
-# notice, this list of conditions and the following disclaimer.
-#
-# 2. Redistributions in binary form must reproduce the above
-# copyright notice, this list of conditions and the following
-# disclaimer in the documentation and/or other materials provided
-# with the distribution.
-#
-# 3. The name of the author may not be used to endorse or promote
-# products derived from this software without specific prior written
-# permission.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
-# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
-# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
-# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-#
-###
-
-# -ffast-math provokes a stack corruption in the shadow computations because
-# of strict aliasing getting enabled.  we _require_
-# -fno-strict-aliasing until someone changes how lists are managed.
-# -fast-math results in non-IEEE floating point math among a handful
-# of other optimizations that cause substantial error in ray tracing
-# and tessellation (and probably more).
-CHECK_C_FLAG(O3 GROUPS OPTIMIZE_C_FLAGS)
-# CHECK_C_FLAG(Ofast GROUPS OPTIMIZE_C_FLAGS)
-# CHECK_C_FLAG(march=native GROUPS OPTIMIZE_C_FLAGS)
-CHECK_C_FLAG(fstrength-reduce GROUPS OPTIMIZE_C_FLAGS)
-CHECK_C_FLAG(fexpensive-optimizations GROUPS OPTIMIZE_C_FLAGS)
-CHECK_C_FLAG(finline-functions GROUPS OPTIMIZE_C_FLAGS)
-CHECK_C_FLAG("finline-limit=10000 --param inline-unit-growth=300 --param 
large-function-growth=300" GROUPS OPTIMIZE_C_FLAGS)
-CHECK_CXX_FLAG(O3 GROUPS OPTIMIZE_CXX_FLAGS)
-# CHECK_CXX_FLAG(Ofast GROUPS OPTIMIZE_CXX_FLAGS)
-# CHECK_CXX_FLAG(march=native GROUPS OPTIMIZE_CXX_FLAGS)
-CHECK_CXX_FLAG(fstrength-reduce GROUPS OPTIMIZE_CXX_FLAGS)
-CHECK_CXX_FLAG(fexpensive-optimizations GROUPS OPTIMIZE_CXX_FLAGS)
-CHECK_CXX_FLAG(finline-functions GROUPS OPTIMIZE_CXX_FLAGS)
-CHECK_CXX_FLAG("finline-limit=10000 --param inline-unit-growth=300 --param 
large-function-growth=300" GROUPS OPTIMIZE_CXX_FLAGS)
-
-# FIXME: need to conditionally set gcc-ar/gcc-ranlib if we using -flto
-#######
-# CHECK_C_FLAG(flto GROUPS OPTIMIZE_C_FLAGS)
-# CHECK_CXX_FLAG(flto GROUPS OPTIMIZE_CXX_FLAGS)
-# SET(CMAKE_AR "gcc-ar" CACHE FILEPATH "Archiver" FORCE)
-# SET(CMAKE_RANLIB "gcc-ranlib" CACHE FILEPATH "Ranlib" FORCE)
-
-if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-  if(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
-    CHECK_C_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
-    CHECK_CXX_FLAG(fomit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
-  else(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
-    CHECK_C_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_C_FLAGS)
-    CHECK_CXX_FLAG(fno-omit-frame-pointer GROUPS OPTIMIZE_CXX_FLAGS)
-  endif(NOT BRLCAD_ENABLE_PROFILING AND NOT BRLCAD_FLAGS_DEBUG)
-endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-
-if(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
-  if(CMAKE_CONFIGURATION_TYPES)
-    set(opt_conf_list "Release")
-  else(CMAKE_CONFIGURATION_TYPES)
-    if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-      set(opt_conf_list "ALL")
-    endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-  endif(CMAKE_CONFIGURATION_TYPES)
-else(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
-  if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-    set(opt_conf_list "ALL")
-  endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "ON")
-endif(${BRLCAD_FLAGS_OPTIMIZATION} MATCHES "AUTO")
-if(opt_conf_list)
-  ADD_NEW_FLAG(C OPTIMIZE_C_FLAGS "${opt_conf_list}")
-  ADD_NEW_FLAG(CXX OPTIMIZE_CXX_FLAGS "${opt_conf_list}")
-endif(opt_conf_list)
-
-# enable stack protection for unoptimized debug builds.  this is
-# intended to help make it easier to identify problematic code but
-# only when compiling unoptimized (because the extra barrier checks
-# can affect the memory footprint and runtime performance.
-if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
-  CHECK_C_FLAG(fstack-protector-all)
-  CHECK_CXX_FLAG(fstack-protector-all)
-  # checking both in case compiling c/c++ with different compilers
-  CHECK_C_FLAG(qstackprotect)
-  CHECK_CXX_FLAG(qstackprotect)
-endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG)
-
-# enable memory error detector AddressSanitizer (see
-# https://code.google.com/p/address-sanitizer/ for more info.)
-if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_ADDRESS_SANITIZER)
-  CHECK_C_FLAG(fsanitize=address)
-  CHECK_C_FLAG(fno-omit-frame-pointer)
-  CHECK_CXX_FLAG(fsanitize=address)
-  CHECK_CXX_FLAG(fno-omit-frame-pointer)
-endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_ADDRESS_SANITIZER)
-
-# enable data race detector  ThreadSanitizer (see
-# https://code.google.com/p/thread-sanitizer/ for more info.)
-if(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_THREAD_SANITIZER)
-  CHECK_C_FLAG(fsanitize=thread)
-  CHECK_CXX_FLAG(fsanitize=thread)
-endif(${BRLCAD_OPTIMIZED_BUILD} MATCHES "OFF" AND BRLCAD_FLAGS_DEBUG AND 
BRLCAD_THREAD_SANITIZER)
-
-
-# verbose warning flags.  we intentionally try to turn on as many as
-# possible.  adding more is encouraged (as long as all issues are
-# fixed first).
-if(BRLCAD_ENABLE_COMPILER_WARNINGS OR BRLCAD_ENABLE_STRICT)
-  # also of interest:
-  # -Wunreachable-code -Wmissing-declarations -Wmissing-prototypes 
-Wstrict-prototypes -ansi
-  # -Wformat=2 (after bu_fopen_uniq() is obsolete)
-  CHECK_C_FLAG(pedantic)
-  CHECK_CXX_FLAG(pedantic)
-
-  #Added to make llvm happy on FreeBSD, but a good idea anyway
-  CHECK_C_FLAG(pedantic-errors)
-  #CHECK_CXX_FLAG(pedantic-errors)  #This line makes poissonrecon break, so 
disable for now
-
-  # this catches a lot, it's good
-  CHECK_C_FLAG(Wall)
-  CHECK_CXX_FLAG(Wall)
-
-  # this catches a lot more, also good
-  CHECK_C_FLAG(Wextra)
-  CHECK_CXX_FLAG(Wextra)
-
-  # make sure our preprocessor logic references defined symbol names
-  CHECK_C_FLAG(Wundef)
-  CHECK_CXX_FLAG(Wundef)
-
-  # this makes sure we don't try to compare floating point exactly
-  CHECK_C_FLAG(Wfloat-equal)
-  CHECK_CXX_FLAG(Wfloat-equal)
-
-  # make sure we're using unambiguous symbol names, no shadowing
-  CHECK_C_FLAG(Wshadow)
-  CHECK_CXX_FLAG(Wshadow)
-
-  # make sure we're not dangerously casting return types. C-only for
-  # gcc, but maybe not for clang or others.
-  CHECK_C_FLAG(Wbad-function-cast)
-  CHECK_CXX_FLAG(Wbad-function-cast)
-
-  # this makes sure we don't declare variables mid-scope, helps build on 
Windows
-  CHECK_C_FLAG(Wdeclaration-after-statement)
-  CHECK_CXX_FLAG(Wdeclaration-after-statement)
-
-  # C-only: this makes sure C sources will compile as C++ code
-  CHECK_C_FLAG(Wc++-compat)
-
-  # FIXME: this one is a lot of work, a work-in-progress, but good to have 
eventually
-  # this makes sure prototypes are properly declared, no k&r and no assuming 
() means (void)
-  # CHECK_C_FLAG(Wstrict-prototypes)
-
-  # FIXME: shouldn't be throwing away const, should be using it more.  ton of 
work.
-  # this reports where we throw away const
-  #  CHECK_C_FLAG(Wcast-qual)
-  #  CHECK_CXX_FLAG(Wcast-qual)
-
-  # check for redundant declarations
-  #  CHECK_C_FLAG(Wredundant-decls)
-  #  CHECK_CXX_FLAG(Wredundant-decls)
-
-  # want C inline warnings, but not for c++.  versions of g++ (circa
-  # 4.7) spew unquellable bogus warnings on default constructors that
-  # we don't have access to (e.g., in opennurbs and boost), so turn
-  # them off
-  CHECK_C_FLAG(Winline)
-  CHECK_CXX_FLAG(Wno-inline)
-
-  # this makes sure we don't warn about using long long.  really, it's okay.
-  CHECK_C_FLAG(Wno-long-long)
-  CHECK_CXX_FLAG(Wno-long-long)
-
-  # this is for X11 headers, they use variadic macros
-  CHECK_C_FLAG(Wno-variadic-macros)
-  CHECK_CXX_FLAG(Wno-variadic-macros)
-
-  # this is used to check Doxygen comment syntax
-  CHECK_C_FLAG(Wdocumentation)
-  CHECK_CXX_FLAG(Wdocumentation)
-
-endif(BRLCAD_ENABLE_COMPILER_WARNINGS OR BRLCAD_ENABLE_STRICT)
-
-if(BRLCAD_ENABLE_COVERAGE)
-  CHECK_C_FLAG(ftest-coverage)
-  CHECK_CXX_FLAG(ftest-coverage)
-  if(FTEST_COVERAGE_C_FLAG_FOUND)
-    SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} --coverage")
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --coverage")
-    SET(CMAKE_SHARED_LINKER_FLAGS  "${CMAKE_SHARED_LINKER_FLAGS} --coverage 
-fprofile-arcs")
-    SET(CMAKE_EXE_LINKER_FLAGS  "${CMAKE_EXE_LINKER_FLAGS} --coverage 
-fprofile-arcs")
-  else(FTEST_COVERAGE_C_FLAG_FOUND)
-    message(SEND_ERROR "Building with coverage is not supported by BRL-CAD on 
this platform.")
-  endif(FTEST_COVERAGE_C_FLAG_FOUND)
-endif(BRLCAD_ENABLE_COVERAGE)
-
-if(BRLCAD_ENABLE_STRICT)
-  # If we're going strict, suppress C11 warnings about isnan due to
-  # clang issue:  https://llvm.org/bugs/show_bug.cgi?id=17788
-  CHECK_C_FLAG(Wno-c11-extensions)
-  CHECK_CXX_FLAG(Wno-c11-extensions)
-
-  # Add the flag that actually turns warnings into errors
-  CHECK_C_FLAG(Werror)
-  CHECK_CXX_FLAG(Werror)
-endif(BRLCAD_ENABLE_STRICT)
-
-# End detection of flags intended for BRL-CAD use.  Make sure all variables 
have
-# their appropriate values written to the cache - otherwise, DiffCache will see
-# differences and update the COUNT file.
-set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "C Compiler flags used by 
all targets" FORCE)
-set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "C++ Compiler flags used 
by all targets" FORCE)
-set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS}" CACHE STRING 
"Linker flags used by all shared library targets" FORCE)
-set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS}" CACHE STRING "Linker 
flags used by all exe targets" FORCE)
-mark_as_advanced(CMAKE_C_FLAGS)
-mark_as_advanced(CMAKE_CXX_FLAGS)
-mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS)
-mark_as_advanced(CMAKE_EXE_LINKER_FLAGS)
-if(CMAKE_BUILD_TYPE)
-  string(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_TYPE_UPPER)
-  set(CMAKE_C_FLAGS_${BUILD_TYPE_UPPER} "${CMAKE_C_FLAGS_${BUILD_TYPE_UPPER}}" 
CACHE STRING "C Compiler flags used for ${CMAKE_BUILD_TYPE} builds" FORCE)
-  set(CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "C++ Compiler flags used 
for ${CMAKE_BUILD_TYPE} builds" FORCE)
-  set(CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "Linker flags 
used for ${CMAKE_BUILD_TYPE} builds" FORCE)
-  set(CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER} 
"${CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER}}" CACHE STRING "Exe linker flags 
used for ${CMAKE_BUILD_TYPE} builds" FORCE)
-  mark_as_advanced(CMAKE_C_FLAGS_${BUILD_TYPE_UPPER})
-  mark_as_advanced(CMAKE_CXX_FLAGS_${BUILD_TYPE_UPPER})
-  mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS_${BUILD_TYPE_UPPER})
-  mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_${BUILD_TYPE_UPPER})
-endif(CMAKE_BUILD_TYPE)
-
-foreach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
-  string(TOUPPER "${CFG_TYPE}" CFG_TYPE_UPPER)
-  set(CMAKE_C_FLAGS_${CFG_TYPE_UPPER} "${CMAKE_C_FLAGS_${CFG_TYPE_UPPER}}" 
CACHE STRING "C Compiler flags used for ${CFG_TYPE} builds" FORCE)
-  set(CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER} "${CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER}}" 
CACHE STRING "C++ Compiler flags used for ${CFG_TYPE} builds" FORCE)
-  set(CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER} 
"${CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER}}" CACHE STRING "Linker flags 
used for ${CFG_TYPE} builds" FORCE)
-  set(CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER} 
"${CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER}}" CACHE STRING "Exe linker flags 
used for ${CFG_TYPE} builds" FORCE)
-  mark_as_advanced(CMAKE_C_FLAGS_${CFG_TYPE_UPPER})
-  mark_as_advanced(CMAKE_CXX_FLAGS_${CFG_TYPE_UPPER})
-  mark_as_advanced(CMAKE_SHARED_LINKER_FLAGS_${CFG_TYPE_UPPER})
-  mark_as_advanced(CMAKE_EXE_LINKER_FLAGS_${CFG_TYPE_UPPER})
-endforeach(CFG_TYPE ${CMAKE_CONFIGURATION_TYPES})
-
-# TODO - figure out if this should be integrated above
-CHECK_COMPILER_FLAG(C "-Wunused-const-variable" HAVE_C_WUNUSED_CONST_VARIABLE)
-
-
-# Local Variables:
-# tab-width: 8
-# mode: cmake
-# indent-tabs-mode: t
-# End:
-# ex: shiftwidth=2 tabstop=8

Modified: brlcad/trunk/misc/CMake/CMakeLists.txt
===================================================================
--- brlcad/trunk/misc/CMake/CMakeLists.txt      2017-09-13 23:21:46 UTC (rev 
70274)
+++ brlcad/trunk/misc/CMake/CMakeLists.txt      2017-09-13 23:26:14 UTC (rev 
70275)
@@ -1,7 +1,6 @@
 set(cmake_ignore_files
   BRLCAD_CPackOptions.cmake.in
   BRLCAD_CheckFunctions.cmake
-  BRLCAD_CompilerFlags.cmake
   BRLCAD_Options.cmake
   BRLCAD_Summary.cmake
   BRLCAD_Targets.cmake

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to