1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-19 13:40:49 +03:00

Compare commits

...

1 Commits

Author SHA1 Message Date
ski
786b094879 0029039: Configuration - allow to choose and to have separate install directory for every RTL
Added option to choose RTL type using Cmake GUI.
2017-08-24 12:38:14 +03:00
4 changed files with 119 additions and 0 deletions

View File

@@ -52,6 +52,14 @@ set_property (GLOBAL PROPERTY OCC_VERSION_MAINTENANCE ${OCC_VERSION_MAINTENANCE}
set (INSTALL_TEST_CASES OFF CACHE BOOL "${INSTALL_TEST_CASES_DESCR}")
if (MSVC)
# overwrite type of used RTL libraries
if (NOT BUILD_CHANGE_USED_RTL_TYPE)
set (BUILD_CHANGE_USED_RTL_TYPE "default" CACHE STRING "${BUILD_CHANGE_USED_RTL_TYPE_DESCR}" FORCE)
set_property(CACHE BUILD_CHANGE_USED_RTL_TYPE PROPERTY STRINGS "default" "static/release RTL" "static/debug RTL" "dynamic/release RTL" "dynamic/debug RTL")
endif()
endif()
# Regeneration of OCCT resource files
set (BUILD_RESOURCES OFF CACHE BOOL "${BUILD_RESOURCES_DESCR}")
@@ -201,6 +209,26 @@ if (NOT DEFINED INSTALL_DIR_LIB)
endif()
endif()
if (MSVC)
if (NOT DEFINED BUILD_CHANGE_USED_RTL_TYPE_PREV)
set (BUILD_CHANGE_USED_RTL_TYPE_PREV "${BUILD_CHANGE_USED_RTL_TYPE}" CACHE INTERNAL "" FORCE)
elseif (NOT "${BUILD_CHANGE_USED_RTL_TYPE_PREV}" STREQUAL "${BUILD_CHANGE_USED_RTL_TYPE}")
if ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "static/release RTL")
set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/release_rtl/static_rtl/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}" FORCE)
set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/release_rtl/static_rtl/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}" FORCE)
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "static/debug RTL")
set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/debug_rtl/static_rtl/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}" FORCE)
set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/debug_rtl/static_rtl/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}" FORCE)
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "dynamic/release RTL")
set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/release_rtl/dynamic_rtl/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}" FORCE)
set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/release_rtl/dynamic_rtl/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}" FORCE)
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "dynamic/debug RTL")
set (INSTALL_DIR_BIN "${OS_WITH_BIT}/${COMPILER}/debug_rtl/dynamic_rtl/bin" CACHE PATH "${INSTALL_DIR_BIN_DESCR}" FORCE)
set (INSTALL_DIR_LIB "${OS_WITH_BIT}/${COMPILER}/debug_rtl/dynamic_rtl/lib" CACHE PATH "${INSTALL_DIR_LIB_DESCR}" FORCE)
endif()
endif()
endif()
# OCCT headers: <prefix>/inc for windows,
# <prefix>/include/opencascade-7.0.0 for unix
if (NOT DEFINED INSTALL_DIR_INCLUDE)

View File

