Revision: 45966
          http://brlcad.svn.sourceforge.net/brlcad/?rev=45966&view=rev
Author:   starseeker
Date:     2011-08-13 06:29:47 +0000 (Sat, 13 Aug 2011)

Log Message:
-----------
A pattern emerges, time for a macro.  CMAKE_BUILD_TYPE aware options.

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

Modified: brlcad/trunk/CMakeLists.txt
===================================================================
--- brlcad/trunk/CMakeLists.txt 2011-08-13 06:14:29 UTC (rev 45965)
+++ brlcad/trunk/CMakeLists.txt 2011-08-13 06:29:47 UTC (rev 45966)
@@ -726,31 +726,8 @@
 ENDIF(NOT BRLCAD-ENABLE_RUNTIME_DEBUG)
 
 # Enable debug flags during compilation
-STRING(LENGTH "${BRLCAD_FLAGS_DEBUG}" BRLCAD_FLAGS_DEBUG_SET)
-IF(NOT BRLCAD_FLAGS_DEBUG_SET)
-       SET(BRLCAD_FLAGS_DEBUG "Auto" CACHE STRING "Use debug compiler 
settings" FORCE)
-ENDIF(NOT BRLCAD_FLAGS_DEBUG_SET)
-set_property(CACHE BRLCAD_FLAGS_DEBUG PROPERTY STRINGS Auto "ON" "OFF")
-# If the "parent" setting isn't Auto, do what it says
-IF(NOT ${BRLCAD_FLAGS_DEBUG} STREQUAL "Auto")
-       SET(BRLCAD_DEBUG_BUILD ${BRLCAD_FLAGS_DEBUG})
-ENDIF(NOT ${BRLCAD_FLAGS_DEBUG} STREQUAL "Auto")
-# If we we don't understand the build type and have an Auto setting for the
-# optimization flags, leave them off
-IF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT "${CMAKE_BUILD_TYPE}" 
MATCHES "Debug")
-       IF(NOT ${BRLCAD_FLAGS_DEBUG} STREQUAL "Auto")
-               SET(BRLCAD_DEBUG_BUILD OFF)
-       ENDIF(NOT ${BRLCAD_FLAGS_DEBUG} STREQUAL "Auto")
-ENDIF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT 
"${CMAKE_BUILD_TYPE}" MATCHES "Debug")
-# If we DO understand the build type and have Auto, be smart
-IF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND ${BRLCAD_FLAGS_DEBUG} STREQUAL 
"Auto")
-       SET(BRLCAD_DEBUG_BUILD OFF)
-ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND ${BRLCAD_FLAGS_DEBUG} 
STREQUAL "Auto")
-IF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND ${BRLCAD_FLAGS_DEBUG} STREQUAL 
"Auto")
-       SET(BRLCAD_DEBUG_BUILD ON)
-ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND ${BRLCAD_FLAGS_DEBUG} STREQUAL 
"Auto")
+AUTO_OPTION(FLAGS_DEBUG DEBUG_BUILD "ON" "OFF")
 
-
 # Build with compiler warning flags
 OPTION(BRLCAD-ENABLE_COMPILER_WARNINGS "Use compiler warning flags" ON)
 MARK_AS_ADVANCED(BRLCAD-ENABLE_COMPILER_WARNINGS)
@@ -766,29 +743,7 @@
 ENDIF(BRLCAD-ENABLE_STRICT)
 
 # Build with compiler optimization flags.  This should normally be on for 
