Fix:Build/cmake:Make user defined settings survive a cmake cache refresh
authorrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 23 Jan 2011 20:47:58 +0000 (20:47 +0000)
committerrikky <rikky@ffa7fe5e-494d-0410-b361-a75ebd5db220>
Sun, 23 Jan 2011 20:47:58 +0000 (20:47 +0000)
git-svn-id: https://navit.svn.sourceforge.net/svnroot/navit/trunk@3951 ffa7fe5e-494d-0410-b361-a75ebd5db220

navit/CMakeLists.txt
navit/cmake/navit_macros.cmake

index e5bcdc7..302e49b 100644 (file)
@@ -388,13 +388,6 @@ if (XPM2PNG)
    endif(NOT IMAGE_CONVERTER_XPM)
 endif(XPM2PNG)
 
-foreach(PLUMO ${ALL_PLUGINS} ${ALL_MODULES} ${ALL_FEATURES})
-   set(OLDVALUE ${${PLUMO}})
-   OPTION(${PLUMO} "Enable/Disable module/plugin/support" ${${PLUMO}})
-   if ( (OLDVALUE AND NOT ${PLUMO}) OR (${PLUMO} AND NOT OLDVALUE))
-      set(${PLUMO}_REASON "User defined")
-   endif()
-endforeach()
 set(XSLTS ${XSLTS} CACHE STRING "define a semicolon seperated list of XSLTs to process")
 
 # Plugins
index 5c40eaa..08647e2 100644 (file)
@@ -1,14 +1,26 @@
+macro(internal_set VARIABLE REASON)
+   if (NOT DEFINED ${VARIABLE})
+      set(${VARIABLE} ${ARGN})
+      set(${VARIABLE}_REASON ${REASON} CACHE STRING "reason")
+   else()
+      set(${VARIABLE}_REASON "User defined" CACHE STRING "reason")
+   endif()
+endmacro()
+
 macro(set_with_reason VARIABLE REASON ENABLE)
-   set(${VARIABLE} ${ENABLE})
-   set(${VARIABLE}_REASON ${REASON})
-   string(REPLACE "/" "_" VARIABLE_NAMES ${VARIABLE})
-   set(${VARIABLE_NAMES}_LIBS ${ARGN})
+   if (DEFINED ${VARIABLE}_REASON AND NOT ${VARIABLE}_REASON STREQUAL "User defined")
+      set(${VARIABLE} ${ENABLE})
+      set(${VARIABLE}_REASON ${REASON})
+      string(REPLACE "/" "_" VARIABLE_NAMES ${VARIABLE})
+      set(${VARIABLE_NAMES}_LIBS ${ARGN})
+   else()
+      message("Do not change user defined settings for ${VARIABLE}")
+   endif()
 endmacro()
 
 macro(add_feature FEATURE REASON ENABLE)
    list(APPEND ALL_FEATURES ${FEATURE})
-   set(${FEATURE} ${ENABLE})
-   set(${FEATURE}_REASON ${REASON})
+   internal_set(${FEATURE} ${REASON} ${ENABLE})
 endmacro()
 
 macro(cfg_feature FEATURE REASON ENABLE)
@@ -16,18 +28,15 @@ macro(cfg_feature FEATURE REASON ENABLE)
    set(${FEATURE}_REASON ${REASON})
 endmacro()
 
-# modules may be linked static, or shared for import at runtime
-macro(add_module MODULE_PATH REASON)
+macro(add_module MODULE_PATH REASON ENABLE)
    list(APPEND ALL_MODULES ${MODULE_PATH})
-   set(${MODULE_PATH} ${ARGN})
-   set(${MODULE_PATH}_REASON ${REASON})
+   internal_set(${MODULE_PATH} ${REASON} ${ENABLE})
 endmacro()
 
 # plugins are always linked static
-macro(add_plugin PLUGIN_PATH REASON)
+macro(add_plugin PLUGIN_PATH REASON ENABLE)
    list(APPEND ALL_PLUGINS ${PLUGIN_PATH})
-   set(${PLUGIN_PATH} ${ARGN})
-   set(${PLUGIN_PATH}_REASON ${REASON})
+   internal_set(${PLUGIN_PATH} ${REASON} ${ENABLE})
 endmacro()
 
 macro(module_add_library MODULE_NAME )