@@ -10,6 +10,8 @@ OPTION(ENABLE_TESTS "Enable tests." ON)
1010OPTION (USE_BUILD_SCRIPT_OUTPUT "Use the ifcopenshell nix/build-all.py or win/build-all.cmd build script output to find dependencies." ON )
1111OPTION (ENABLE_PYTHON_WRAPPER "Enable Python wrapper." OFF )
1212
13+ cmake_policy (SET CMP0148 OLD)
14+
1315include (CTest)
1416
1517if (CMAKE_SIZEOF_VOID_P EQUAL 8)
@@ -316,14 +318,17 @@ if (ENABLE_PYTHON_WRAPPER)
316318 MESSAGE (FATAL_ERROR "ENABLE_PYTHON_WRAPPER enabled, but unable to find SWIG. Disable ENABLE_PYTHON_WRAPPER or fix SWIG paths to proceed." )
317319 ENDIF ()
318320 INCLUDE (${SWIG_USE_FILE} )
319- find_package (Python COMPONENTS Interpreter Development )
320- IF (NOT Python_FOUND )
321+ find_package (PythonLibs )
322+ IF (NOT PYTHONLIBS_FOUND OR "$PYTHON_INCLUDE_DIRS}" STREQUAL "" )
321323 MESSAGE (FATAL_ERROR "ENABLE_PYTHON_WRAPPER enabled, but unable to find Python lib or header. Disable ENABLE_PYTHON_WRAPPER or fix Python paths to proceed." )
322324 ENDIF ()
323-
324- INCLUDE_DIRECTORIES (${Python_INCLUDE_DIRS} )
325+ find_package (PythonInterp)
326+ IF (NOT PYTHONINTERP_FOUND OR "${PYTHON_EXECUTABLE} " STREQUAL "" )
327+ MESSAGE (FATAL_ERROR "ENABLE_PYTHON_WRAPPER enabled, but unable to find Python interpreter. Disable ENABLE_PYTHON_WRAPPER or fix Python paths to proceed." )
328+ ENDIF ()
329+
330+ INCLUDE_DIRECTORIES (${PYTHON_INCLUDE_DIRS} )
325331 INCLUDE_DIRECTORIES (${CMAKE_CURRENT_SOURCE_DIR} )
326- link_directories (${Python_LIBRARY_DIRS} )
327332
328333 SET (CMAKE_SWIG_FLAGS ${SWIG_DEFINES} )
329334 SET_SOURCE_FILES_PROPERTIES (wrap/wrapper.i PROPERTIES CPLUSPLUS ON )
@@ -332,26 +337,40 @@ if (ENABLE_PYTHON_WRAPPER)
332337 # On osx there is some state in the python dylib. With `-Wl,undefined,suppress` we can ignore the missing symbols at compile time.
333338 SWIG_LINK_LIBRARIES(voxec libvoxec)
334339 else ()
335- SWIG_LINK_LIBRARIES(voxec libvoxec ${Python_LIBRARIES } )
340+ SWIG_LINK_LIBRARIES(voxec libvoxec ${PYTHON_LIBRARIES } )
336341 endif ()
337342
338- INSTALL (FILES "${CMAKE_BINARY_DIR} /voxec.py" "${CMAKE_CURRENT_SOURCE_DIR} /module/__init__.py"
339- DESTINATION "${Python_SITEARCH} /voxec/" )
340- INSTALL (TARGETS ${SWIG_MODULE_voxec_REAL_NAME}
341- DESTINATION "${Python_SITEARCH} /voxec/" )
343+ EXECUTE_PROCESS (
344+ COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_config_var('EXT_SUFFIX'))"
345+ OUTPUT_VARIABLE PYTHON_EXTENSION_SUFFIX
346+ OUTPUT_STRIP_TRAILING_WHITESPACE
347+ )
348+ MESSAGE (STATUS "${PYTHON_EXTENSION_SUFFIX} " )
349+ SET_TARGET_PROPERTIES (${SWIG_MODULE_voxec_REAL_NAME} PROPERTIES SUFFIX ${PYTHON_EXTENSION_SUFFIX} )
350+
351+ EXECUTE_PROCESS (
352+ COMMAND ${PYTHON_EXECUTABLE} -c "import sysconfig; print(sysconfig.get_path('platlib'))"
353+ OUTPUT_VARIABLE PYTHON_PLATLIB
354+ OUTPUT_STRIP_TRAILING_WHITESPACE
355+ )
356+
357+ INSTALL (FILES "${CMAKE_BINARY_DIR} /voxec.py" "${CMAKE_CURRENT_SOURCE_DIR} /module/__init__.py"
358+ DESTINATION "${PYTHON_PLATLIB} /voxec/" )
359+ INSTALL (TARGETS ${SWIG_MODULE_voxec_REAL_NAME}
360+ DESTINATION "${PYTHON_PLATLIB} /voxec/" )
342361endif ()
343362
344363if (ENABLE_TESTS)
345364file (GLOB test_filenames tests/*.cpp)
346365foreach (filename ${test_filenames} )
347- get_filename_component (test_name ${filename} NAME_WE )
348- add_executable ("${test_name} " ${filename} )
349- SET (libvoxec_IF_USED "" )
350- if ("${test_name} " MATCHES "parser" )
351- SET (libvoxec_IF_USED libvoxec)
352- endif ()
353- target_link_libraries ("${test_name} " gtest_main libvoxel ${libvoxec_IF_USED} ${IFC_LIBRARIES} ${ICU_LIBRARIES} ${Boost_LIBRARIES} ${OCC_LIBRARIES} ${LIB_RT} ${dl} ${CMAKE_THREAD_LIBS_INIT} )
354- add_test (NAME "${test_name} " COMMAND "${test_name} " )
366+ get_filename_component (test_name ${filename} NAME_WE )
367+ add_executable ("${test_name} " ${filename} )
368+ SET (libvoxec_IF_USED "" )
369+ if ("${test_name} " MATCHES "parser" )
370+ SET (libvoxec_IF_USED libvoxec)
371+ endif ()
372+ target_link_libraries ("${test_name} " gtest_main libvoxel ${libvoxec_IF_USED} ${IFC_LIBRARIES} ${ICU_LIBRARIES} ${Boost_LIBRARIES} ${OCC_LIBRARIES} ${LIB_RT} ${dl} ${CMAKE_THREAD_LIBS_INIT} )
373+ add_test (NAME "${test_name} " COMMAND "${test_name} " )
355374endforeach ()
356375endif ()
357376
@@ -363,8 +382,8 @@ target_link_libraries(voxec_exe libvoxec)
363382set_property (TARGET voxec_exe PROPERTY OUTPUT_NAME voxec)
364383
365384install (TARGETS voxec_exe libvoxel libvoxec
366- RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} /bin
367- LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX} /lib
368- ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX} /lib)
385+ RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX} /bin
386+ LIBRARY DESTINATION ${CMAKE_INSTALL_PREFIX} /lib
387+ ARCHIVE DESTINATION ${CMAKE_INSTALL_PREFIX} /lib)
369388
370389install (FILES ${LIBVOXELIZER_HEADER_FILES} ${LIBVOXEC_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX} /include /voxel)
0 commit comments