CMakeLists.txt 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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. target_link_libraries(python3-scattnlay PRIVATE Boost::headers ${Python_LIBRARIES})
  13. target_include_directories(python3-scattnlay PRIVATE ${NUMPY_INCLUDE_DIR} ${PYBIND11_INCLUDE_DIR})
  14. set_target_properties(python3-scattnlay PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  15. set_target_properties(
  16. python3-scattnlay
  17. PROPERTIES
  18. PREFIX ""
  19. OUTPUT_NAME "scattnlay"
  20. SUFFIX "${EXT_SUFFIX}"
  21. LINKER_LANGUAGE C
  22. )
  23. # Sources for far field calculation
  24. set(_scattnlay_farfield_sources
  25. ${CMAKE_CURRENT_LIST_DIR}/farfield.cc
  26. ${CMAKE_CURRENT_LIST_DIR}/nmie.hpp
  27. ${CMAKE_CURRENT_LIST_DIR}/nmie.cc)
  28. # Define exe for far field calculation
  29. add_executable(farfield ${_scattnlay_farfield_sources})
  30. target_link_libraries(farfield PRIVATE Boost::headers)
  31. set_target_properties(farfield PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  32. # Sources for near field calculation
  33. set(_scattnlay_nearfield_sources
  34. ${CMAKE_CURRENT_LIST_DIR}/nearfield.cc
  35. ${CMAKE_CURRENT_LIST_DIR}/nmie.hpp
  36. ${CMAKE_CURRENT_LIST_DIR}/nmie.cc)
  37. # Define exe for near field calculation
  38. add_executable(nearfield ${_scattnlay_nearfield_sources})
  39. target_link_libraries(nearfield PRIVATE Boost::headers)
  40. set_target_properties(nearfield PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
  41. # Rename files to match precision
  42. if (${ENABLE_MP})
  43. set_property(TARGET python3-scattnlay APPEND_STRING PROPERTY OUTPUT_NAME "_mp")
  44. set_property(TARGET farfield APPEND_STRING PROPERTY OUTPUT_NAME "farfield-mp")
  45. set_property(TARGET nearfield APPEND_STRING PROPERTY OUTPUT_NAME "nearfield-mp")
  46. else ()
  47. set_property(TARGET python3-scattnlay APPEND_STRING PROPERTY OUTPUT_NAME "_dp")
  48. set_property(TARGET farfield APPEND_STRING PROPERTY OUTPUT_NAME "farfield-dp")
  49. set_property(TARGET nearfield APPEND_STRING PROPERTY OUTPUT_NAME "nearfield-dp")
  50. endif ()