diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt index 7e7479415e..decb1cab50 100644 --- a/cmake/CMakeLists.txt +++ b/cmake/CMakeLists.txt @@ -1006,33 +1006,8 @@ if(BUILD_IFCGEOM) list(APPEND CGAL_LIBRARIES "${libGMP}") endif() - foreach(kernel ${GEOMETRY_KERNELS}) - string(TOUPPER ${kernel} KERNEL_UPPER) - file(GLOB IFCGEOM_H_FILES ../src/ifcgeom/kernels/${kernel}/*.h) - file(GLOB IFCGEOM_CPP_FILES ../src/ifcgeom/kernels/${kernel}/*.cpp) - set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) - - add_library(geometry_kernel_${kernel} ${IFCGEOM_FILES} ../src/ifcgeom/kernels/ifc_geomlibrary_api.h) - set_property(TARGET geometry_kernel_${kernel} APPEND PROPERTY COMPILE_FLAGS "-DIFC_GEOMLIBRARY_EXPORTS") - # needed? - # if(NOT WASM_BUILD) - # endif() - target_link_libraries(geometry_kernel_${kernel} ${${KERNEL_UPPER}_LIBRARIES} IfcGeom IfcParse) - list(APPEND kernel_libraries geometry_kernel_${kernel}) - - if(${kernel} STREQUAL "cgal") - set_property(TARGET geometry_kernel_${kernel} APPEND_STRING PROPERTY COMPILE_FLAGS " -DCGAL_HAS_THREADS") - - add_library(geometry_kernel_${kernel}_simple ${IFCGEOM_FILES}) - set_target_properties(geometry_kernel_${kernel}_simple PROPERTIES COMPILE_FLAGS "-DIFC_GEOMLIBRARY_EXPORTS -DIFOPSH_SIMPLE_KERNEL -DCGAL_HAS_THREADS") - # needed? - # if(NOT WASM_BUILD) - # endif() - target_link_libraries(geometry_kernel_${kernel}_simple ${${KERNEL_UPPER}_LIBRARIES} IfcGeom IfcParse) - list(APPEND kernel_libraries geometry_kernel_${kernel}_simple) - endif() - endforeach() - + add_subdirectory(../src/ifcgeom ifcgeom) + # IfcGeom foreach(schema ${SCHEMA_VERSIONS}) file(GLOB IFCGEOM_I_FILES ../src/ifcgeom/mapping/*.i) diff --git a/src/ifcgeom/CMakeLists.txt b/src/ifcgeom/CMakeLists.txt new file mode 100644 index 0000000000..5e1bf299d0 --- /dev/null +++ b/src/ifcgeom/CMakeLists.txt @@ -0,0 +1,3 @@ +add_subdirectory(kernels) + +set(kernel_libraries ${kernel_libraries} PARENT_SCOPE) diff --git a/src/ifcgeom/kernels/CMakeLists.txt b/src/ifcgeom/kernels/CMakeLists.txt new file mode 100644 index 0000000000..832ccb09af --- /dev/null +++ b/src/ifcgeom/kernels/CMakeLists.txt @@ -0,0 +1,37 @@ +foreach(kernel ${GEOMETRY_KERNELS}) + string(TOUPPER ${kernel} KERNEL_UPPER) + file(GLOB IFCGEOM_H_FILES ${kernel}/*.h) + file(GLOB IFCGEOM_CPP_FILES ${kernel}/*.cpp) + set(IFCGEOM_FILES ${IFCGEOM_CPP_FILES} ${IFCGEOM_H_FILES}) + + add_library(geometry_kernel_${kernel} OBJECT ${IFCGEOM_FILES}) + set_property(TARGET geometry_kernel_${kernel} APPEND PROPERTY COMPILE_FLAGS "-DIFC_GEOM_EXPORTS") + list(APPEND kernel_libraries geometry_kernel_${kernel}) + target_link_libraries(geometry_kernel_${kernel} ${${KERNEL_UPPER}_LIBRARIES}) + + install(TARGETS geometry_kernel_${kernel} + ARCHIVE DESTINATION ${LIBDIR} + LIBRARY DESTINATION ${LIBDIR} + RUNTIME DESTINATION ${BINDIR} + ) + + if(${kernel} STREQUAL "cgal") + set_property(TARGET geometry_kernel_${kernel} APPEND_STRING PROPERTY COMPILE_FLAGS " -DCGAL_HAS_THREADS") + + add_library(geometry_kernel_${kernel}_simple OBJECT ${IFCGEOM_FILES}) + set_target_properties(geometry_kernel_${kernel}_simple PROPERTIES COMPILE_FLAGS "-DIFC_GEOM_EXPORTS -DIFOPSH_SIMPLE_KERNEL -DCGAL_HAS_THREADS") + list(APPEND kernel_libraries geometry_kernel_${kernel}_simple) + target_link_libraries(geometry_kernel_${kernel}_simple ${${KERNEL_UPPER}_LIBRARIES} Eigen3::Eigen) + install(TARGETS geometry_kernel_${kernel}_simple + ARCHIVE DESTINATION ${LIBDIR} + LIBRARY DESTINATION ${LIBDIR} + RUNTIME DESTINATION ${BINDIR} + ) + endif() + + install(FILES ${IFCGEOM_H_FILES} + DESTINATION ${INCLUDEDIR}/ifcgeom/kernels/${kernel} + ) +endforeach() + +set(kernel_libraries ${kernel_libraries} PARENT_SCOPE) \ No newline at end of file