diff --git a/CMakeLists.txt b/CMakeLists.txt index 22217ba30b0c3771a4fd51505549b658de616778..4cefad7288acc2f437db19d304657614f2004182 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -95,7 +95,9 @@ if(BORNAGAIN_GUI) string(APPEND CMAKE_CXX_FLAGS " -DHAVE_QT=ON") endif() include(BornAgain/Config) -include(BornAgain/PythonAPI) +if(BORNAGAIN_PYTHON) + include(BornAgain/PythonAPI) +endif() include(BornAgain/PythonDocs) # debug optimization @@ -134,6 +136,9 @@ if(BORNAGAIN_TIDY) endif() add_subdirectory(Fit) +if(BORNAGAIN_PYTHON) + add_dependencies(BornAgainFit swig_runtime) +endif() add_subdirectory(Tests/UnitTests/Fit) add_subdirectory(Core) diff --git a/Core/CMakeLists.txt b/Core/CMakeLists.txt index e6f5abbbadceee6fd94e32dbeebed724c4ce97f2..d08c9c3346e28dfb0a3050a88360f2ad3b1b0e57 100644 --- a/Core/CMakeLists.txt +++ b/Core/CMakeLists.txt @@ -34,10 +34,6 @@ endif(BORNAGAIN_PYTHON) # exposing library name and list of include directories outside set(${lib}_LIBRARY ${lib} PARENT_SCOPE) -if(BORNAGAIN_PYTHON) - add_dependencies(${lib} swig_runtime) -endif() - # --- external dependencies --- target_link_libraries(${lib} ${BornAgainFit_LIBRARY} ${CMAKE_THREAD_LIBS_INIT}) @@ -76,33 +72,9 @@ endif() # --- installation --- -install(TARGETS ${lib} DESTINATION ${destination_lib} COMPONENT Libraries) -install(FILES ${CMAKE_BINARY_DIR}/lib/lib${lib}.py - DESTINATION ${destination_lib} COMPONENT Libraries) # required by swig foreach(file ${include_files}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${destination_include}/${name}/${dir}) endforeach() -if(WIN32) - # python in windows required .pyd extension for the library name - if(BORNAGAIN_PYTHON) - add_custom_command( - TARGET ${lib} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} - ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}".pyd" - ) - install(FILES ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}.pyd - DESTINATION ${destination_lib} COMPONENT Libraries) - add_custom_command( - TARGET ${lib} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} - ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}${libsuffix} - ) - endif() -endif() diff --git a/Fit/CMakeLists.txt b/Fit/CMakeLists.txt index c4d423cdad03dd2f5382b0b59db75d78fbd9ead2..b9b52dec7e70e6068aced6bfae8cb0de310e9bbe 100644 --- a/Fit/CMakeLists.txt +++ b/Fit/CMakeLists.txt @@ -41,33 +41,9 @@ endif() # --- installation --- -install(TARGETS ${lib} DESTINATION ${destination_lib} COMPONENT Libraries) -install(FILES ${CMAKE_BINARY_DIR}/lib/lib${lib}.py - DESTINATION ${destination_lib} COMPONENT Libraries) # required by swig foreach(file ${include_files}) get_filename_component(dir ${file} DIRECTORY) install(FILES ${file} DESTINATION ${destination_include}/${name}/${dir}) endforeach() -if(WIN32) - # python in windows required .pyd extension for the library name - if(BORNAGAIN_PYTHON) - add_custom_command( - TARGET ${lib} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} - ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}".pyd" - ) - install(FILES ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}.pyd - DESTINATION ${destination_lib} COMPONENT Libraries) - add_custom_command( - TARGET ${lib} - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} - ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}${libsuffix} - ) - endif() -endif() diff --git a/cmake/BornAgain/PythonAPI.cmake b/cmake/BornAgain/PythonAPI.cmake index 59f2d020f55ea793e7fd4532113215e6dc96bafe..1262f810d6d710e97a9dedc8eea6f63b286febb1 100644 --- a/cmake/BornAgain/PythonAPI.cmake +++ b/cmake/BornAgain/PythonAPI.cmake @@ -1,5 +1,9 @@ # Configure and install the Swig runtime, the BornAgain Python module, and more +if(NOT BORNAGAIN_PYTHON) + message(FATAL_ERROR "PythonAPI included though BORNAGAIN_PYTHON=false") +endif() + configure_file(${WRAP_DIR}/python/plot_utils.py ${CMAKE_BINARY_DIR}/lib/bornagain/plot_utils.py COPYONLY) @@ -22,6 +26,7 @@ if(CONFIGURE_BINDINGS) DEPENDS ${swig_dependencies} ${include_files} ) endif() + add_custom_target(swig_runtime DEPENDS ${AUTO_DIR}/swig_runtime.h) install(DIRECTORY ${CMAKE_SOURCE_DIR}/Examples/ diff --git a/cmake/BornAgain/SwigLib.cmake b/cmake/BornAgain/SwigLib.cmake index 2ccb8a738aebf616a5d3d5111aa103aec9f31a52..856e74ebf422bf8695e1e3127df1e2e535e03548 100644 --- a/cmake/BornAgain/SwigLib.cmake +++ b/cmake/BornAgain/SwigLib.cmake @@ -69,4 +69,30 @@ function(SwigLib name lib TMP_DIR) target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS}) target_link_libraries(${lib} ${Python3_LIBRARIES}) + install(TARGETS ${lib} DESTINATION ${destination_lib} COMPONENT Libraries) + install(FILES ${CMAKE_BINARY_DIR}/lib/lib${lib}.py + DESTINATION ${destination_lib} COMPONENT Libraries) # required by swig + + if(WIN32) + # python in windows required .pyd extension for the library name + if(BORNAGAIN_PYTHON) + add_custom_command( + TARGET ${lib} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} + ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}".pyd" + ) + install(FILES ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}.pyd + DESTINATION ${destination_lib} COMPONENT Libraries) + add_custom_command( + TARGET ${lib} + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy + ${CMAKE_BINARY_DIR}/bin/${libprefix}${lib}${libsuffix} + ${CMAKE_BINARY_DIR}/lib/${libprefix}${lib}${libsuffix} + ) + endif() + endif() + endfunction()