X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=CMakeLists.txt;h=494c16ad5149e086a654789c2041e002006d623b;hb=6a7cfa3b0a0cdb9e3c63d5e2f84d164d40bdc7ba;hp=58f7a6671c8c3200552a930543918c752ec9828e;hpb=2560fcf1fa85c3851e7e11fd850baaa66d2b2de5;p=tools%2Fsimanio.git diff --git a/CMakeLists.txt b/CMakeLists.txt index 58f7a66..494c16a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,142 @@ -project(SimanIO) -cmake_minimum_required(VERSION 2.4) -add_subdirectory(src lib) +# 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}")