Skip to content

Commit 860b6da

Browse files
committed
Switch back to PythonLibs
1 parent f0b45be commit 860b6da

File tree

2 files changed

+44
-25
lines changed

2 files changed

+44
-25
lines changed

.github/workflows/build_osx.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -72,9 +72,7 @@ jobs:
7272
7373
- name: Compile voxec
7474
run: |
75-
base=$GITHUB_WORKSPACE/IfcOpenShell/build/Darwin/${{ matrix.cpuarch }}/10.9/install
76-
find $base
77-
ls -al $base/python-3.9.11/bin/python3
75+
base=$(find ./IfcOpenShell/build -maxdepth 4 -name install)
7876
mkdir build
7977
cd build
8078
cmake .. \
@@ -90,14 +88,16 @@ jobs:
9088
"-DOCC_INCLUDE_DIR=$base/occt-7.8.1/include/opencascade" \
9189
"-DOCC_LIBRARY_DIR=$base/occt-7.8.1/lib" \
9290
"-DPYTHON_EXECUTABLE=$base/python-3.9.11/bin/python3" \
91+
"-DPYTHON_INCLUDE_DIR=$base/python-3.9.11/include/python3.9" \
92+
"-DPYTHON_LIBRARY=$base/python-3.9.11/lib/libpython3.9.dylib" \
9393
"-DBOOST_ROOT=$base/boost-1.86.0" \
9494
"-DGMP_LIBRARY_DIR=$base/gmp-6.2.1/lib" \
9595
"-DMPFR_LIBRARY_DIR=$base/mpfr-3.1.6/lib"
9696
make -j4 install
9797
9898
- name: Package .zip archives
9999
run: |
100-
base=$GITHUB_WORKSPACE/IfcOpenShell/build/Darwin/${{ matrix.cpuarch }}/10.9/install
100+
base=$(find ./IfcOpenShell/build -maxdepth 4 -name install)
101101
mkdir -p $GITHUB_WORKSPACE/package
102102
cd $GITHUB_WORKSPACE/package
103103

CMakeLists.txt

Lines changed: 40 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ OPTION(ENABLE_TESTS "Enable tests." ON)
1010
OPTION(USE_BUILD_SCRIPT_OUTPUT "Use the ifcopenshell nix/build-all.py or win/build-all.cmd build script output to find dependencies." ON)
1111
OPTION(ENABLE_PYTHON_WRAPPER "Enable Python wrapper." OFF)
1212

13+
cmake_policy(SET CMP0148 OLD)
14+
1315
include(CTest)
1416

1517
if(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/")
342361
endif()
343362

344363
if (ENABLE_TESTS)
345364
file(GLOB test_filenames tests/*.cpp)
346365
foreach(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}")
355374
endforeach()
356375
endif()
357376

@@ -363,8 +382,8 @@ target_link_libraries(voxec_exe libvoxec)
363382
set_property(TARGET voxec_exe PROPERTY OUTPUT_NAME voxec)
364383

365384
install(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

370389
install(FILES ${LIBVOXELIZER_HEADER_FILES} ${LIBVOXEC_HEADER_FILES} DESTINATION ${CMAKE_INSTALL_PREFIX}/include/voxel)

0 commit comments

Comments
 (0)