Salome HOME
fc8bd50a41bfada129777909b0354d4d00c5caf0
[modules/shaper.git] / src / ModelAPI / CMakeLists.txt
1 # Copyright (C) 2014-2023  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_AttributeImage.h
30     ModelAPI_AttributeIntArray.h
31     ModelAPI_AttributeDocRef.h
32     ModelAPI_AttributeDouble.h
33     ModelAPI_AttributeDoubleArray.h
34     ModelAPI_AttributeInteger.h
35     ModelAPI_AttributeRefAttr.h
36     ModelAPI_AttributeReference.h
37     ModelAPI_AttributeRefAttrList.h
38     ModelAPI_AttributeRefList.h
39     ModelAPI_AttributeSelection.h
40     ModelAPI_AttributeSelectionList.h
41     ModelAPI_AttributeString.h
42     ModelAPI_AttributeStringArray.h
43     ModelAPI_AttributeTables.h
44     ModelAPI_AttributeValidator.h
45     ModelAPI_BodyBuilder.h
46     ModelAPI_CompositeFeature.h
47     ModelAPI_Data.h
48     ModelAPI_Document.h
49     ModelAPI_Entity.h
50     ModelAPI_EventReentrantMessage.h
51     ModelAPI_Events.h
52     ModelAPI_Expression.h
53     ModelAPI_Feature.h
54     ModelAPI_FeatureValidator.h
55     ModelAPI_Filter.h
56     ModelAPI_FiltersArgs.h
57     ModelAPI_FiltersFactory.h
58     ModelAPI_FiltersFeature.h
59     ModelAPI_Folder.h
60     ModelAPI_IReentrant.h
61     ModelAPI_Object.h
62     ModelAPI_Plugin.h
63     ModelAPI_Result.h
64     ModelAPI_ResultBody.h
65     ModelAPI_ResultConstruction.h
66     ModelAPI_ResultField.h
67     ModelAPI_ResultGroup.h
68     ModelAPI_ResultParameter.h
69     ModelAPI_ResultPart.h
70     ModelAPI_Session.h
71     ModelAPI_Tools.h
72     ModelAPI_Validator.h
73 )
74
75 SET(PROJECT_SOURCES
76     ModelAPI_Attribute.cpp
77     ModelAPI_AttributeBoolean.cpp
78     ModelAPI_AttributeImage.cpp
79     ModelAPI_AttributeIntArray.cpp
80     ModelAPI_AttributeDocRef.cpp
81     ModelAPI_AttributeDouble.cpp
82     ModelAPI_AttributeDoubleArray.cpp
83     ModelAPI_AttributeInteger.cpp
84     ModelAPI_AttributeRefAttr.cpp
85     ModelAPI_AttributeReference.cpp
86     ModelAPI_AttributeRefAttrList.cpp
87     ModelAPI_AttributeRefList.cpp
88     ModelAPI_AttributeSelection.cpp
89     ModelAPI_AttributeSelectionList.cpp
90     ModelAPI_AttributeString.cpp
91     ModelAPI_AttributeStringArray.cpp
92     ModelAPI_AttributeTables.cpp
93     ModelAPI_AttributeValidator.cpp
94     ModelAPI_BodyBuilder.cpp
95     ModelAPI_CompositeFeature.cpp
96     ModelAPI_Data.cpp
97     ModelAPI_Document.cpp
98     ModelAPI_EventReentrantMessage.cpp
99     ModelAPI_Events.cpp
100     ModelAPI_Expression.cpp
101     ModelAPI_Feature.cpp
102     ModelAPI_FeatureValidator.cpp
103     ModelAPI_Filter.cpp
104     ModelAPI_Folder.cpp
105     ModelAPI_IReentrant.cpp
106     ModelAPI_Object.cpp
107     ModelAPI_Plugin.cpp
108     ModelAPI_Result.cpp
109     ModelAPI_ResultBody.cpp
110     ModelAPI_ResultConstruction.cpp
111     ModelAPI_ResultField.cpp
112     ModelAPI_ResultGroup.cpp
113     ModelAPI_ResultPart.cpp
114     ModelAPI_ResultParameter.cpp
115     ModelAPI_Session.cpp
116     ModelAPI_Tools.cpp
117 )
118
119 SET(PROJECT_LIBRARIES
120     Config
121     GeomAPI
122     Locale
123 )
124 SET(CMAKE_SWIG_FLAGS -threads -w325,321,362,383,302,403,451,473)
125 ADD_DEFINITIONS(-DMODELAPI_EXPORTS)
126
127 ADD_LIBRARY(ModelAPI SHARED ${PROJECT_SOURCES} ${PROJECT_HEADERS})
128 SET_TARGET_PROPERTIES(ModelAPI PROPERTIES LINKER_LANGUAGE CXX)
129 TARGET_LINK_LIBRARIES(ModelAPI ${PROJECT_LIBRARIES})
130
131 INCLUDE_DIRECTORIES(${PROJECT_SOURCE_DIR}/src/Config
132                     ${PROJECT_SOURCE_DIR}/src/Events
133                     ${PROJECT_SOURCE_DIR}/src/GeomAPI
134                     ${PROJECT_SOURCE_DIR}/src/GeomAlgoAPI
135                     ${PROJECT_SOURCE_DIR}/src/Locale
136 )
137
138
139 SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES CPLUSPLUS ON)
140 # "-includeall" is not needed: it starts to follow the standard inludes (like "string") without success
141 # SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES SWIG_FLAGS)
142 SET_SOURCE_FILES_PROPERTIES(ModelAPI.i PROPERTIES SWIG_DEFINITIONS "-shadow")
143 #SET_SOURCE_FILES_PROPERTIES(ModelAPIPYTHON_wrap.cxx PROPERTIES COMPILE_FLAGS "-D_WIN32")
144
145 SET(SWIG_SCRIPTS
146   ${CMAKE_CURRENT_BINARY_DIR}/ModelAPI.py
147 )
148
149 SET(SWIG_LINK_LIBRARIES
150   ModelAPI
151   GeomAPI
152   ${PYTHON_LIBRARIES}
153 )
154
155 IF(${CMAKE_VERSION} VERSION_GREATER "3.8.0")
156   SWIG_ADD_LIBRARY(ModelAPI LANGUAGE python SOURCES ModelAPI.i ${PROJECT_HEADERS})
157 ELSE()
158   SWIG_ADD_MODULE(ModelAPI python ModelAPI.i ${PROJECT_HEADERS})
159 ENDIF()
160 SWIG_LINK_LIBRARIES(ModelAPI ${SWIG_LINK_LIBRARIES})
161
162 IF(WIN32)
163   SET_TARGET_PROPERTIES(_ModelAPI PROPERTIES DEBUG_OUTPUT_NAME _ModelAPI_d)
164 ENDIF(WIN32)
165
166 INSTALL(TARGETS _ModelAPI DESTINATION ${SHAPER_INSTALL_SWIG})
167 INSTALL(TARGETS ModelAPI DESTINATION ${SHAPER_INSTALL_BIN})
168 INSTALL(FILES ${SWIG_SCRIPTS} DESTINATION ${SHAPER_INSTALL_SWIG})
169
170 include(tests.set)
171
172 ADD_UNIT_TESTS(${TEST_NAMES})
173
174 if(${HAVE_SALOME})
175   enable_testing()
176   set(TEST_INSTALL_DIRECTORY "${SALOME_SHAPER_INSTALL_TESTS}/ModelAPI")
177   
178   install(FILES CTestTestfileInstall.cmake
179   DESTINATION ${TEST_INSTALL_DIRECTORY}
180   RENAME CTestTestfile.cmake)
181   install(FILES tests.set DESTINATION ${TEST_INSTALL_DIRECTORY})
182   
183   set(TMP_TESTS_NAMES)
184   foreach(tfile ${TEST_NAMES})
185     list(APPEND TMP_TESTS_NAMES "Test/${tfile}")
186   endforeach(tfile ${TEST_NAMES})
187   
188   install(FILES ${TMP_TESTS_NAMES} DESTINATION ${TEST_INSTALL_DIRECTORY})
189 endif(${HAVE_SALOME})