# Copyright (C) 2013-2015 CEA/DEN, EDF R&D, OPEN CASCADE # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public # License as published by the Free Software Foundation; either # version 2.1 of the License, or (at your option) any later version. # # This library is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU # Lesser General Public License for more details. # # You should have received a copy of the GNU Lesser General Public # License along with this library; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR) PROJECT(SimanIO C CXX) # Versioning # =========== # Project name, upper case STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC) SET(${PROJECT_NAME_UC}_MAJOR_VERSION 1) SET(${PROJECT_NAME_UC}_MINOR_VERSION 0) SET(${PROJECT_NAME_UC}_PATCH_VERSION 0) SET(${PROJECT_NAME_UC}_VERSION ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION}) # Our own set of macros: LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules) INCLUDE(SimanIOMacros) # Win32 specific definitions to avoid problems with std collection and iterators IF(WIN32) ## Windows specific: ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) # To disable windows warnings for strcpy, fopen, ... ADD_DEFINITIONS(-D_SCL_SECURE_NO_WARNINGS) # To disable windows warnings generated by checked iterators(e.g. std::copy, std::transform, ...) ################################################################################################ # # RNV: In the SALOME sometimes operating with STL collections is done in not fully valid way. # To avoid run-time exception in Debug mode on Windows default values of the _SECURE_SCL, # _SECURE_SCL_THROWS and _HAS_ITERATOR_DEBUGGING macros were redefined. It solved a problem # then we used tne Microsoft Visual Studio 2008 to build SALOME on Windows platform. # But in the Microsoft Visual Studio 2010 these macros affect on the size of STL collection # classes(in difference from the Microsoft Visual Studio 2008: in this version of MSVS size # of the STL collection classes does not depend on these macros). # All pre-requisite products are built by MSVS 2010 in Debug mode with the default # values of the metioned above macros (namely _SECURE_SCL=1, _HAS_ITERATOR_DEBUGGING=1 and # _SECURE_SCL_THROWS=1). So SALOME modules should be build in the same configuration. # ################################################################################################ # # Disable iterator debugging on WINDOWS to avoid runtime error during checking iterators # # _SECURE_SCL # # If defined as 1, unsafe iterator use causes a runtime error. # # If defined as 0, checked iterators are disabled. # # The default value for _SECURE_SCL is 1 # # _SECURE_SCL_THROWS # # If defined as 1, an out of range iterator use causes an exception at runtime. # # If defined as 0, the program is terminated by calling invalid_parameter. # # The default value for _SECURE_SCL_THROWS is 0 # # ADD_DEFINITIONS(-D_SECURE_SCL=0 -D_SECURE_SCL_THROWS=0) # # # The symbol _HAS_ITERATOR_DEBUGGING can be used to turn off the iterator debugging feature in a debug build # # If defined as 1, iterator debugging is enabled. # # If defined as 0, iterator debugging is disabled. # # The default value for _HAS_ITERATOR_DEBUGGING is 1 # # IF(NOT CMAKE_BUILD_TYPE STREQUAL "RELEASE" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") # ADD_DEFINITIONS(-D_HAS_ITERATOR_DEBUGGING=0) # ENDIF(NOT CMAKE_BUILD_TYPE STREQUAL "RELEASE" AND NOT CMAKE_BUILD_TYPE STREQUAL "Release") ################################################################################################ ENDIF(WIN32) # User options # ============ IF(WIN32 AND NOT CYGWIN) SET(INSTALL_CMAKE_CONFIG_DIR cmake) ELSE() SET(INSTALL_CMAKE_CONFIG_DIR share/cmake/simanio) ENDIF() SET(INSTALL_INCLUDE_DIR include) # Prerequisites detection: # ======================== FIND_PACKAGE(SimanIOWSO2 REQUIRED) # Configure # ========= CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/src/SimanIO_Version.hxx.in ${CMAKE_CURRENT_BINARY_DIR}/src/SimanIO_Version.hxx @ONLY) INSTALL(FILES ${CMAKE_CURRENT_BINARY_DIR}/src/SimanIO_Version.hxx DESTINATION include) ADD_SUBDIRECTORY(src) ADD_SUBDIRECTORY(scripts) # Export logic # ============ INCLUDE(CMakePackageConfigHelpers) # Add all targets to the build-tree export set EXPORT(TARGETS SimanIO FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake) # Create the configuration files: # - in the build tree: # Ensure the variables are always defined for the configure: SET(WSO2_ROOT_DIR "${WSO2_ROOT_DIR}") SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include") CONFIGURE_PACKAGE_CONFIG_FILE(misc/${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}" PATH_VARS CONF_INCLUDE_DIRS INSTALL_CMAKE_CONFIG_DIR CMAKE_INSTALL_PREFIX WSO2_ROOT_DIR) # - in the install tree: # Get the relative path of the include directory so # we can register it in the generated configuration files: SET(CONF_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}") CONFIGURE_PACKAGE_CONFIG_FILE(misc/${PROJECT_NAME}Config.cmake.in ${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake INSTALL_DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}" PATH_VARS CONF_INCLUDE_DIRS INSTALL_CMAKE_CONFIG_DIR CMAKE_INSTALL_PREFIX WSO2_ROOT_DIR) WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake VERSION ${${PROJECT_NAME_UC}_VERSION} COMPATIBILITY AnyNewerVersion) # Install the CMake configuration files: INSTALL(FILES "${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake" "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake" DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}") # Install the export set for use with the install-tree INSTALL(EXPORT ${PROJECT_NAME}Targets DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}")