@@ -134,3 +134,76 @@ endif()
set (CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNo_Exception")
set (CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNo_Exception")
# unset unused configurations variables and update CACHE variables
get_cmake_property(ALL_CACHE_VARIABLES CACHE_VARIABLES)
string (REGEX MATCHALL "(^|;)CMAKE_[A-Z_]+_FLAGS[^;]*" CACHE_VARIABLES_FLAGS "${ALL_CACHE_VARIABLES}")
foreach (CACHE_FLAG ${CACHE_VARIABLES_FLAGS})
if (NOT "x${${CACHE_FLAG}}" STREQUAL "x")
OCCT_REMOVE_DUPLICATES_SUBSTRING(${${CACHE_FLAG}} ${CACHE_FLAG})
endif()
string (REGEX MATCH "CMAKE_[A-Z_]+_FLAGS_([^;]+)" CONFIGURATION_NAME "${CACHE_FLAG}")
string (TOLOWER "${CMAKE_MATCH_1}" CMAKE_MATCH_1)
set (ISFOUND OFF)
if (NOT "x${CMAKE_MATCH_1}" STREQUAL "x")
foreach (conf ${CMAKE_CONFIGURATION_TYPES})
string (TOLOWER "${conf}" conf)
if ( "${conf}" STREQUAL "${CMAKE_MATCH_1}" )
set (ISFOUND ON)
endif()
endforeach()
if (NOT ISFOUND AND MSVC)
unset("${CACHE_FLAG}" CACHE)
else()
set (${CACHE_FLAG} "${${CACHE_FLAG}}" CACHE STRING "" FORCE)
endif()
else()
set (${CACHE_FLAG} "${${CACHE_FLAG}}" CACHE STRING "" FORCE)
endif()
endforeach()
if (MSVC)
# Update CRT defines if BUILD_CHANGE_USED_RTL_TYPE variable was changed
if (NOT "${BUILD_CHANGE_USED_RTL_TYPE_PREV}" STREQUAL "${BUILD_CHANGE_USED_RTL_TYPE}")
set (BUILD_CHANGE_USED_RTL_TYPE_PREV "${BUILD_CHANGE_USED_RTL_TYPE}" CACHE INTERNAL "" FORCE)
get_cmake_property(ALL_CACHE_VARIABLES CACHE_VARIABLES)
string (REGEX MATCHALL "(^|;)CMAKE_C[X]*_FLAGS[^;]*" CACHE_VARIABLES_C_FLAGS "${ALL_CACHE_VARIABLES}")
foreach(CMAKE_C_FLAG ${CACHE_VARIABLES_C_FLAGS})
OCCT_REMOVE_CRL_DEFINES (${CMAKE_C_FLAG})
endforeach()
if ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "static/release RTL")
message (STATUS "Info. Release Static RTLs are used.")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MT")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MT")
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "static/debug RTL")
message (STATUS "Info. Debug Static RTLs are used.")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MTd")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MTd")
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "dynamic/release RTL")
message (STATUS "Info. Release Dynamic RTLs are used.")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MD")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MD")
elseif ("${BUILD_CHANGE_USED_RTL_TYPE}" STREQUAL "dynamic/debug RTL")
message (STATUS "Info. Debug Dynamic RTLs are used.")
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MDd")
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /MDd")
else()
string (REGEX MATCHALL "(^|;)CMAKE_C[X]*_FLAGS_[^;]+" CACHE_VARIABLES_C_FLAGS_WITH_CONF "${ALL_CACHE_VARIABLES}")
foreach(CMAKE_C_FLAG ${CACHE_VARIABLES_C_FLAGS_WITH_CONF})
string (REGEX MATCH "CMAKE_C[X]*_FLAGS_([^;]+)" CONFIGURATION_NAME "${CMAKE_C_FLAG}")
if ( "x${CMAKE_MATCH_1}" STREQUAL "xDEBUG")
set (${CMAKE_C_FLAG} "${${CMAKE_C_FLAG}} /MDd")
else()
set (${CMAKE_C_FLAG} "${${CMAKE_C_FLAG}} /MD")
endif()
endforeach()
endif()
foreach(CMAKE_C_FLAG ${CACHE_VARIABLES_C_FLAGS})
set (${CMAKE_C_FLAG} "${${CMAKE_C_FLAG}}" CACHE STRING "" FORCE)
endforeach()
endif()
endif()

View File

@@ -602,3 +602,17 @@ macro (OCCT_CREATE_SYMLINK_TO_FILE LIBRARY_NAME LINK_NAME)
")
endif()
endmacro()
macro (OCCT_REMOVE_CRL_DEFINES VARIABLE_NAME)
set( CompilerFlags /MDd /MTd /MD /MT )
foreach(CompilerFlag ${CompilerFlags})
string(REPLACE "${CompilerFlag}" "" ${VARIABLE_NAME} "${${VARIABLE_NAME}}")
endforeach()
endmacro()
function(OCCT_REMOVE_DUPLICATES_SUBSTRING INPUT_STRING OUTPUT_STRING)
separate_arguments(INPUT_STRING)
list(REMOVE_DUPLICATES INPUT_STRING)
string(REPLACE ";" " " INPUT_STRING "${INPUT_STRING}")
set(${OUTPUT_STRING} "${INPUT_STRING}" PARENT_SCOPE)
endfunction()

View File

@@ -122,6 +122,10 @@ leads to automatic search of Doxygen binaries. Building of it will be call Doxyg
to generate the documentation in HTML format. The documentation will be available in the
installation directory (overview.bat script) if INSTALL_DOC_Overview variable is checked")
set (BUILD_CHANGE_USED_RTL_TYPE_DESCR
"Indicates whether a multithreaded module is a DLL or static and specifies retail or debug versions of the run-time library.
In case of default value define /MDd will be used for Debug configuration and define /MD will be used for other configurations.")
set (3RDPARTY_DIR_DESCR
"The root directory where all required third-party products will be searched. If a
third-party product have been found - corresponding CMake variables will be specified