]> SALOME platform Git repositories - modules/shaper.git/blob - src/ModelAPI/CMakeLists.txt
Salome HOME
Copyright update 2021
[modules/shaper.git] / src / ModelAPI / CMakeLists.txt
1 # Copyright (C) 2014-2021  CEA/DEN, EDF R&D
2 #
3 # This library is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU Lesser General Public
5 # License as published by the Free Software Foundation; either
6 # version 2.1 of the License, or (at your option) any later version.
7 #
8 # This library is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 # Lesser General Public License for more details.
12 #
13 # You should have received a copy of the GNU Lesser General Public
14 # License along with this library; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 #
17 # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 #
19
20 FIND_PACKAGE(SWIG REQUIRED)
21 INCLUDE(${SWIG_USE_FILE})
22 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR})
23 INCLUDE(UnitTest)
24
25 SET(PROJECT_HEADERS
26     ModelAPI.h
27     ModelAPI_Attribute.h
28     ModelAPI_AttributeBoolean.h
29     ModelAPI_AttributeIntArray.h
30     ModelAPI_AttributeDocRef.h
31     ModelAPI_AttributeDouble.h
32     ModelAPI_AttributeDoubleArray.h
33     ModelAPI_AttributeInteger.h
34     ModelAPI_AttributeRefAttr.h
35     ModelAPI_AttributeReference.h
36     ModelAPI_AttributeRefAttrList.h
37     ModelAPI_AttributeRefList.h
38     ModelAPI_AttributeSelection.h
39     ModelAPI_AttributeSelectionList.h
40     ModelAPI_AttributeString.h
41     ModelAPI_AttributeStringArray.h
42     ModelAPI_AttributeTables.h
43     ModelAPI_AttributeValidator.h
44     ModelAPI_BodyBuilder.h
45     ModelAPI_CompositeFeature.h
46     ModelAPI_Data.h
47     ModelAPI_Document.h
48     ModelAPI_Entity.h
49     ModelAPI_EventReentrantMessage.h
50     ModelAPI_Events.h
51     ModelAPI_Expression.h
52     ModelAPI_Feature.h
53     ModelAPI_FeatureValidator.h
54     ModelAPI_Filter.h
55     ModelAPI_FiltersArgs.h
56     ModelAPI_FiltersFactory.h
57     ModelAPI_FiltersFeature.h
58     ModelAPI_Folder.h
59     ModelAPI_IReentrant.h
60     ModelAPI_Object.h
61     ModelAPI_Plugin.h
62     ModelAPI_Result.h
63     ModelAPI_ResultBody.h
64     ModelAPI_ResultConstruction.h
65     ModelAPI_ResultField.h
66     ModelAPI_ResultGroup.h
67     ModelAPI_ResultParameter.h
68     ModelAPI_ResultPart.h
69     ModelAPI_Session.h
70     ModelAPI_Tools.h
71     ModelAPI_Validator.h
72 )
73
74 SET(PROJECT_SOURCES
75     ModelAPI_Attribute.cpp
76     ModelAPI_AttributeBoolean.cpp
77     ModelAPI_AttributeIntArray.cpp
78     ModelAPI_AttributeDocRef.cpp
79     ModelAPI_AttributeDouble.cpp
80     ModelAPI_AttributeDoubleArray.cpp
81     ModelAPI_AttributeInteger.cpp
82     ModelAPI_AttributeRefAttr.cpp
83     ModelAPI_AttributeReference.cpp
84     ModelAPI_AttributeRefAttrList.cpp
85     ModelAPI_AttributeRefList.cpp
86     ModelAPI_AttributeSelection.cpp
87     ModelAPI_AttributeSelectionList.cpp
88     ModelAPI_AttributeString.cpp
89     ModelAPI_AttributeStringArray.cpp
90     ModelAPI_AttributeTables.cpp
91     ModelAPI_AttributeValidator.cpp
92     ModelAPI_BodyBuilder.cpp
93     ModelAPI_CompositeFeature.cpp
94     ModelAPI_Data.cpp
95     ModelAPI_Document.cpp
96     ModelAPI_EventReentrantMessage.cpp
97     ModelAPI_Events.cpp
98     ModelAPI_Expression.cpp
99     ModelAPI_Feature.cpp
100     ModelAPI_FeatureValidator.cpp
101     ModelAPI_Filter.cpp
102     ModelAPI_Folder.cpp
103     ModelAPI_IReentrant.cpp
104     ModelAPI_Object.cpp
105     ModelAPI_Plugin.cpp
106     ModelAPI_Result.cpp
107     ModelAPI_ResultBody.cpp
108     ModelAPI_ResultConstruction.cpp
109     ModelAPI_ResultField.cpp
110     ModelAPI_ResultGroup.cpp
111     ModelAPI_ResultPart.cpp
112     ModelAPI_ResultParameter.cpp
113     ModelAPI_Session.cpp
114     ModelAPI_Tools.cpp
115 )
116
117 SET(PROJECT_LIBRARIES
118     Config
119     GeomAPI
120     Locale
121 )
122 SET(CMAKE_SWIG_FLAGS -threads -w325,321,362,383,302,403,451,473)
123 ADD_DEFINITIONS(-DMODELAPI_EXPORTS)
124
125 ADD_LIBRARY(ModelAPI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS})
126 SET_TARGET_PROPERTIES(ModelAPI PROPERTIES LINKER_LANGUAGE CXX)
127 TARGET_LINK_LIBRARIES(ModelAPI ${PROJECT_LIBRARIES})
128
129 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/Config
130                     ${PROJECT_SOURCE_DIR}/src/Events
131                     ${PROJECT_SOURCE_DIR}/src/GeomAPI
132                     ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI
133                     ${PROJECT_SOURCE_DIR}/src/Locale
134 )
135
136
137 SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES CPLUSPLUS ON)
138 # "-includeall" is not needed: it starts to follow the standard inludes (like "string") without success
139 # SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES SWIG_FLAGS)
140 SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES SWIG_DEFINITIONS "-shadow")
141 #SET_SOURCE_FILES_PROPERTIES(ModelAPIPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "-D_WIN32")
142
143 SET(SWIG_SCRIPTS
144   ${CMAKE_CURRENT_BINARY_DIR}/ModelAPI.py
145 )
146
147 SET(SWIG_LINK_LIBRARIES
148   ModelAPI
149   GeomAPI
150   ${PYTHON_LIBRARIES}
151 )
152
153 IF(${CMAKE_VERSION} VERSION_GREATER "3.8.0")
154   SWIG_ADD_LIBRARY(ModelAPI LANGUAGE python SOURCES ModelAPI.i ${PROJECT_HEADERS})
155 ELSE()
156   SWIG_ADD_MODULE(ModelAPI python ModelAPI.i ${PROJECT_HEADERS})
157 ENDIF()
158 SWIG_LINK_LIBRARIES(ModelAPI ${SWIG_LINK_LIBRARIES})
159
160 IF(WIN32)
161   SET_TARGET_PROPERTIES(_ModelAPI PROPERTIES DEBUG_OUTPUT_NAME _ModelAPI_d)
162 ENDIF(WIN32)
163
164 INSTALL(TARGETS _ModelAPI DESTINATION ${SHAPER_INSTALL_SWIG})
165 INSTALL(TARGETS ModelAPI DESTINATION ${SHAPER_INSTALL_BIN})
166 INSTALL(FILES ${SWIG_SCRIPTS} DESTINATION ${SHAPER_INSTALL_SWIG})
167
168 include(tests.set)
169
170 ADD_UNIT_TESTS(${TEST_NAMES})
171
172 if(${HAVE_SALOME})
173   enable_testing()
174   set(TEST_INSTALL_DIRECTORY "${SALOME_SHAPER_INSTALL_TESTS}/ModelAPI")
175   
176   install(FILES CTestTestfileInstall.cmake
177   DESTINATION ${TEST_INSTALL_DIRECTORY}
178   RENAME CTestTestfile.cmake)
179   install(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
180   
181   set(TMP_TESTS_NAMES)
182   foreach(tfile ${TEST_NAMES})
183     list(APPEND TMP_TESTS_NAMES "Test/${tfile}")
184   endforeach(tfile ${TEST_NAMES})
185   
186   install(FILES ${TMP_TESTS_NAMES} DESTINATION ${TEST_INSTALL_DIRECTORY})
187 endif(${HAVE_SALOME})