Revision: 43782
          http://brlcad.svn.sourceforge.net/brlcad/?rev=43782&view=rev
Author:   starseeker
Date:     2011-03-08 18:05:07 +0000 (Tue, 08 Mar 2011)

Log Message:
-----------
Rework how CFLAGS are assigned in CMake.  Major changes are using build type 
specific flags to hold things instead of the catch-all, and changing the 
STRICT_FLAGS brlcad_config.h include to WARNING_FLAGS.  The way CMake sets 
things up, turning on the warnings but not strict just means you're expecting 
to see all the same output without failing.  Conditionalizing the bu.h 
undef/redefine logic on strict and not warning violated that principle, because 
format warnings would appear without strict being set but disappeared once it 
was set.  Conditionalize instead on whether we have the warnings - it's 
possible to be strict without the extra warnings, and not strict with the 
warnings, so the warnings are a better variable to key off of.  Need to adjust 
configure.ac in trunk to define WARNING_FLAGS instead of STRICT_FLAGS, or 
change how it behaves as well - probably simpler to rename variable and just go 
with existing behavior until cmake logic goes live.

Modified Paths:
--------------
    brlcad/branches/cmake/CMakeLists.txt
    brlcad/branches/cmake/configure.cmake.sh
    brlcad/branches/cmake/include/bu.h
    brlcad/branches/cmake/misc/CMake/CompilerFlags.cmake
    brlcad/branches/cmake/src/libpc/CMakeLists.txt
    brlcad/branches/cmake/src/mged/points/CMakeLists.txt

Modified: brlcad/branches/cmake/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/CMakeLists.txt        2011-03-08 15:51:01 UTC (rev 
43781)
+++ brlcad/branches/cmake/CMakeLists.txt        2011-03-08 18:05:07 UTC (rev 
43782)
@@ -610,15 +610,21 @@
        FILE(APPEND  ${CONFIG_H_FILE} "#define NO_DEBUG_CHECKING 1\n")
 ENDIF(NOT BRLCAD-ENABLE_RUNTIME_DEBUG)
 
+# Build with compiler warning flags 
+OPTION(BRLCAD-ENABLE_COMPILER_WARNINGS "Use compiler warning flags" ON)
+IF(BRLCAD-ENABLE_COMPILER_WARNINGS)
+       FILE(APPEND  ${CONFIG_H_FILE} "#define WARNING_FLAGS 1\n")
+ENDIF(BRLCAD-ENABLE_COMPILER_WARNINGS)
+MARK_AS_ADVANCED(BRLCAD-ENABLE_COMPILER_WARNINGS)
+
 # Enable/disable strict compiler settings - these are limited to libraries that
 # specifically inform the BRLCAD_ADDLIB macro they can be built with STRICT 
flags.
 OPTION(BRLCAD-ENABLE_STRICT "Use strict compiler settings on libraries that 
support them" ON)
 OPTION(BRLCAD-ENABLE_CXX_STRICT "Use strict compiler settings on cxx files in 
libraries that build with strict" OFF)
-if (BRLCAD-ENABLE_STRICT)
-MARK_AS_ADVANCED(BRLCAD-ENABLE_STRICT)
-MARK_AS_ADVANCED(BRLCAD-ENABLE_CXX_STRICT)
-       FILE(APPEND  ${CONFIG_H_FILE} "#define STRICT_FLAGS 1\n")
-endif (BRLCAD-ENABLE_STRICT)
+IF(BRLCAD-ENABLE_STRICT)
+       MARK_AS_ADVANCED(BRLCAD-ENABLE_STRICT)
+       MARK_AS_ADVANCED(BRLCAD-ENABLE_CXX_STRICT)
+ENDIF(BRLCAD-ENABLE_STRICT)
 
 # Build with O3 compiler optimization.  This should be on for release builds
 IF("${CMAKE_BUILD_TYPE}" MATCHES "Release")
@@ -631,10 +637,6 @@
        MESSAGE("Warning - build type is Release but optimization has been 
disabled")
 ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT 
BRLCAD-ENABLE_OPTIMIZED_BUILD)
 
-# Build with compiler warning flags 
-OPTION(BRLCAD-ENABLE_COMPILER_WARNINGS "Use compiler warning flags" ON)
-MARK_AS_ADVANCED(BRLCAD-ENABLE_COMPILER_WARNINGS)
-
 # By default, we don't want any error reports at all from src/other
 OPTION(BRLCAD-DISABLE_SRC_OTHER_WARN "Disable warnings for src/other" ON)
 MARK_AS_ADVANCED(BRLCAD-DISABLE_SRC_OTHER_WARN)
@@ -1023,12 +1025,8 @@
 # ***       Check for Compile Characteristics - Stage 7 of 9      ***
 # *******************************************************************
 
-SET(CMAKE_C_FLAGS "" CACHE STRING "compiler flags" FORCE)
-SET(CMAKE_CXX_FLAGS "" CACHE STRING "cxx compiler flags" FORCE)
 INCLUDE(${BRLCAD_CMAKE_DIR}/CompilerFlags.cmake)
 
-
-
 # *******************************************************************
 # ***          Check for System Services - Stage 8 of 9           ***
 # *******************************************************************
@@ -1041,14 +1039,10 @@
 
 # Before we finalize, set some specific global compiler flags
 IF(MSVC)
-       #SET(CMAKE_C_FLAGS ${CMAKE_C_FLAGS} -nologo -D_CRT_SECURE_NO_WARNINGS)
-       SET(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -nologo 
-D_CRT_SECURE_NO_WARNINGS)
        SET(CMAKE_EXE_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT} /NOLOGO)
        SET(CMAKE_SHARED_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT} 
/NOLOGO)
        SET(CMAKE_MODULE_LINKER_FLAGS_INIT ${CMAKE_EXE_LINKER_FLAGS_INIT} 
/NOLOGO)
 ENDIF(MSVC)
-SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${${CMAKE_PROJECT_NAME}_C_FLAGS}")
-SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${${CMAKE_PROJECT_NAME}_CXX_FLAGS}")
 
 # We've done the toplevel configure steps, now add the subdirectories
 ADD_SUBDIRECTORY(src)
@@ -1119,8 +1113,8 @@
                SET(CMAKE_ALL_C_FLAGS "${CMAKE_C_FLAGS}")
                SET(CMAKE_ALL_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
        ELSE(NOT BUILD_TYPE)
-               SET(CMAKE_ALL_C_FLAGS "${CMAKE_C_FLAGS} 
${CMAKE_C_FLAGS_${BUILD_TYPE}}")
-               SET(CMAKE_ALL_CXX_FLAGS "${CMAKE_CXX_FLAGS} 
${CMAKE_CXX_FLAGS_${BUILD_TYPE}}")
+               SET(CMAKE_ALL_C_FLAGS "${CMAKE_C_FLAGS_${BUILD_TYPE}}")
+               SET(CMAKE_ALL_CXX_FLAGS "${CMAKE_CXX_FLAGS_${BUILD_TYPE}}")
        ENDIF(NOT BUILD_TYPE)
 
        # Compiler settings - in this case there are additional "special case" 
flags that get

Modified: brlcad/branches/cmake/configure.cmake.sh
===================================================================
--- brlcad/branches/cmake/configure.cmake.sh    2011-03-08 15:51:01 UTC (rev 
43781)
+++ brlcad/branches/cmake/configure.cmake.sh    2011-03-08 18:05:07 UTC (rev 
43782)
@@ -16,6 +16,8 @@
                                  shift;;
      --disable-docs)              options="$options 
-DBRLCAD-BUILD_EXTRADOCS=OFF";
                                  shift;;
+     --disable-opengl)            options="$options 
-DBRLCAD-ENABLE_OPENGL=OFF";
+                                 shift;;
      --disable-strict)            options="$options 
-DBRLCAD-ENABLE_STRICT=OFF";
                                  shift;;
      --disable-warnings)          options="$options 
-DBRLCAD-ENABLE_WARNINGS=OFF";

Modified: brlcad/branches/cmake/include/bu.h
===================================================================
--- brlcad/branches/cmake/include/bu.h  2011-03-08 15:51:01 UTC (rev 43781)
+++ brlcad/branches/cmake/include/bu.h  2011-03-08 18:05:07 UTC (rev 43782)
@@ -152,12 +152,12 @@
 #define __BU_ATTR_NORETURN __attribute__ ((__noreturn__))
 
 /**
- *  If we're compiling strict, turn off "format string vs arguments"
+ *  If we're compiling with extran warnings, turn off "format string vs 
arguments"
  *  checks - BRL-CAD customizes the arguments to some of these
  *  function types (adding bu_vls support) and that is a problem with
  *  strict checking.
  */
