From c29572b647a96258b52cb944ade4d6dfb9759e92 Mon Sep 17 00:00:00 2001 From: Steve Baer Date: Wed, 24 Jan 2024 08:53:46 -1000 Subject: [PATCH 1/3] clean up python compile of cmake by using opennurbs cmake instead of globbing files --- src/CMakeLists.txt | 90 +++++++++++++++++++--------------------------- 1 file changed, 37 insertions(+), 53 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 4dd62ceb..506d8b97 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -9,40 +9,26 @@ else() set(RHINO3DM_PY "YES") endif() -if (${RHINO3DM_JS}) - message("Web Assembly Compile") -endif() - -if (${RHINO3DM_PY}) - message("Python Compile") - add_subdirectory(lib/pybind11) -endif() - -message("NODE=${NODE}") -if( NODE ) - message("NODE evaluates to True") -endif() - -# Add draco add_library +# Add draco headers to include path include_directories(${PROJECT_NAME} PUBLIC lib/draco/src ${CMAKE_BINARY_DIR}) file(GLOB bindings_SRC "bindings/*.h" "bindings/*.cpp") -file(GLOB zlib_SRC "lib/opennurbs/zlib/*.h" "lib/opennurbs/zlib/*.c") - -# temporarily rename the 3 cpp files that we don't want to compile on OSX -file(RENAME "lib/opennurbs/opennurbs_gl.cpp" "lib/opennurbs/opennurbs_gl.skip") -file(RENAME "lib/opennurbs/opennurbs_unicode_cp932.cpp" "lib/opennurbs/opennurbs_unicode_cp932.skip") -file(RENAME "lib/opennurbs/opennurbs_unicode_cp949.cpp" "lib/opennurbs/opennurbs_unicode_cp949.skip") -file(GLOB opennurbs_SRC "lib/opennurbs/*.h" "lib/opennurbs/*.cpp") -file(RENAME "lib/opennurbs/opennurbs_gl.skip" "lib/opennurbs/opennurbs_gl.cpp") -file(RENAME "lib/opennurbs/opennurbs_unicode_cp932.skip" "lib/opennurbs/opennurbs_unicode_cp932.cpp") -file(RENAME "lib/opennurbs/opennurbs_unicode_cp949.skip" "lib/opennurbs/opennurbs_unicode_cp949.cpp") -file(RENAME "lib/opennurbs/android_uuid/gen_uuid_nt.c" "lib/opennurbs/android_uuid/gen_uuid_nt.skip") -file(GLOB uuid_SRC "lib/opennurbs/android_uuid/*.h" "lib/opennurbs/android_uuid/*.c") -file(RENAME "lib/opennurbs/android_uuid/gen_uuid_nt.skip" "lib/opennurbs/android_uuid/gen_uuid_nt.c") +add_definitions(-D_GNU_SOURCE) +add_definitions(-DON_COMPILING_OPENNURBS) +add_definitions(-DOPENNURBS_FREETYPE_INC_) +add_definitions(-DMY_ZCALLOC -DZ_PREFIX) +add_definitions(-DOPENNURBS_ZLIB_LIB_DIR) +add_definitions(-DUNICODE) +add_definitions(-DON_INCLUDE_DRACO) if(${RHINO3DM_JS}) + message("Web Assembly Compile") + + message("NODE=${NODE}") + if( NODE ) + message("NODE evaluates to True") + endif() # we will eventually want the following warning flags on both compiles # for now, just WASM set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-overloaded-virtual -Wno-switch -Wno-unknown-pragmas -Wno-unused-private-field") @@ -56,16 +42,7 @@ if(${RHINO3DM_JS}) set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s MEMORY64=1") endif() set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s MODULARIZE=1 -s EXPORT_NAME=rhino3dm -s EXPORT_ES6=1 -s ALLOW_MEMORY_GROWTH=1 --bind") -endif() -add_definitions(-D_GNU_SOURCE) -add_definitions(-DON_COMPILING_OPENNURBS) -add_definitions(-DOPENNURBS_FREETYPE_INC_) -add_definitions(-DMY_ZCALLOC -DZ_PREFIX) -add_definitions(-DOPENNURBS_ZLIB_LIB_DIR) -add_definitions(-DUNICODE) -add_definitions(-DON_INCLUDE_DRACO) -if(${RHINO3DM_JS}) # temporary until we adjust opennurbs to be emscripten aware if(NODE) add_definitions(-DON_64BIT_RUNTIME) @@ -77,40 +54,47 @@ if(${RHINO3DM_JS}) set(CMAKE_EXECUTABLE_SUFFIX ".js") + file(GLOB zlib_SRC "lib/opennurbs/zlib/*.h" "lib/opennurbs/zlib/*.c") + # temporarily rename the 3 cpp files that we don't want to compile on OSX + file(RENAME "lib/opennurbs/opennurbs_gl.cpp" "lib/opennurbs/opennurbs_gl.skip") + file(RENAME "lib/opennurbs/opennurbs_unicode_cp932.cpp" "lib/opennurbs/opennurbs_unicode_cp932.skip") + file(RENAME "lib/opennurbs/opennurbs_unicode_cp949.cpp" "lib/opennurbs/opennurbs_unicode_cp949.skip") + file(GLOB opennurbs_SRC "lib/opennurbs/*.h" "lib/opennurbs/*.cpp") + file(RENAME "lib/opennurbs/opennurbs_gl.skip" "lib/opennurbs/opennurbs_gl.cpp") + file(RENAME "lib/opennurbs/opennurbs_unicode_cp932.skip" "lib/opennurbs/opennurbs_unicode_cp932.cpp") + file(RENAME "lib/opennurbs/opennurbs_unicode_cp949.skip" "lib/opennurbs/opennurbs_unicode_cp949.cpp") + + file(RENAME "lib/opennurbs/android_uuid/gen_uuid_nt.c" "lib/opennurbs/android_uuid/gen_uuid_nt.skip") + file(GLOB uuid_SRC "lib/opennurbs/android_uuid/*.h" "lib/opennurbs/android_uuid/*.c") + file(RENAME "lib/opennurbs/android_uuid/gen_uuid_nt.skip" "lib/opennurbs/android_uuid/gen_uuid_nt.c") + add_subdirectory(lib/draco) add_executable(rhino3dm ${bindings_SRC} ${zlib_SRC} ${opennurbs_SRC} ${uuid_SRC}) target_link_libraries( rhino3dm ${PROJECT_SOURCE_DIR}/build/javascript/draco_wasm/libdraco.a) endif() if (${RHINO3DM_PY}) + message("Python Compile") + add_subdirectory(lib/opennurbs) # add opennurbs + add_subdirectory(lib/draco) + add_subdirectory(lib/pybind11) + if(CMAKE_SYSTEM_NAME STREQUAL "Linux") add_definitions(-DON_RUNTIME_LINUX) add_definitions(-DON_CLANG_CONSTRUCTOR_BUG) - pybind11_add_module(_rhino3dm ${bindings_SRC} ${opennurbs_SRC} ${zlib_SRC} ${uuid_SRC}) - #target_link_libraries(_rhino3dm -luuid) elseif(CMAKE_SYSTEM_NAME STREQUAL "Darwin") if(CMAKE_SYSTEM_PROCESSORa STREQUAL "arm64") set(CMAKE_OSX_ARCHITECTURE arm64) else() set(CMAKE_OSX_ARCHITECTURE x86_64) endif() - add_library(zlib_static STATIC ${zlib_SRC}) - add_library(opennurbs_static STATIC ${opennurbs_SRC}) - pybind11_add_module(_rhino3dm ${bindings_SRC}) - target_link_libraries(_rhino3dm PRIVATE zlib_static) - target_link_libraries(_rhino3dm PRIVATE opennurbs_static) - else() - add_library(zlib_static STATIC ${zlib_SRC}) - add_library(opennurbs_static STATIC ${opennurbs_SRC}) - pybind11_add_module(_rhino3dm ${bindings_SRC}) - target_link_libraries(_rhino3dm PRIVATE zlib_static) - target_link_libraries(_rhino3dm PRIVATE opennurbs_static) endif() - add_subdirectory(lib/draco) + pybind11_add_module(_rhino3dm ${bindings_SRC}) + target_link_libraries(_rhino3dm PRIVATE opennurbsStatic) if (MSVC) - target_link_libraries(_rhino3dm PRIVATE debug lib/draco/Debug/draco) - target_link_libraries(_rhino3dm PRIVATE optimized ${CMAKE_BINARY_DIR}/draco_static/Release/draco.lib) + target_link_libraries(_rhino3dm PRIVATE debug lib/draco/Debug/draco) + target_link_libraries(_rhino3dm PRIVATE optimized ${CMAKE_BINARY_DIR}/draco_static/Release/draco.lib) else() target_link_libraries(_rhino3dm PRIVATE ${CMAKE_BINARY_DIR}/draco_static/libdraco.a) endif() From 7bea4646336fcc6850453faf8dd1fcad535910fd Mon Sep 17 00:00:00 2001 From: Steve Baer Date: Tue, 30 Jan 2024 21:08:34 -1000 Subject: [PATCH 2/3] enable fpic --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 506d8b97..c72c01e9 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -91,6 +91,7 @@ if (${RHINO3DM_PY}) endif() pybind11_add_module(_rhino3dm ${bindings_SRC}) + set(CMAKE_POSITION_INDEPENDENT_CODE ON) target_link_libraries(_rhino3dm PRIVATE opennurbsStatic) if (MSVC) target_link_libraries(_rhino3dm PRIVATE debug lib/draco/Debug/draco) From fbf157a1f81cb9e6ff87ef3658e93074e596683c Mon Sep 17 00:00:00 2001 From: Steve Baer Date: Sun, 4 Feb 2024 11:04:32 -0800 Subject: [PATCH 3/3] fix draco linking on Windows --- src/CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index c72c01e9..f0009720 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -93,10 +93,5 @@ if (${RHINO3DM_PY}) pybind11_add_module(_rhino3dm ${bindings_SRC}) set(CMAKE_POSITION_INDEPENDENT_CODE ON) target_link_libraries(_rhino3dm PRIVATE opennurbsStatic) - if (MSVC) - target_link_libraries(_rhino3dm PRIVATE debug lib/draco/Debug/draco) - target_link_libraries(_rhino3dm PRIVATE optimized ${CMAKE_BINARY_DIR}/draco_static/Release/draco.lib) - else() - target_link_libraries(_rhino3dm PRIVATE ${CMAKE_BINARY_DIR}/draco_static/libdraco.a) - endif() + target_link_libraries(_rhino3dm PRIVATE draco) endif()