Salome HOME
updated copyright message
[modules/yacs.git] / src / engine_swig / CMakeLists.txt
index 06332b912206597546c378dfc842406b547d044d..455e39d77dc31ad9288d4f77a156a0261ae3f191 100644 (file)
@@ -1,9 +1,9 @@
-# Copyright (C) 2012-2013  CEA/DEN, EDF R&D, OPEN CASCADE
+# Copyright (C) 2012-2023  CEA/DEN, EDF R&D
 #
 # 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.
+# 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
@@ -21,10 +21,17 @@ INCLUDE(${SWIG_USE_FILE})
 
 # --- options ---
 
+IF(WIN32)                                       # if platform is Windows 64 bit 
+  IF("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")          
+    ADD_DEFINITIONS(/bigobj)                    # to avoid error C1128
+  ENDIF()
+ENDIF()
+
 # additional include directories
 INCLUDE_DIRECTORIES(
   ${PTHREAD_INCLUDE_DIR}
   ${OMNIORB_INCLUDE_DIR}
+  ${OMNIORBPY_INCLUDE_DIR}
   ${PYTHON_INCLUDE_DIRS}
   ${PROJECT_BINARY_DIR}/idl
   ${PROJECT_BINARY_DIR}
@@ -45,7 +52,6 @@ SET_PROPERTY(SOURCE pilot.i pypilot.i PROPERTY
 ADD_DEFINITIONS(
   ${PYTHON_DEFINITIONS}
   ${OMNIORB_DEFINITIONS}
-  -DYACS_PTHREAD
   )
 
 # libraries to link to
@@ -78,89 +84,66 @@ SET(_swig_SCRIPTS
   ${CMAKE_CURRENT_BINARY_DIR}/pypilot.py
 )
 
-ADD_CUSTOM_TARGET(docengine.i
-  COMMAND DOXSRCDIR=${PROJECT_SOURCE_DIR}/src/engine ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Misc/Doxyfile
-  COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Misc/doxy2swig.py -n xml/index.xml docengine.i
-  VERBATIM
-  WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
-  )
+IF(WIN32)
+  SET(SET_CMD set)
+  SET(SEP_CMD &&)
+ENDIF(WIN32)
+
+IF(SALOME_BUILD_DOC)
+  ADD_CUSTOM_TARGET(docengine.i
+    ${SET_CMD} DOXSRCDIR=${PROJECT_SOURCE_DIR}/src/engine ${SEP_CMD} ${DOXYGEN_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Misc/Doxyfile
+    COMMAND ${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/Misc/doxy2swig.py -n xml/index.xml docengine.i
+    VERBATIM
+    WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
+    )
+ENDIF(SALOME_BUILD_DOC)
 
 # --- rules ---
-SET(ENGINEINCLUDES 
-  Any.hxx     
-  DeploymentTree.hxx  
-  InputDataStreamPort.hxx         
-  OutPort.hxx               
-  SharedPtr.hxx 
-  AnyInputPort.hxx         
-  Dispatcher.hxx      
-  InputPort.hxx                   
-  OutputDataStreamPort.hxx  
-  StaticDefinedComposedNode.hxx 
-  Bloc.hxx                 
-  DynParaLoop.hxx     
-  InvalidExtractionException.hxx  
-  OutputPort.hxx            
-  Switch.hxx 
-  ComponentInstance.hxx    
-  ElementaryNode.hxx  
-  LinkInfo.hxx                    
-  Pool.hxx                  
-  Task.hxx 
-  ComposedNode.hxx         
-  Executor.hxx        
-  Logger.hxx                      
-  Port.hxx                  
-  TypeCode.hxx 
-  ConditionInputPort.hxx   
-  LogRecord.hxx                   
-  Proc.hxx                  
-  Visitor.hxx 
-  Container.hxx            
-  ForEachLoop.hxx     
-  Loop.hxx                        
-  RefCounter.hxx            
-  VisitorSaveSchema.hxx 
-  ConversionException.hxx  
-  ForLoop.hxx         
-  Node.hxx                        
-  Runtime.hxx               
-  VisitorSaveState.hxx 
-  DataFlowPort.hxx         
-  InGate.hxx          
-  OptimizerAlg.hxx                
-  Scheduler.hxx             
-  WhileLoop.hxx 
-  DataPort.hxx             
-  InlineNode.hxx      
-  OptimizerLoop.hxx               
-  ServiceInlineNode.hxx     
-  ComponentDefinition.hxx 
-  DataStreamPort.hxx       
-  InPort.hxx          
-  OutGate.hxx                     
-  ServiceNode.hxx           
-  Catalog.hxx  
-  PropertyInterface.hxx    
-  AnyOutputPort.hxx   
-  Pool.hxx
-  InPropertyPort.hxx
-)
-SET(SWIGINCLUDES ${ENGINEINCLUDES} 
-                "${PROJECT_SOURCE_DIR}/src/bases/yacsconfig.h" 
-                "ExecutorSwig.hxx")
-SWIG_ADD_MODULE(pilot   python pilot.i ExecutorSwig.cxx)
-SWIG_ADD_MODULE(pypilot python pypilot.i)
-ADD_DEPENDENCIES(_pilot pilot.i engtypemaps.i docengine.i ${SWIGINCLUDES})
-ADD_DEPENDENCIES(_pypilot pypilot.i pilot.i engtypemaps.i _pilot ${SWIGINCLUDES})
+SET(ENGINEINCL)
+FOREACH(f ${YACSlibEngine_HEADERS})     # defined in src/engine/CMakeLists.txt
+    LIST(APPEND ENGINEINCL ${PROJECT_SOURCE_DIR}/src/engine/${f})
+ENDFOREACH()
+
+SET(SWIGINCLUDES ${ENGINEINCL}  
+    "${PROJECT_SOURCE_DIR}/src/bases/yacsconfig.h" 
+    "ExecutorSwig.hxx"
+    "IteratorPy3.hxx")
+
+SET(SWIG_MODULE_pilot_EXTRA_DEPS engtypemaps.i ${SWIGINCLUDES})
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
+  SWIG_ADD_MODULE(pilot python pilot.i ExecutorSwig.cxx)
+ELSE()
+  SWIG_ADD_LIBRARY(pilot LANGUAGE python SOURCES pilot.i ExecutorSwig.cxx)
+ENDIF()
+SWIG_CHECK_GENERATION(pilot)
+
+SET(SWIG_MODULE_pypilot_EXTRA_DEPS pilot.i engtypemaps.i _pilot ${SWIGINCLUDES})
+IF(${CMAKE_VERSION} VERSION_LESS "3.8.0") 
+  SWIG_ADD_MODULE(pypilot python pypilot.i)
+ELSE()
+  SWIG_ADD_LIBRARY(pypilot LANGUAGE python SOURCES pypilot.i)
+ENDIF()
 
 SWIG_LINK_LIBRARIES(pilot   "${_link_LIBRARIES}")
 SWIG_LINK_LIBRARIES(pypilot "${_link_LIBRARIES}")
-IF(WINDOWS)
+
+IF(WIN32)
   SET_TARGET_PROPERTIES(_pilot   PROPERTIES DEBUG_OUTPUT_NAME _pilot_d)
   SET_TARGET_PROPERTIES(_pypilot PROPERTIES DEBUG_OUTPUT_NAME _pypilot_d)
-ENDIF(WINDOWS)
+ENDIF(WIN32)
 
 INSTALL(TARGETS ${SWIG_MODULE_pilot_REAL_NAME} ${SWIG_MODULE_pypilot_REAL_NAME} DESTINATION ${SALOME_INSTALL_PYTHON})
 
-SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}"  ${SALOME_INSTALL_PYTHON})
+SALOME_INSTALL_SCRIPTS("${_swig_SCRIPTS}"  ${SALOME_INSTALL_PYTHON} EXTRA_DPYS "${SWIG_MODULE_pilot_REAL_NAME};${SWIG_MODULE_pypilot_REAL_NAME}")
+
+### Test
+
+SALOME_GENERATE_TESTS_ENVIRONMENT(tests_env)
+ADD_TEST(NAME PlayGround0 COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/testPlayGround0.py)
+SET_TESTS_PROPERTIES(PlayGround0 PROPERTIES ENVIRONMENT "${tests_env}")
+ADD_TEST(NAME Base64Conv COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/testBase64Conv.py)
+SET_TESTS_PROPERTIES(Base64Conv PROPERTIES ENVIRONMENT "${tests_env}")
+SET(LOCAL_TEST_DIR ${SALOME_YACS_INSTALL_TEST}/engine_swig)
+SET(LOCAL_TEST_FILES testPlayGround0.py testBase64Conv.py basic_first_SSL.py)
+INSTALL(PROGRAMS ${LOCAL_TEST_FILES} DESTINATION ${LOCAL_TEST_DIR})
+INSTALL(FILES CTestTestfileInstall.cmake DESTINATION ${LOCAL_TEST_DIR} RENAME CTestTestfile.cmake)