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