-#if defined(STRICT_FLAGS)
+#if defined(WARNING_FLAGS)
 #  undef __BU_ATTR_FORMAT12
 #  undef __BU_ATTR_FORMAT23
 #  undef __BU_ATTR_NORETURN

Modified: brlcad/branches/cmake/misc/CMake/CompilerFlags.cmake
===================================================================
--- brlcad/branches/cmake/misc/CMake/CompilerFlags.cmake        2011-03-08 
15:51:01 UTC (rev 43781)
+++ brlcad/branches/cmake/misc/CMake/CompilerFlags.cmake        2011-03-08 
18:05:07 UTC (rev 43782)
@@ -1,6 +1,15 @@
 INCLUDE(CheckCCompilerFlag)
 INCLUDE(CheckCXXCompilerFlag)
 
+STRING(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_TYPE)
+IF(BUILD_TYPE)
+       SET(C_FLAGS CMAKE_C_FLAGS_${BUILD_TYPE})
+       SET(CXX_FLAGS CMAKE_CXX_FLAGS_${BUILD_TYPE})
+ELSE(BUILD_TYPE)
+       SET(C_FLAGS CMAKE_C_FLAGS)
+       SET(CXX_FLAGS CMAKE_CXX_FLAGS)
+ENDIF(BUILD_TYPE)
+
 MACRO(CHECK_C_FLAG flag)
        STRING(TOUPPER ${flag} UPPER_FLAG)
        STRING(REGEX REPLACE " " "_" UPPER_FLAG ${UPPER_FLAG})
@@ -8,7 +17,7 @@
        IF(${ARGC} LESS 2)
                CHECK_C_COMPILER_FLAG(-${flag} ${UPPER_FLAG}_COMPILER_FLAG)
                IF(${UPPER_FLAG}_COMPILER_FLAG)
-                       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -${flag}")
+                       SET(${C_FLAGS} "${${C_FLAGS}} -${flag}")
                ENDIF(${UPPER_FLAG}_COMPILER_FLAG)
        ELSE(${ARGC} LESS 2)
                IF(NOT ${ARGV1})
@@ -31,7 +40,7 @@
        IF(${ARGC} LESS 2)
                CHECK_CXX_COMPILER_FLAG(-${flag} ${UPPER_FLAG}_COMPILER_FLAG)
                IF(${UPPER_FLAG}_COMPILER_FLAG)
-                       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -${flag}")
+                       SET(${CXX_FLAGS} "${${CXX_FLAGS}} -${flag}")
                ENDIF(${UPPER_FLAG}_COMPILER_FLAG)
        ELSE(${ARGC} LESS 2)
                IF(NOT ${ARGV1})
@@ -57,8 +66,6 @@
        ENDIF(${UPPER_FLAG}_COMPILER_FLAG)
 ENDMACRO()
 
-SET(CMAKE_C_FLAGS "")
-SET(CMAKE_CXX_FLAGS "")
 # try to use -pipe to speed up the compiles
 CHECK_C_FLAG(pipe)
 CHECK_CXX_FLAG(pipe)
@@ -95,18 +102,8 @@
 # CHECK_C_FLAG(msse2)
 
 # Check for gnu c99 support
-CHECK_C_FLAG("std=gnu99" C99_FLAG)
-MARK_AS_ADVANCED(C99_FLAG)
+CHECK_C_FLAG("std=gnu99")
 
-# On some platforms (at least Gentoo linux, so far)
-# we'll need _XOPEN_SOURCE with std=c99.  Eventually,
-# we'll probably want to wrap this up with some
-# feature based testing - i.e. use it if we need it.
-IF(C99_FLAG)
-       CHECK_C_FLAG("D_XOPEN_SOURCE=600" XOPEN_DEFINE)
-       MARK_AS_ADVANCED(XOPEN_DEFINE)
-ENDIF(C99_FLAG)
-
 # 64bit compilation flags
 IF(BRLCAD-ENABLE_64BIT)
        IF(NOT 64BIT_FLAG AND NOT N64BIT_FLAG)
@@ -117,8 +114,8 @@
        CHECK_C_FLAG("mabi=64" 64BIT_FLAG)
        CHECK_C_FLAG(m64 64BIT_FLAG)
        CHECK_C_FLAG(q64 64BIT_FLAG)
