From: spo Date: Fri, 25 Dec 2015 08:56:03 +0000 (+0300) Subject: Add CMake flags DEFAULT_SOLVER, NO_SolveSpace & NO_PlaneGCS to switch solvers. X-Git-Tag: V_2.1.0~49 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=fadb4e755f16bbc61879a926a689cf472bd4a76b;p=modules%2Fshaper.git Add CMake flags DEFAULT_SOLVER, NO_SolveSpace & NO_PlaneGCS to switch solvers. --- diff --git a/src/Config/CMakeLists.txt b/src/Config/CMakeLists.txt index e43622f80..75cb09703 100644 --- a/src/Config/CMakeLists.txt +++ b/src/Config/CMakeLists.txt @@ -45,7 +45,7 @@ SET(PROJECT_SOURCES ) SET(XML_RESOURCES - plugins.xml + ${CMAKE_CURRENT_BINARY_DIR}/plugins.xml dataModel.xml ) @@ -64,5 +64,43 @@ ADD_LIBRARY(Config SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS} ${XML_RESOURCES} TARGET_LINK_LIBRARIES(Config ${PROJECT_LIBRARIES}) +# Prepare plugins.xml + +# the solver to activate after installation +SET(DEFAULT_SOLVER "SolveSpace") + +# the list of all solvers +SET(SOLVERS "SolveSpace" "PlaneGCS") + +# apply NO_ variables +FOREACH(solver IN LISTS SOLVERS) + IF(NO_${solver}) + LIST(REMOVE_ITEM SOLVERS ${solver}) + ENDIF() +ENDFOREACH() + +# check default solver in the list of solvers +LIST(FIND SOLVERS ${DEFAULT_SOLVER} INDEX) +IF(${INDEX} GREATER -1) + MESSAGE(STATUS "Default solver: ${DEFAULT_SOLVER}") +ELSE() + MESSAGE(FATAL_ERROR "Default solver: ${DEFAULT_SOLVER} is switched off.\nUnset NO_${DEFAULT_SOLVER} variable or define another default solver DEFAULT_SOLVER= from the list: ${SOLVERS}.") +ENDIF() + +# prepare variables for configuration +SET(DEFAULT_SOLVER " ") +FOREACH(solver IN LISTS SOLVERS) + IF(DEFINED ALL_SOLVERS) + SET(ALL_SOLVERS "${ALL_SOLVERS}\n") + ENDIF() + SET(ALL_SOLVERS "${ALL_SOLVERS} ") +ENDFOREACH() + +# configuration +CONFIGURE_FILE( + "${CMAKE_CURRENT_SOURCE_DIR}/plugins.xml.in" + "${CMAKE_CURRENT_BINARY_DIR}/plugins.xml" + ) + INSTALL(TARGETS Config DESTINATION bin) INSTALL(FILES ${XML_RESOURCES} DESTINATION plugins) diff --git a/src/Config/plugins.xml b/src/Config/plugins.xml deleted file mode 100644 index 77422df32..000000000 --- a/src/Config/plugins.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - - - - - - - - - - - - - - - diff --git a/src/Config/plugins.xml.in b/src/Config/plugins.xml.in new file mode 100644 index 000000000..af91d8fb2 --- /dev/null +++ b/src/Config/plugins.xml.in @@ -0,0 +1,20 @@ + + + + + + + + + + + + + +@DEFAULT_SOLVER@ + + + + diff --git a/src/SketchSolver/CMakeLists.txt b/src/SketchSolver/CMakeLists.txt index 25c5a8c26..91cfe6c82 100644 --- a/src/SketchSolver/CMakeLists.txt +++ b/src/SketchSolver/CMakeLists.txt @@ -77,10 +77,19 @@ INSTALL(TARGETS SketchSolver DESTINATION plugins) # Include specific solvers -FIND_FILE(SSPath "SolveSpaceSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}") -STRING(COMPARE NOTEQUAL ${SSPath} "SSPath-NOTFOUND" SSPath_FOUND) -FIND_FILE(GCSPath "PlaneGCSSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}") -STRING(COMPARE NOTEQUAL ${GCSPath} "GCSPath-NOTFOUND" GCSPath_FOUND) +IF(NO_SolveSpace) + SET(SSPath_FOUND FALSE) +ELSE() + FIND_FILE(SSPath "SolveSpaceSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}") + STRING(COMPARE NOTEQUAL ${SSPath} "SSPath-NOTFOUND" SSPath_FOUND) +ENDIF() + +IF(NO_PlaneGCS) + SET(GCSPath_FOUND FALSE) +ELSE() + FIND_FILE(GCSPath "PlaneGCSSolver/CMakeLists.txt" PATHS "${CMAKE_CURRENT_SOURCE_DIR}") + STRING(COMPARE NOTEQUAL ${GCSPath} "GCSPath-NOTFOUND" GCSPath_FOUND) +ENDIF() IF(${SSPath_FOUND} OR ${GCSPath_FOUND}) IF(${SSPath_FOUND})