Revision: 70088 http://sourceforge.net/p/brlcad/code/70088 Author: starseeker Date: 2017-08-17 21:29:40 +0000 (Thu, 17 Aug 2017) Log Message: ----------- Rework the BRLCAD_OPTION logic to use functions.
Modified Paths: -------------- brlcad/trunk/CMakeLists.txt brlcad/trunk/configure brlcad/trunk/misc/CMake/BRLCAD_Options.cmake brlcad/trunk/misc/CMake/ThirdParty.cmake brlcad/trunk/misc/CMake/ThirdParty_TCL.cmake Modified: brlcad/trunk/CMakeLists.txt =================================================================== --- brlcad/trunk/CMakeLists.txt 2017-08-17 21:24:24 UTC (rev 70087) +++ brlcad/trunk/CMakeLists.txt 2017-08-17 21:29:40 UTC (rev 70088) @@ -1114,18 +1114,12 @@ else(MSVC) set(BRLCAD_BUNDLED_LIBS_DEFAULT "AUTO") endif(MSVC) -BRLCAD_OPTION(${BRLCAD_BUNDLED_LIBS_DEFAULT} BRLCAD_BUNDLED_LIBS BRLCAD_BUNDLED_LIBS_ALIASES BRLCAD_BUNDLED_LIBS_DESCRIPTION) -set_property(CACHE BRLCAD_BUNDLED_LIBS PROPERTY STRINGS AUTO BUNDLED SYSTEM) -string(TOUPPER "${BRLCAD_BUNDLED_LIBS}" BRLCAD_BUNDLED_LIBS_UPPER) -set(BRLCAD_BUNDLED_LIBS "${BRLCAD_BUNDLED_LIBS_UPPER}" CACHE STRING "Build bundled libraries." FORCE) -if(${BRLCAD_BUNDLED_LIBS} MATCHES "ON") - set(BRLCAD_BUNDLED_LIBS "BUNDLED" CACHE STRING "Build bundled libraries." FORCE) -endif(${BRLCAD_BUNDLED_LIBS} MATCHES "ON") -if(${BRLCAD_BUNDLED_LIBS} MATCHES "OFF") - set(BRLCAD_BUNDLED_LIBS "SYSTEM" CACHE STRING "Build bundled libraries." FORCE) -endif(${BRLCAD_BUNDLED_LIBS} MATCHES "OFF") +BRLCAD_OPTION(BRLCAD_BUNDLED_LIBS ${BRLCAD_BUNDLED_LIBS_DEFAULT} + TYPE ABS + ALIASES BRLCAD_BUNDLED_LIBS_ALIASES + DESCRIPTION BRLCAD_BUNDLED_LIBS_DESCRIPTION) if(NOT BRLCAD_BUNDLED_LIBS MATCHES "AUTO" AND NOT BRLCAD_BUNDLED_LIBS MATCHES "BUNDLED" AND NOT BRLCAD_BUNDLED_LIBS MATCHES "SYSTEM") - message(WARNING "Unknown value BRLCAD_BUNDLED_LIBS supplied for BRLCAD_BUNDLED_LIBS - defaulting to AUTO") + message(WARNING "Unknown value BRLCAD_BUNDLED_LIBS supplied for BRLCAD_BUNDLED_LIBS (${BRLCAD_BUNDLED_LIBS}) - defaulting to AUTO") message(WARNING "Valid options are AUTO, BUNDLED and SYSTEM") set(BRLCAD_BUNDLED_LIBS "AUTO" CACHE STRING "Build bundled libraries." FORCE) endif(NOT BRLCAD_BUNDLED_LIBS MATCHES "AUTO" AND NOT BRLCAD_BUNDLED_LIBS MATCHES "BUNDLED" AND NOT BRLCAD_BUNDLED_LIBS MATCHES "SYSTEM") @@ -1204,7 +1198,10 @@ Default depends on whether OpenGL is successfully detected - if it is, default is to enable. ") -BRLCAD_OPTION(${OPENGL_FOUND} BRLCAD_ENABLE_OPENGL BRLCAD_ENABLE_OPENGL_ALIASES BRLCAD_ENABLE_OPENGL_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_ENABLE_OPENGL ${OPENGL_FOUND} + TYPE BOOL + ALIASES BRLCAD_ENABLE_OPENGL_ALIASES + DESCRIPTION BRLCAD_ENABLE_OPENGL_DESCRIPTION) # Enable RTGL. Requires an enabled OpenGL. option(BRLCAD_ENABLE_RTGL "Enable experimental RTGL code." OFF) @@ -1287,7 +1284,10 @@ Default is \"ON\", and should only be disabled for read-only render work where performance is critical. ") -BRLCAD_OPTION(ON BRLCAD_ENABLE_RUNTIME_DEBUG BRLCAD_ENABLE_RUNTIME_DEBUG_ALIASES BRLCAD_ENABLE_RUNTIME_DEBUG_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_ENABLE_RUNTIME_DEBUG ON + TYPE BOOL + ALIASES BRLCAD_ENABLE_RUNTIME_DEBUG_ALIASES + DESCRIPTION BRLCAD_ENABLE_RUNTIME_DEBUG_DESCRIPTION) mark_as_advanced(BRLCAD_ENABLE_RUNTIME_DEBUG) if(NOT BRLCAD_ENABLE_RUNTIME_DEBUG) message("}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}") @@ -1316,7 +1316,10 @@ set(BRLCAD_FLAGS_DEBUG_DESCRIPTION " Add compiler flags to aid in program debugging. Defaults to ON. ") -BRLCAD_OPTION(ON BRLCAD_FLAGS_DEBUG BRLCAD_FLAGS_DEBUG_ALIASES BRLCAD_FLAGS_DEBUG_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_FLAGS_DEBUG ON + TYPE BOOL + ALIASES BRLCAD_FLAGS_DEBUG_ALIASES + DESCRIPTION BRLCAD_FLAGS_DEBUG_DESCRIPTION) # A variety of debugging messages in the code key off of the DEBUG # definition - set it according to whether we're using debug flags. @@ -1332,9 +1335,10 @@ set(BRLCAD_ENABLE_COMPILER_WARNINGS_DESCRIPTION " Use extra compiler warning flags when compiling C/C++ code. Defaults to ON. ") -BRLCAD_OPTION(ON BRLCAD_ENABLE_COMPILER_WARNINGS - BRLCAD_ENABLE_COMPILER_WARNINGS_ALIASES - BRLCAD_ENABLE_COMPILER_WARNINGS_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_ENABLE_COMPILER_WARNINGS ON + TYPE BOOL + ALIASES BRLCAD_ENABLE_COMPILER_WARNINGS_ALIASES + DESCRIPTION BRLCAD_ENABLE_COMPILER_WARNINGS_DESCRIPTION) mark_as_advanced(BRLCAD_ENABLE_COMPILER_WARNINGS) # Enable/disable strict compiler settings - these are used for building @@ -1352,7 +1356,10 @@ discovered by these flags whenever possible rather than disabling strict mode. ") -BRLCAD_OPTION(ON BRLCAD_ENABLE_STRICT BRLCAD_ENABLE_STRICT_ALIASES BRLCAD_ENABLE_STRICT_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_ENABLE_STRICT ON + TYPE BOOL + ALIASES BRLCAD_ENABLE_STRICT_ALIASES + DESCRIPTION BRLCAD_ENABLE_STRICT_DESCRIPTION) if(BRLCAD_ENABLE_STRICT) mark_as_advanced(BRLCAD_ENABLE_STRICT) CONFIG_H_APPEND(BRLCAD "#define STRICT_FLAGS 1\n") @@ -1389,9 +1396,10 @@ EXPERIMENTAL! ") -BRLCAD_OPTION(OFF ENABLE_ALL_CXX_COMPILE - ENABLE_ALL_CXX_COMPILE_ALIASES - ENABLE_ALL_CXX_COMPILE_DESCRIPTION) +BRLCAD_OPTION(ENABLE_ALL_CXX_COMPILE OFF + TYPE BOOL + ALIASES ENABLE_ALL_CXX_COMPILE_ALIASES + DESCRIPTION ENABLE_ALL_CXX_COMPILE_DESCRIPTION) mark_as_advanced(ENABLE_ALL_CXX_COMPILE) # Build with coverage enabled @@ -1409,9 +1417,10 @@ policy. The current minimum C standard is ??. There is no currently defined minimum C++ standard. ") -BRLCAD_OPTION(OFF ENABLE_POSIX_COMPLIANCE - ENABLE_POSIX_COMPLIANCE_ALIASES - ENABLE_POSIX_COMPLIANCE_DESCRIPTION) +BRLCAD_OPTION(ENABLE_POSIX_COMPLIANCE OFF + TYPE BOOL + ALIASES ENABLE_POSIX_COMPLIANCE_ALIASES + DESCRIPTION ENABLE_POSIX_COMPLIANCE_DESCRIPTION) mark_as_advanced(ENABLE_POSIX_COMPLIANCE) #== ISO C == @@ -1422,9 +1431,10 @@ Causes C compiler options to be set for strict compliance with the appropriate ISO C standard. ") -BRLCAD_OPTION(OFF ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE - ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE_ALIASES - ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE_DESCRIPTION) +BRLCAD_OPTION(ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE OFF + TYPE BOOL + ALIASES ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE_ALIASES + DESCRIPTION ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE_DESCRIPTION) mark_as_advanced(ENABLE_STRICT_COMPILER_STANDARD_COMPLIANCE) # Build with dtrace support @@ -1510,7 +1520,10 @@ executable file (which on Linux is usually a shell script with 0755 permissions). ") -BRLCAD_OPTION(${EXTRADOCS_DEFAULT} BRLCAD_EXTRADOCS BRLCAD_EXTRADOCS_ALIASES BRLCAD_EXTRADOCS_DESCRIPTION) +BRLCAD_OPTION(BRLCAD_EXTRADOCS ${EXTRADOCS_DEFAULT} + TYPE BOOL + ALIASES BRLCAD_EXTRADOCS_ALIASES + DESCRIPTION BRLCAD_EXTRADOCS_DESCRIPTION) # The HTML output is used in the graphical help browsers in MGED and Archer, Modified: brlcad/trunk/configure =================================================================== --- brlcad/trunk/configure 2017-08-17 21:24:24 UTC (rev 70087) +++ brlcad/trunk/configure 2017-08-17 21:29:40 UTC (rev 70088) @@ -10,9 +10,9 @@ do case $1 in - --enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=ON"; + --enable-all) options="$options -DBRLCAD_BUNDLED_LIBS=BUNDLED"; shift;; - --disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=OFF"; + --disable-all) options="$options -DBRLCAD_BUNDLED_LIBS=SYSTEM"; shift;; --enable-opengl) options="$options -DBRLCAD_ENABLE_OPENGL=ON"; shift;; Modified: brlcad/trunk/misc/CMake/BRLCAD_Options.cmake =================================================================== --- brlcad/trunk/misc/CMake/BRLCAD_Options.cmake 2017-08-17 21:24:24 UTC (rev 70087) +++ brlcad/trunk/misc/CMake/BRLCAD_Options.cmake 2017-08-17 21:29:40 UTC (rev 70088) @@ -46,63 +46,98 @@ # configure style option syntax and CMake's variables, and append that to # the generated configure.new file. + +function(WRITE_CONFIG_YN opt opt_ALIASES onval offval) + set(ofile "${CMAKE_BINARY_DIR}/configure.new") + foreach(item ${${opt_ALIASES}}) + string(TOLOWER ${item} alias_str) + string(REPLACE "_" "-" alias_str "${alias_str}") + string(REPLACE "enable" "disable" disable_str "${alias_str}") + file(APPEND "${ofile}" " --${alias_str}) options=\"$options -D${opt}=${onval}\";\n") + file(APPEND "${ofile}" " shift;;\n") + file(APPEND "${ofile}" " --${disable_str}) options=\"$options -D${opt}=${offval}\";\n") + file(APPEND "${ofile}" " shift;;\n") + endforeach(item ${${opt_ALIASES}}) +endfunction(WRITE_CONFIG_YN) + +function(WRITE_CONFIG_STR opt opt_ALIASES) + foreach(item ${${opt_ALIASES}}) + string(TOLOWER ${item} alias_str) + file(APPEND "${ofile}" " --${alias_str}=*) inputstr=$1;\n") + file(APPEND "${ofile}" " options=\"$options -D${opt}=\${inputstr#--${alias_str}=}\";\n") + file(APPEND "${ofile}" " shift;;\n") + endforeach(item ${${opt_ALIASES}}) +endfunction(WRITE_CONFIG_STR) + +function(WRITE_CONFIG_OPTS opt opt_ALIASES style) + + set(ofile "${CMAKE_BINARY_DIR}/configure.new") + + if("${style}" STREQUAL "STRING") + # If we've got a string type, we don't need inverse logic. + WRITE_CONFIG_STR("${opt}" "${opt_ALIASES}") + return() + endif("${style}" STREQUAL "STRING") + + # handle BUNDLE/SYSTEM options + if("${style}" STREQUAL "ABS") + WRITE_CONFIG_YN("${opt}" "${opt_ALIASES}" BUNDLED SYSTEM) + endif("${style}" STREQUAL "ABS") + + # handle Boolean options + if("${style}" STREQUAL "BOOL") + WRITE_CONFIG_YN("${opt}" "${opt_ALIASES}" "ON" "OFF") + endif("${style}" STREQUAL "BOOL") + +endfunction(WRITE_CONFIG_OPTS) + # Handle aliases for BRL-CAD options -macro(OPTION_ALIASES opt opt_ALIASES style) - if(${opt_ALIASES}) - foreach(item ${${opt_ALIASES}}) - string(REPLACE "ENABLE_" "DISABLE_" inverse_item ${item}) - set(inverse_aliases ${inverse_aliases} ${inverse_item}) - endforeach(item ${${opt_ALIASES}}) - foreach(item ${${opt_ALIASES}}) - if(NOT "${item}" STREQUAL "${opt}") - if(NOT "${${item}}" STREQUAL "") - set(${opt} ${${item}} CACHE STRING "setting ${opt} via alias ${item}" FORCE) - set(${item} "" CACHE STRING "set ${opt} via this variable" FORCE) - mark_as_advanced(${item}) - endif(NOT "${${item}}" STREQUAL "") - endif(NOT "${item}" STREQUAL "${opt}") - endforeach(item ${${opt_ALIASES}}) - # handle DISABLE forms of options - foreach(item ${inverse_aliases}) - if(NOT "${item}" STREQUAL "${opt}") - if(NOT "${${item}}" STREQUAL "") - set(invert_item ${${item}}) - if("${${item}}" STREQUAL "ON") - set(invert_item "OFF") - elseif("${invert_item}" STREQUAL "OFF") - set(invert_item "ON") - endif("${${item}}" STREQUAL "ON") - set(${opt} ${invert_item} CACHE STRING "setting ${opt} via alias ${item}" FORCE) - set(${item} "" CACHE STRING "set ${opt} via this variable" FORCE) - mark_as_advanced(${item}) - endif(NOT "${${item}}" STREQUAL "") - endif(NOT "${item}" STREQUAL "${opt}") - endforeach(item ${inverse_aliases}) - foreach(item ${${opt_ALIASES}}) - string(TOLOWER ${item} alias_str) - string(REPLACE "_" "-" alias_str "${alias_str}") - string(REPLACE "enable" "disable" disable_str "${alias_str}") - if("${style}" STREQUAL "ABS") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " --${alias_str}) options=\"$options -D${opt}=BUNDLED\";\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " shift;;\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " --${disable_str}) options=\"$options -D${opt}=SYSTEM\";\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " shift;;\n") - endif("${style}" STREQUAL "ABS") - if("${style}" STREQUAL "BOOL") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " --${alias_str}) options=\"$options -D${opt}=ON\";\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " shift;;\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " --${disable_str}) options=\"$options -D${opt}=OFF\";\n") - file(APPEND "${CMAKE_BINARY_DIR}/configure.new" " shift;;\n") - endif("${style}" STREQUAL "BOOL") - endforeach(item ${${opt_ALIASES}}) - endif(${opt_ALIASES}) -endmacro(OPTION_ALIASES) +function(OPTION_RESOLVE_ALIASES ropt opt opt_ALIASES style) + set(lopt ${${ropt}}) + + foreach(item ${${opt_ALIASES}}) + if(NOT "${item}" STREQUAL "${opt}" AND NOT "${${item}}" STREQUAL "") + set(lopt ${${item}}) + set(${item} "" CACHE STRING "set ${opt} via this variable" FORCE) + mark_as_advanced(${item}) + endif(NOT "${item}" STREQUAL "${opt}" AND NOT "${${item}}" STREQUAL "") + endforeach(item ${${opt_ALIASES}}) + + # String types don't have inverses + if("${style}" STREQUAL "STRING") + set(${ropt} ${lopt} PARENT_SCOPE) + return() + endif("${style}" STREQUAL "STRING") + + # Generate inverse aliases for all "ENABLE" options + foreach(item ${${opt_ALIASES}}) + string(REPLACE "ENABLE_" "DISABLE_" inverse_item ${item}) + set(inverse_aliases ${inverse_aliases} ${inverse_item}) + endforeach(item ${${opt_ALIASES}}) + + # Check the inverse options for a set value + foreach(item ${${opt_ALIASES}}) + if(NOT "${${item}}" STREQUAL "") + set(lopt ${${item}}) + set(${item} "" CACHE STRING "set ${opt} via this variable" FORCE) + mark_as_advanced(${item}) + endif(NOT "${${item}}" STREQUAL "") + endforeach(item ${${opt_ALIASES}}) + + # Let the parent scope know the result + set(${ropt} ${lopt} PARENT_SCOPE) + +endfunction(OPTION_RESOLVE_ALIASES) + # Write documentation description for BRL-CAD options -macro(OPTION_DESCRIPTION opt opt_ALIASES opt_DESCRIPTION) - file(APPEND "${CMAKE_BINARY_DIR}/OPTIONS" "\n--- ${opt} ---\n") - file(APPEND "${CMAKE_BINARY_DIR}/OPTIONS" "${${opt_DESCRIPTION}}") +function(WRITE_OPTION_DESCRIPTION opt opt_ALIASES opt_DESCRIPTION) + set(ofile "${CMAKE_BINARY_DIR}/OPTIONS") + + file(APPEND "${ofile}" "\n--- ${opt} ---\n") + file(APPEND "${ofile}" "${${opt_DESCRIPTION}}") + set(ALIASES_LIST "\nAliases: ") foreach(item ${${opt_ALIASES}}) set(ALIASES_LIST_TEST "${ALIASES_LIST}, ${item}") @@ -109,7 +144,7 @@ string(LENGTH ${ALIASES_LIST_TEST} LL) if(${LL} GREATER 80) - file(APPEND "${CMAKE_BINARY_DIR}/OPTIONS" "${ALIASES_LIST}\n") + file(APPEND "${ofile}" "${ALIASES_LIST}\n") set(ALIASES_LIST " ${item}") else(${LL} GREATER 80) if(NOT ${ALIASES_LIST} MATCHES "\nAliases") @@ -127,29 +162,101 @@ if(ALIASES_LIST) string(STRIP ALIASES_LIST ${ALIASES_LIST}) if(ALIASES_LIST) - file(APPEND "${CMAKE_BINARY_DIR}/OPTIONS" "${ALIASES_LIST}") + file(APPEND "${ofile}" "${ALIASES_LIST}") endif(ALIASES_LIST) endif(ALIASES_LIST) - file(APPEND "${CMAKE_BINARY_DIR}/OPTIONS" "\n\n") -endmacro(OPTION_DESCRIPTION) + file(APPEND "${ofile}" "\n\n") +endfunction(WRITE_OPTION_DESCRIPTION) + + +function(VAL_NORMALIZE val optype) + string(TOUPPER "${${val}}" uval) + if("${uval}" STREQUAL "YES") + set(uval "ON") + endif("${uval}" STREQUAL "YES") + if("${uval}" STREQUAL "NO") + set(uval "OFF") + endif("${uval}" STREQUAL "NO") + if("${optype}" STREQUAL "ABS") + if("${uval}" STREQUAL "ON") + set(uval "BUNDLED") + endif("${uval}" STREQUAL "ON") + if("${uval}" STREQUAL "OFF") + set(uval "SYSTEM") + endif("${uval}" STREQUAL "OFF") + endif("${optype}" STREQUAL "ABS") + set(${val} "${uval}" PARENT_SCOPE) +endfunction(VAL_NORMALIZE) + + +function(OPT_NORMALIZE ropt default optype) + + # We need something for a default + if("${default}" STREQUAL "") + message(FATAL_ERROR "Error - empty default value supplied for ${opt}") + endif("${default}" STREQUAL "") + + # If we need to use the default, do so. + if("${${ropt}}" STREQUAL "") + set(local_opt "${default}") + else("${${ropt}}" STREQUAL "") + set(local_opt ${${ropt}}) + endif("${${ropt}}" STREQUAL "") + + # We should be done with logic that will change the setting - normalize + VAL_NORMALIZE(local_opt ${optype}) + + # Let the parent know what the normalized result is + set(${ropt} ${local_opt} PARENT_SCOPE) + +endfunction(OPT_NORMALIZE) + + # Standard option with BRL-CAD aliases and description -macro(BRLCAD_OPTION default opt opt_ALIASES opt_DESCRIPTION) - if(NOT DEFINED ${opt} OR "${${opt}}" STREQUAL "") - if("${default}" STREQUAL "ON" OR "${default}" STREQUAL "YES") - set(${opt} ON CACHE BOOL "define ${opt}" FORCE) - elseif("${default}" STREQUAL "OFF" OR "${default}" STREQUAL "NO") - set(${opt} OFF CACHE BOOL "define ${opt}" FORCE) - else("${default}" STREQUAL "ON" OR "${default}" STREQUAL "YES") - set(${opt} ${default} CACHE STRING "define ${opt}" FORCE) - endif("${default}" STREQUAL "ON" OR "${default}" STREQUAL "YES") - endif(NOT DEFINED ${opt} OR "${${opt}}" STREQUAL "") +function(BRLCAD_OPTION opt default) - OPTION_ALIASES("${opt}" "${opt_ALIASES}" "BOOL") - OPTION_DESCRIPTION("${opt}" "${opt_ALIASES}" "${opt_DESCRIPTION}") -endmacro(BRLCAD_OPTION) + cmake_parse_arguments(O "" "DESCRIPTION;TYPE" "ALIASES" ${ARGN}) + # Initialize + set(lopt "${${opt}}") + set(otype) + if(O_TYPE) + set(otype ${O_TYPE}) + endif(O_TYPE) + + # Process aliases and write descriptions + if(O_ALIASES) + OPTION_RESOLVE_ALIASES(lopt "${opt}" "${O_ALIASES}" "${otype}") + WRITE_CONFIG_OPTS("${opt}" "${O_ALIASES}" "${otype}") + if(O_DESCRIPTION) + WRITE_OPTION_DESCRIPTION("${opt}" "${O_ALIASES}" "${O_DESCRIPTION}") + endif(O_DESCRIPTION) + endif(O_ALIASES) + + # Finalize the actual value to be used + OPT_NORMALIZE(lopt "${default}" ${otype}) + + # Set in the cache + if("${otype}" STREQUAL "BOOL") + set(${opt} "${lopt}" CACHE BOOL "define ${opt}" FORCE) + else("${otype}" STREQUAL "BOOL") + set(${opt} "${lopt}" CACHE STRING "define ${opt}" FORCE) + endif("${otype}" STREQUAL "BOOL") + + # For drop-down menus in CMake gui - set STRINGS property + if("${otype}" STREQUAL "ABS") + set_property(CACHE ${opt} PROPERTY STRINGS AUTO BUNDLED SYSTEM) + endif("${otype}" STREQUAL "ABS") + + # Let the parent know + set(${opt} "${lopt}" PARENT_SCOPE) + +endfunction(BRLCAD_OPTION) + + + # Local Variables: # tab-width: 8 # mode: cmake Modified: brlcad/trunk/misc/CMake/ThirdParty.cmake =================================================================== --- brlcad/trunk/misc/CMake/ThirdParty.cmake 2017-08-17 21:24:24 UTC (rev 70087) +++ brlcad/trunk/misc/CMake/ThirdParty.cmake 2017-08-17 21:29:40 UTC (rev 70088) @@ -265,8 +265,10 @@ endif(${CMAKE_PROJECT_NAME}_${varname_root}_BUILD) if(NOT ${varname_root}_UNDOCUMENTED) - OPTION_ALIASES("${CMAKE_PROJECT_NAME}_${varname_root}" "${varname_root}_ALIASES" "ABS") - OPTION_DESCRIPTION("${CMAKE_PROJECT_NAME}_${varname_root}" "${varname_root}_ALIASES" "${description}") + BRLCAD_OPTION("${CMAKE_PROJECT_NAME}_${varname_root}" "${${CMAKE_PROJECT_NAME}_${varname_root}}" + TYPE ABS + ALIASES "${varname_root}_ALIASES" + DESCRIPTION "${description}") endif(NOT ${varname_root}_UNDOCUMENTED) # For drop-down menus in CMake gui - set STRINGS property @@ -545,12 +547,11 @@ set(${upper}_EXECUTABLE_TARGET "" CACHE STRING "No build target for ${lower}" FORCE) endif(${CMAKE_PROJECT_NAME}_${upper}_BUILD) - OPTION_ALIASES("${CMAKE_PROJECT_NAME}_${upper}" "${aliases}" "ABS") - OPTION_DESCRIPTION("${CMAKE_PROJECT_NAME}_${upper}" "${aliases}" "${description}") + BRLCAD_OPTION("${CMAKE_PROJECT_NAME}_${upper}" "${${CMAKE_PROJECT_NAME}_${upper}}" + TYPE ABS + ALIASES "${aliases}" + DESCRIPTION "${description}") - # For drop-down menus in CMake gui - set STRINGS property - set_property(CACHE ${CMAKE_PROJECT_NAME}_${upper} PROPERTY STRINGS AUTO BUNDLED SYSTEM) - mark_as_advanced(${upper}_EXECUTABLE) mark_as_advanced(${upper}_EXECUTABLE_TARGET) mark_as_advanced(${upper}_FOUND) Modified: brlcad/trunk/misc/CMake/ThirdParty_TCL.cmake =================================================================== --- brlcad/trunk/misc/CMake/ThirdParty_TCL.cmake 2017-08-17 21:24:24 UTC (rev 70087) +++ brlcad/trunk/misc/CMake/ThirdParty_TCL.cmake 2017-08-17 21:29:40 UTC (rev 70088) @@ -389,12 +389,11 @@ endif(${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER}_BUILD) endif(NOT ${PKGNAME_UPPER}_MET_CONDITION) - OPTION_ALIASES("${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER}" "${aliases}" "ABS") - OPTION_DESCRIPTION("${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER}" "${aliases}" "${description}") + BRLCAD_OPTION("${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER}" "${${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER}}" + TYPE ABS + ALIASES "${aliases}" + DESCRIPTION "${description}") - # For drop-down menus in CMake gui - set STRINGS property - set_property(CACHE ${CMAKE_PROJECT_NAME}_${PKGNAME_UPPER} PROPERTY STRINGS AUTO BUNDLED SYSTEM) - endmacro(THIRD_PARTY_TCL_PACKAGE) # Local Variables: 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