-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${64BIT_FLAG}")
-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${64BIT_FLAG}")
+       SET(${C_FLAGS} "${${C_FLAGS}} ${64BIT_FLAG}")
+       SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${64BIT_FLAG}")
        IF(NOT 64BIT_FLAG)
                SET(N64BIT_FLAG 1)
        ENDIF(NOT 64BIT_FLAG)
@@ -134,33 +131,34 @@
                MESSAGE("Warning - profiling requested, but don't know how to 
profile with this compiler - disabling.")
                SET(BRLCAD-ENABLE_PROFILING OFF)
        ELSE(NOT PROFILE_FLAG)
-               SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PROFILE_FLAG}")
-               SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PROFILE_FLAG}")
+               SET(${C_FLAGS} "${${C_FLAGS}} ${PROFILE_FLAG}")
+               SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${PROFILE_FLAG}")
        ENDIF(NOT PROFILE_FLAG)
 ENDIF(BRLCAD-ENABLE_PROFILING)
 
 # Debugging flags
-IF(APPLE)
-       EXEC_PROGRAM(sw_vers ARGS -productVersion OUTPUT_VARIABLE 
MACOSX_VERSION)
-       IF(${MACOSX_VERSION} VERSION_LESS "10.5")
-               CHECK_C_FLAG(ggdb3 DEBUG_FLAG)
-       ELSE(${MACOSX_VERSION} VERSION_LESS "10.5")
-               #CHECK_C_COMPILER_FLAG silently eats gstabs+
-               SET(DEBUG_FLAG "-gstabs+")
-       ENDIF(${MACOSX_VERSION} VERSION_LESS "10.5")
-ELSE(APPLE)
-       CHECK_C_FLAG(ggdb3 DEBUG_FLAG)
-ENDIF(APPLE)
-CHECK_C_FLAG(g DEBUG_FLAG)
-CHECK_C_FLAG(debug DEBUG_FLAG)
-# add -D_FORTIFY_SOURCE=2 to flags. provides compile-time
-# best-practice error checking on certain libc functions
-# (e.g., memcpy), and provides run-time checks on buffer
-# lengths and memory regions.
-CHECK_C_FLAG_GATHER("D_FORTIFY_SOURCE=2" DEBUG_FLAG)
-SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} ${DEBUG_FLAG}")
-SET(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} ${DEBUG_FLAG}")
-MARK_AS_ADVANCED(DEBUG_FLAG)
+IF(BUILD_TYPE MATCHES "DEBUG")
+       IF(APPLE)
+               EXEC_PROGRAM(sw_vers ARGS -productVersion OUTPUT_VARIABLE 
MACOSX_VERSION)
+               IF(${MACOSX_VERSION} VERSION_LESS "10.5")
+                       CHECK_C_FLAG_GATHER(ggdb3 DEBUG_FLAG)
+               ELSE(${MACOSX_VERSION} VERSION_LESS "10.5")
+                       #CHECK_C_COMPILER_FLAG silently eats gstabs+
+                       SET(DEBUG_FLAG "${DEBUG_FLAG} -gstabs+")
+               ENDIF(${MACOSX_VERSION} VERSION_LESS "10.5")
+       ELSE(APPLE)
+               CHECK_C_FLAG_GATHER(ggdb3 DEBUG_FLAG)
+       ENDIF(APPLE)
+       CHECK_C_FLAG(debug DEBUG_FLAG)
+       # add -D_FORTIFY_SOURCE=2 to flags. provides compile-time
+       # best-practice error checking on certain libc functions
+       # (e.g., memcpy), and provides run-time checks on buffer
+       # lengths and memory regions.
+       CHECK_C_FLAG_GATHER("D_FORTIFY_SOURCE=2" DEBUG_FLAG)
+       SET(${C_FLAGS} "${${C_FLAGS}} ${DEBUG_FLAG}")
+       SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${DEBUG_FLAG}")
+       MARK_AS_ADVANCED(DEBUG_FLAG)
+ENDIF(BUILD_TYPE MATCHES "DEBUG")
 
 # -fast provokes a stack corruption in the shadow computations because
 # of strict aliasing getting enabled.  we _require_