release builds
-STRING(LENGTH "${BRLCAD_FLAGS_OPTIMIZATION}" BRLCAD_FLAGS_OPTIMIZATION_SET)
-IF(NOT BRLCAD_FLAGS_OPTIMIZATION_SET)
-       SET(BRLCAD_FLAGS_OPTIMIZATION "Auto" CACHE STRING "Use optimized 
compiler settings" FORCE)
-ENDIF(NOT BRLCAD_FLAGS_OPTIMIZATION_SET)
-set_property(CACHE BRLCAD_FLAGS_OPTIMIZATION PROPERTY STRINGS Auto "ON" "OFF")
-# If the "parent" setting isn't Auto, do what it says
-IF(NOT ${BRLCAD_FLAGS_OPTIMIZATION} STREQUAL "Auto")
-       SET(BRLCAD_OPTIMIZED_BUILD ${BRLCAD_FLAGS_OPTIMIZATION})
-ENDIF(NOT ${BRLCAD_FLAGS_OPTIMIZATION} STREQUAL "Auto")
-# If we we don't understand the build type and have an Auto setting for the
-# optimization flags, leave them off
-IF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT "${CMAKE_BUILD_TYPE}" 
MATCHES "Debug")
-       IF(NOT ${BRLCAD_FLAGS_OPTIMIZATION} STREQUAL "Auto")
-               SET(BRLCAD_OPTIMIZED_BUILD OFF)
-       ENDIF(NOT ${BRLCAD_FLAGS_OPTIMIZATION} STREQUAL "Auto")
-ENDIF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT 
"${CMAKE_BUILD_TYPE}" MATCHES "Debug")
-# If we DO understand the build type and have Auto, be smart
-IF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND ${BRLCAD_FLAGS_OPTIMIZATION} 
STREQUAL "Auto")
-       SET(BRLCAD_OPTIMIZED_BUILD ON)
-ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND ${BRLCAD_FLAGS_OPTIMIZATION} 
STREQUAL "Auto")
-IF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND ${BRLCAD_FLAGS_OPTIMIZATION} 
STREQUAL "Auto")
-       SET(BRLCAD_OPTIMIZED_BUILD OFF)
-ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND ${BRLCAD_FLAGS_OPTIMIZATION} 
STREQUAL "Auto")
+AUTO_OPTION(FLAGS_OPTIMIZATION OPTIMIZED_BUILD "OFF" "ON")
 
 # 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)

Modified: brlcad/trunk/misc/CMake/BRLCAD_Util.cmake
===================================================================
--- brlcad/trunk/misc/CMake/BRLCAD_Util.cmake   2011-08-13 06:14:29 UTC (rev 
45965)
+++ brlcad/trunk/misc/CMake/BRLCAD_Util.cmake   2011-08-13 06:29:47 UTC (rev 
45966)
@@ -49,6 +49,33 @@
        ENDIF(NOT ${${optname}} STREQUAL "Auto" AND NOT ${${optname}} STREQUAL 
"Bundled" AND NOT ${${optname}} STREQUAL "System" AND NOT ${${optname}} 
STREQUAL "Auto (B)" AND NOT ${${optname}} STREQUAL "Auto (S)")
 ENDMACRO()
 
+# Build Type aware option
+MACRO(AUTO_OPTION username varname debug_state release_state)
+       STRING(LENGTH "${${CMAKE_PROJECT_NAME}_${username}}" 
${CMAKE_PROJECT_NAME}_${username}_SET)
+       IF(NOT ${CMAKE_PROJECT_NAME}_${username}_SET)
+               SET(${CMAKE_PROJECT_NAME}_${username} "Auto" CACHE STRING "Use 
optimized compiler settings" FORCE)
+       ENDIF(NOT ${CMAKE_PROJECT_NAME}_${username}_SET)
+       set_property(CACHE ${CMAKE_PROJECT_NAME}_${username} PROPERTY STRINGS 
Auto "ON" "OFF")
+       # If the "parent" setting isn't Auto, do what it says
+       IF(NOT ${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+               SET(${CMAKE_PROJECT_NAME}_${varname} 
${${CMAKE_PROJECT_NAME}_${username}})
+       ENDIF(NOT ${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+       # If we we don't understand the build type and have an Auto setting for 
the
+       # optimization flags, leave them off
+       IF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT 
"${CMAKE_BUILD_TYPE}" MATCHES "Debug")
+               IF(NOT ${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+                       SET(${CMAKE_PROJECT_NAME}_${varname} OFF)
+               ENDIF(NOT ${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+       ENDIF(NOT "${CMAKE_BUILD_TYPE}" MATCHES "Release" AND NOT 
"${CMAKE_BUILD_TYPE}" MATCHES "Debug")
+       # If we DO understand the build type and have Auto, be smart
+       IF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND 
${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+               SET(${CMAKE_PROJECT_NAME}_${varname} ${release_state})
+       ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Release" AND 
${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+       IF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND 
${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+               SET(${CMAKE_PROJECT_NAME}_${varname} ${debug_state})
+       ENDIF("${CMAKE_BUILD_TYPE}" MATCHES "Debug" AND 
${${CMAKE_PROJECT_NAME}_${username}} STREQUAL "Auto")
+ENDMACRO(AUTO_OPTION varname release_state debug_state)
+
 # Windows builds need a DLL variable defined per-library, and BRL-CAD
 # uses a fairly standard convention - try and automate the addition of
 # the definition.


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

------------------------------------------------------------------------------
FREE DOWNLOAD - uberSVN with Social Coding for Subversion.
Subversion made easy with a complete admin console. Easy 
to use, easy to manage, easy to install, easy to extend. 
Get a Free download of the new open ALM Subversion platform now.
http://p.sf.net/sfu/wandisco-dev2dev
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits

Reply via email to