CMakeLists.txt 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. # Sources for python extension
  2. set(_scattnlay_python_sources
  3. ${CMAKE_CURRENT_LIST_DIR}/nmie.hpp
  4. ${CMAKE_CURRENT_LIST_DIR}/nmie.cc
  5. ${CMAKE_CURRENT_LIST_DIR}/nmie-precision.hpp
  6. ${CMAKE_CURRENT_LIST_DIR}/special-functions-impl.hpp
  7. ${CMAKE_CURRENT_LIST_DIR}/nmie-basic.hpp
  8. ${CMAKE_CURRENT_LIST_DIR}/nmie-nearfield.hpp
  9. ${CMAKE_CURRENT_LIST_DIR}/pb11_wrapper.cc)
  10. # Define python extension
  11. add_library(python3-scattnlay SHARED ${_scattnlay_python_sources})
  12. if (${ENABLE_MP} AND ${Boost_FOUND})
  13. target_link_libraries(python3-scattnlay PRIVATE Boost::headers ${Python_LIBRARIES})
  14. else()
  15. target_link_libraries(python3-scattnlay PRIVATE ${Python_LIBRARIES})
  16. endif()
  17. target_include_directories(python3-scattnlay PRIVATE ${NUMPY_INCLUDE_DIR} ${PYBIND11_INCLUDE_DIR})
  18. set_target_properties(python3-scattnlay PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  19. set_target_properties(
  20. python3-scattnlay
  21. PROPERTIES
  22. PREFIX ""
  23. OUTPUT_NAME "scattnlay"
  24. SUFFIX "${EXT_SUFFIX}"
  25. LINKER_LANGUAGE C
  26. )
  27. # Sources for far field calculation
  28. set(_scattnlay_farfield_sources
  29. ${CMAKE_CURRENT_LIST_DIR}/farfield.cc
  30. ${CMAKE_CURRENT_LIST_DIR}/nmie.hpp
  31. ${CMAKE_CURRENT_LIST_DIR}/nmie.cc)
  32. # Define exe for far field calculation
  33. add_executable(farfield ${_scattnlay_farfield_sources})
  34. if (${ENABLE_MP} AND ${Boost_FOUND})
  35. target_link_libraries(farfield PRIVATE Boost::headers)
  36. endif()
  37. set_target_properties(farfield PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  38. # Sources for near field calculation
  39. set(_scattnlay_nearfield_sources
  40. ${CMAKE_CURRENT_LIST_DIR}/nearfield.cc
  41. ${CMAKE_CURRENT_LIST_DIR}/nmie.hpp
  42. ${CMAKE_CURRENT_LIST_DIR}/nmie.cc)
  43. # Define exe for near field calculation
  44. add_executable(nearfield ${_scattnlay_nearfield_sources})
  45. if (${ENABLE_MP} AND ${Boost_FOUND})
  46. target_link_libraries(nearfield PRIVATE Boost::headers)
  47. endif()
  48. set_target_properties(nearfield PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  49. # Rename files to match precision
  50. if (${ENABLE_MP} AND ${Boost_FOUND})
  51. set_property(TARGET python3-scattnlay APPEND_STRING PROPERTY OUTPUT_NAME "_mp")
  52. set_property(TARGET farfield APPEND_STRING PROPERTY OUTPUT_NAME "farfield-mp")
  53. set_property(TARGET nearfield APPEND_STRING PROPERTY OUTPUT_NAME "nearfield-mp")
  54. else ()
  55. set_property(TARGET python3-scattnlay APPEND_STRING PROPERTY OUTPUT_NAME "_dp")
  56. set_property(TARGET farfield APPEND_STRING PROPERTY OUTPUT_NAME "farfield-dp")
  57. set_property(TARGET nearfield APPEND_STRING PROPERTY OUTPUT_NAME "nearfield-dp")
  58. endif ()