From ee5d43bbf8c541c36e4a42bb769a7078bf8f40b1 Mon Sep 17 00:00:00 2001 From: "Joachim Wuttke (h)" <j.wuttke@fz-juelich.de> Date: Mon, 5 Oct 2020 23:50:30 +0200 Subject: [PATCH] ctd and finish --- CMakeLists.txt | 7 ++++++- Core/CMakeLists.txt | 28 ---------------------------- Fit/CMakeLists.txt | 24 ------------------------ cmake/BornAgain/PythonAPI.cmake | 5 +++++ cmake/BornAgain/SwigLib.cmake | 26 ++++++++++++++++++++++++++ 5 files changed, 37 insertions(+), 53 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 22217ba30b0..4cefad7288a 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 e6f5abbbadc..d08c9c3346e 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 c4d423cdad0..b9b52dec7e7 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 59f2d020f55..1262f810d6d 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 2ccb8a738ae..856e74ebf42 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() -- GitLab