@@ -177,8 +175,8 @@
        ELSE(NOT ${CMAKE_BUILD_TYPE} MATCHES "^Debug$" AND NOT 
BRLCAD-ENABLE_DEBUG)
                CHECK_C_FLAG_GATHER(fno-omit-frame-pointer OPTIMIZE_FLAGS)
        ENDIF(NOT ${CMAKE_BUILD_TYPE} MATCHES "^Debug$" AND NOT 
BRLCAD-ENABLE_DEBUG)
-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OPTIMIZE_FLAGS}")
-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OPTIMIZE_FLAGS}")
+       SET(${C_FLAGS} "${${C_FLAGS}} ${OPTIMIZE_FLAGS}")
+       SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${OPTIMIZE_FLAGS}")
 ENDIF(BRLCAD-ENABLE_OPTIMIZED_BUILD)
 MARK_AS_ADVANCED(OPTIMIZE_FLAGS)
 #need to strip out non-debug-compat flags after the fact based on build type, 
or do something else
@@ -203,15 +201,15 @@
        CHECK_C_FLAG_GATHER(Winline WARNING_FLAGS)
        # Need this for tcl.h
        CHECK_C_FLAG_GATHER(Wno-long-long WARNING_FLAGS) 
-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${WARNING_FLAGS}")
-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${WARNING_FLAGS}")
+       SET(${C_FLAGS} "${${C_FLAGS}} ${WARNING_FLAGS}")
+       SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${WARNING_FLAGS}")
 ENDIF(BRLCAD-ENABLE_COMPILER_WARNINGS OR BRLCAD-ENABLE_STRICT)
 MARK_AS_ADVANCED(WARNING_FLAGS)
 
 IF(BRLCAD-ENABLE_STRICT)
        CHECK_C_FLAG_GATHER(Werror STRICT_FLAGS) 
-       SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${STRICT_FLAGS}")
-       SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${STRICT_FLAGS}")
+       SET(${C_FLAGS} "${${C_FLAGS}} ${STRICT_FLAGS}")
+       SET(${CXX_FLAGS} "${${CXX_FLAGS}} ${STRICT_FLAGS}")
 ENDIF(BRLCAD-ENABLE_STRICT)
 MARK_AS_ADVANCED(STRICT_FLAGS)
 

Modified: brlcad/branches/cmake/src/libpc/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/libpc/CMakeLists.txt      2011-03-08 15:51:01 UTC 
(rev 43781)
+++ brlcad/branches/cmake/src/libpc/CMakeLists.txt      2011-03-08 18:05:07 UTC 
(rev 43782)
@@ -6,7 +6,12 @@
 
 # No point in warnings here, we can't do anything about
 # it until the boost issue is handled
-SET(CMAKE_CXX_FLAGS "-w")
+STRING(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_TYPE)
+IF(BUILD_TYPE)
+       SET(CMAKE_CXX_FLAGS_${BUILD_TYPE} "-w")
+ELSE(BUILD_TYPE)
+       SET(CMAKE_CXX_FLAGS "-w")
+ENDIF(BUILD_TYPE)
 
 include_directories(
        ${CMAKE_SOURCE_DIR}/src/other

Modified: brlcad/branches/cmake/src/mged/points/CMakeLists.txt
===================================================================
--- brlcad/branches/cmake/src/mged/points/CMakeLists.txt        2011-03-08 
15:51:01 UTC (rev 43781)
+++ brlcad/branches/cmake/src/mged/points/CMakeLists.txt        2011-03-08 
18:05:07 UTC (rev 43782)
@@ -3,7 +3,12 @@
 # so for this one directory, go vanilla until we can get a lex/yacc 
 # setup that reliably produces code that will work in strict 
 # environments
-SET(CMAKE_C_FLAGS "")
+STRING(TOUPPER "${CMAKE_BUILD_TYPE}" BUILD_TYPE)
+IF(BUILD_TYPE)
+       SET(CMAKE_C_FLAGS_${BUILD_TYPE} "")
+ELSE(BUILD_TYPE)
+       SET(CMAKE_C_FLAGS "")
+ENDIF(BUILD_TYPE)
 
 include_directories(
   ${CMAKE_CURRENT_SOURCE_DIR}


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

------------------------------------------------------------------------------
What You Don't Know About Data Connectivity CAN Hurt You
This paper provides an overview of data connectivity, details
its effect on application quality, and explores various alternative
solutions. http://p.sf.net/sfu/progress-d2d
_______________________________________________
BRL-CAD Source Commits mailing list
brlcad-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to