Salome HOME
New CMake procedure with conflict detection.
[tools/libbatch.git] / CMakeLists.txt
1 #  Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
2 #
3 #  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 #  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 #
6 #  This library is free software; you can redistribute it and/or
7 #  modify it under the terms of the GNU Lesser General Public
8 #  License as published by the Free Software Foundation; either
9 #  version 2.1 of the License.
10 #
11 #  This library is distributed in the hope that it will be useful,
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 #  Lesser General Public License for more details.
15 #
16 #  You should have received a copy of the GNU Lesser General Public
17 #  License along with this library; if not, write to the Free Software
18 #  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 #
20 #  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 #
22
23 CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8 FATAL_ERROR)
24 PROJECT(LibBatch C CXX)
25
26 # Versioning
27 # ===========
28 # Project name, upper case
29 STRING(TOUPPER ${PROJECT_NAME} PROJECT_NAME_UC)
30
31 SET(${PROJECT_NAME_UC}_MAJOR_VERSION 2)
32 SET(${PROJECT_NAME_UC}_MINOR_VERSION 0)
33 SET(${PROJECT_NAME_UC}_PATCH_VERSION 0)
34 SET(${PROJECT_NAME_UC}_VERSION
35   ${${PROJECT_NAME_UC}_MAJOR_VERSION}.${${PROJECT_NAME_UC}_MINOR_VERSION}.${${PROJECT_NAME_UC}_PATCH_VERSION})
36
37 # Our own set of macros:
38 LIST(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/CMakeModules)
39 INCLUDE(libbatchMacros)
40
41 # User options
42 # ============
43 SET(INSTALL_CMAKE_CONFIG_DIR share/cmake)
44 SET(INSTALL_INCLUDE_DIR include)
45
46 SET(LIBBATCH_LOCAL_SUBMISSION TRUE CACHE BOOL "Build classes for local submission")
47 SET(LIBBATCH_PYTHON_WRAPPING TRUE CACHE BOOL "Generate Python wrapping")
48 SET(LIBBATCH_TESTS FALSE CACHE BOOL "Enable testing")
49
50 IF(LIBBATCH_TESTS)
51   ENABLE_TESTING()
52 ENDIF()
53 IF(LIBBATCH_LOCAL_SUBMISSION)
54   LIBBATCH_FIND_ALL_LOCAL_COMMANDS()
55 ENDIF()
56
57 # Prerequisites detection:
58 # ========================
59 FIND_PACKAGE(LibbatchPThread REQUIRED)
60
61 IF (LIBBATCH_PYTHON_WRAPPING)
62   FIND_PACKAGE(LibbatchPython REQUIRED)
63   FIND_PACKAGE(LibbatchSWIG REQUIRED)
64   
65   MESSAGE("TODO TODO check Python path win32")
66   SET(LIBBATCH_PYTHONPATH lib/python${PYTHON_VERSION}/site-packages)
67 ENDIF()
68
69 # Configuration summary
70 # =====================
71 LIBBATCH_SUMMARY()
72
73 # Configure
74 # =========
75 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/libbatch_config.h.in ${CMAKE_CURRENT_BINARY_DIR}/libbatch_config.h)
76 ADD_SUBDIRECTORY(src)
77 ADD_SUBDIRECTORY(misc)
78
79 # Export logic
80 # ============
81 INCLUDE(CMakePackageConfigHelpers)
82
83 # Add all targets to the build-tree export set
84 EXPORT(TARGETS batch
85   FILE ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Targets.cmake)
86
87 # Create the configuration files:
88 #   - in the build tree:
89
90 #      Ensure the variables are always defined for the configure:
91 SET(LIBBATCH_PYTHONPATH "${LIBBATCH_PYTHONPATH}")
92 SET(PYTHON_ROOT_DIR "${PYTHON_ROOT_DIR}")
93 SET(SWIG_ROOT_DIR "${SWIG_ROOT_DIR}")
94  
95 SET(CONF_INCLUDE_DIRS "${PROJECT_SOURCE_DIR}/include" "${PROJECT_BINARY_DIR}/include")
96 CONFIGURE_PACKAGE_CONFIG_FILE(misc/${PROJECT_NAME}Config.cmake.in 
97     ${PROJECT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
98     INSTALL_DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}"
99     PATH_VARS CONF_INCLUDE_DIRS INSTALL_CMAKE_CONFIG_DIR CMAKE_INSTALL_PREFIX LIBBATCH_PYTHONPATH
100               PYTHON_ROOT_DIR SWIG_ROOT_DIR)
101
102 #   - in the install tree:
103 #       Get the relative path of the include directory so 
104 #       we can register it in the generated configuration files:
105 SET(CONF_INCLUDE_DIRS "${CMAKE_INSTALL_PREFIX}/${INSTALL_INCLUDE_DIR}")
106 CONFIGURE_PACKAGE_CONFIG_FILE(misc/${PROJECT_NAME}Config.cmake.in 
107     ${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake
108     INSTALL_DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}"
109     PATH_VARS CONF_INCLUDE_DIRS INSTALL_CMAKE_CONFIG_DIR CMAKE_INSTALL_PREFIX LIBBATCH_PYTHONPATH
110             PYTHON_ROOT_DIR SWIG_ROOT_DIR)
111
112 WRITE_BASIC_PACKAGE_VERSION_FILE(${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
113     VERSION ${${PROJECT_NAME_UC}_VERSION}
114     COMPATIBILITY AnyNewerVersion)
115   
116 # Install the CMake configuration files:
117 INSTALL(FILES
118   "${PROJECT_BINARY_DIR}/to_install/${PROJECT_NAME}Config.cmake"
119   "${PROJECT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
120   DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}")
121
122 # Install the export set for use with the install-tree
123 INSTALL(EXPORT LibBatchTargets DESTINATION "${INSTALL_CMAKE_CONFIG_DIR}")
124
125 # Packaging logic
126 # ===============
127 SET(CPACK_GENERATOR TGZ)
128 SET(CPACK_SOURCE_GENERATOR TGZ ZIP)
129 SET(CPACK_PACKAGE_VERSION_MAJOR ${${PROJECT_NAME}_MAJOR_VERSION})
130 SET(CPACK_PACKAGE_VERSION_MINOR ${${PROJECT_NAME}_MINOR_VERSION})
131 SET(CPACK_PACKAGE_VERSION_PATCH ${${PROJECT_NAME}_PATCH_VERSION})
132 SET(CPACK_SOURCE_IGNORE_FILES /\\\\.;/CVS/;~;/.git/)
133 SET(CPACK_SOURCE_PACKAGE_FILE_NAME ${PROJECT_NAME}-${${PROJECT_NAME}_VERSION})
134 INCLUDE(CPack)
135