Skip to content
Snippets Groups Projects
Commit 13d77cd3 authored by Wuttke, Joachim's avatar Wuttke, Joachim
Browse files

CMake Fit & Core: group Py-related clauses

parent d7120792
No related branches found
No related tags found
No related merge requests found
......@@ -17,6 +17,16 @@ if(${Cerf_IS_CPP})
string(APPEND CMAKE_CXX_FLAGS " -DCERF_AS_CPP=ON")
endif()
if(BORNAGAIN_PYTHON)
list(APPEND source_files "${AUTO_DIR}/lib${lib}_wrap.cpp")
endif()
# --- making library ---
add_library(${lib} SHARED ${source_files})
set_target_properties(${lib} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${lib}_LIBRARY_TYPE SHARED)
if(BORNAGAIN_PYTHON)
if(CONFIGURE_BINDINGS)
......@@ -79,24 +89,17 @@ if(BORNAGAIN_PYTHON)
-Wno-deprecated-declarations")
endif()
list(APPEND source_files "${AUTO_DIR}/lib${lib}_wrap.cpp")
endif(BORNAGAIN_PYTHON)
# --- making library ---
add_dependencies(${lib} ${lib}_python)
add_library(${lib} SHARED ${source_files})
set_target_properties(${lib} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${lib}_LIBRARY_TYPE SHARED)
target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_PYTHON)
target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS})
target_link_libraries(${lib} ${Python3_LIBRARIES})
if(BORNAGAIN_PYTHON)
add_dependencies(${lib} ${lib}_python)
endif()
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()
......@@ -132,12 +135,6 @@ if(BORNAGAIN_MPI)
target_link_libraries(${lib} ${MPI_LIBRARIES})
endif()
if(BORNAGAIN_PYTHON)
target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_PYTHON)
target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS})
target_link_libraries(${lib} ${Python3_LIBRARIES})
endif()
if(APPLE AND BORNAGAIN_APPLE_BUNDLE)
set(link_flags "-Wl,-rpath,@loader_path/../../Frameworks")
set_target_properties(${lib} PROPERTIES LINK_FLAGS ${link_flags})
......
......@@ -11,8 +11,16 @@ file(GLOB source_files */*.cpp)
file(GLOB include_files RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} */*.h)
if(BORNAGAIN_PYTHON)
list(APPEND source_files "${AUTO_DIR}/lib${lib}_wrap.cpp")
endif()
# --- making library ---
add_library(${lib} SHARED ${source_files})
set_target_properties(${lib} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${lib}_LIBRARY_TYPE SHARED)
file(MAKE_DIRECTORY ${AUTO_DIR})
if(BORNAGAIN_PYTHON)
if(CONFIGURE_BINDINGS)
......@@ -74,19 +82,13 @@ if(BORNAGAIN_PYTHON)
-Wno-deprecated-declarations")
endif()
list(APPEND source_files "${AUTO_DIR}/lib${lib}_wrap.cpp")
endif(BORNAGAIN_PYTHON)
# --- making library ---
add_dependencies(${lib} ${lib}_python)
add_library(${lib} SHARED ${source_files})
set_target_properties(${lib} PROPERTIES PREFIX ${libprefix} SUFFIX ${libsuffix})
set(${lib}_LIBRARY_TYPE SHARED)
target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_PYTHON)
target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS})
target_link_libraries(${lib} ${Python3_LIBRARIES})
if(BORNAGAIN_PYTHON)
add_dependencies(${lib} ${lib}_python)
endif()
endif(BORNAGAIN_PYTHON)
# exposing library name and list of include directories outside
set(${lib}_LIBRARY ${lib} PARENT_SCOPE)
......@@ -98,12 +100,6 @@ target_include_directories(${lib}
target_link_libraries(${lib} ${RootMinimizers_LIBRARY} ${Boost_LIBRARIES})
if(BORNAGAIN_PYTHON)
target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_PYTHON)
target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS})
target_link_libraries(${lib} ${Python3_LIBRARIES})
endif()
if(APPLE AND BORNAGAIN_APPLE_BUNDLE)
set(link_flags "-Wl,-rpath,@loader_path/../../Frameworks")
set_target_properties(${lib} PROPERTIES LINK_FLAGS ${link_flags})
......
......@@ -4,93 +4,5 @@ function(SwigLib name lib)
return()
endif()
file(MAKE_DIRECTORY ${AUTO_DIR})
if(CONFIGURE_BINDINGS)
set(TMP_DIR ${CMAKE_CURRENT_BINARY_DIR}/Wrap)
file(MAKE_DIRECTORY ${TMP_DIR})
GeneratePythonDocs(${AUTO_DIR}/doxygen${name}.i ${WRAP_DIR}/swig)
set(swig_dependencies
${WRAP_DIR}/swig/lib${lib}.i
${WRAP_DIR}/swig/directors.i
${WRAP_DIR}/swig/extend${name}.i
${WRAP_DIR}/swig/ignores.i
${WRAP_DIR}/swig/shared_pointers.i
${WRAP_DIR}/swig/warnings.i
)
foreach(FNAM ${swig_dependencies})
if(NOT EXISTS ${FNAM})
message(FATAL_ERROR "Could NOT find SWIG input ${FNAM}")
endif()
endforeach()
list(APPEND swig_dependencies ${AUTO_DIR}/doxygen${name}.i)
set(SWIG_FLAGS "-c++;-python;-o;${AUTO_DIR}/lib${lib}_wrap.cpp;-outdir;${TMP_DIR}"
";-I${CMAKE_SOURCE_DIR};-I${CMAKE_BINARY_DIR}/inc")
add_custom_command(
OUTPUT ${AUTO_DIR}/lib${lib}.py
COMMAND ${Python3_EXECUTABLE} ${WRAP_DIR}/swig/tweaks.py
${TMP_DIR}/lib${lib}.py
${AUTO_DIR}/lib${lib}.py
DEPENDS ${TMP_DIR}/lib${lib}.py
)
add_custom_command(
OUTPUT ${TMP_DIR}/lib${lib}.py
${AUTO_DIR}/lib${lib}_wrap.h
${AUTO_DIR}/lib${lib}_wrap.cpp
COMMAND ${SWIG_EXECUTABLE} ${SWIG_FLAGS} ${WRAP_DIR}/swig/lib${lib}.i
DEPENDS ${swig_dependencies} ${include_files}
)
endif(CONFIGURE_BINDINGS)
add_custom_target(
${lib}_python
COMMAND ${CMAKE_COMMAND}
-E copy ${AUTO_DIR}/lib${lib}.py ${CMAKE_BINARY_DIR}/lib/lib${lib}.py
COMMAND ${CMAKE_COMMAND}
-E copy ${AUTO_DIR}/lib${lib}.py ${CMAKE_BINARY_DIR}/lib/bornagain/lib${lib}.py
DEPENDS ${AUTO_DIR}/lib${lib}.py
)
add_dependencies(${lib} ${lib}_python)
if((CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
OR (CMAKE_CXX_COMPILER_ID STREQUAL "GNU"))
# suppress warnings from auto-generated code (last updated for Swig 4.0.1)
set_source_files_properties(${AUTO_DIR}/lib${lib}_wrap.cpp
PROPERTIES COMPILE_OPTIONS
"-Wno-unused-parameter;-Wno-missing-field-initializers;-Wno-sometimes-uninitialized;\
-Wno-deprecated-declarations")
endif()
target_compile_definitions(${lib} PUBLIC -DBORNAGAIN_PYTHON)
target_include_directories(${lib} PUBLIC ${Python3_INCLUDE_DIRS} ${Python3_NumPy_INCLUDE_DIRS})
target_link_libraries(${lib} ${Python3_LIBRARIES})
install(FILES ${CMAKE_BINARY_DIR}/lib/lib${lib}.py
DESTINATION ${destination_lib} COMPONENT Libraries)
if(WIN32)
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()
endfunction()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment