From 03451c39e2d5abac7fc98afbb5a0cb6728f56306 Mon Sep 17 00:00:00 2001 From: tamasmeszaros Date: Thu, 10 Aug 2023 12:10:34 +0200 Subject: [PATCH] Followup fully converted deps to new system Support legacy DEP_DEBUG parameter but respecting parent CMake generator --- deps/{Blosc => +Blosc}/Blosc.cmake | 9 +- deps/{Blosc => +Blosc}/blosc-mods.patch | 0 deps/+Boost/Boost.cmake | 4 +- deps/{CGAL => +CGAL}/CGAL.cmake | 9 +- .../cgal/CGALConfigVersion.cmake | 0 deps/+GLEW/GLEW.cmake | 8 ++ deps/{GMP => +GMP}/GMP.cmake | 9 +- deps/{GMP => +GMP}/gmp/gmp.COPYING | 0 deps/{GMP => +GMP}/gmp/gmp.README | 0 deps/{GMP => +GMP}/gmp/include/gmp.h | 0 .../{GMP => +GMP}/gmp/lib/win32/libgmp-10.dll | Bin .../{GMP => +GMP}/gmp/lib/win32/libgmp-10.lib | Bin .../{GMP => +GMP}/gmp/lib/win64/libgmp-10.dll | Bin .../{GMP => +GMP}/gmp/lib/win64/libgmp-10.lib | Bin deps/{MPFR => +MPFR}/MPFR.cmake | 7 +- deps/{MPFR => +MPFR}/mpfr/include/mpf2mpfr.h | 0 deps/{MPFR => +MPFR}/mpfr/include/mpfr.h | 0 .../mpfr/lib/win32/libmpfr-4.dll | Bin .../mpfr/lib/win32/libmpfr-4.lib | Bin .../mpfr/lib/win64/libmpfr-4.dll | Bin .../mpfr/lib/win64/libmpfr-4.lib | Bin deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING | 0 deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING.LESSER | 0 deps/{MPFR => +MPFR}/mpfr/mpfr.README | 0 deps/{NLopt => +NLopt}/NLopt.cmake | 10 +-- deps/{OCCT => +OCCT}/OCCT.cmake | 10 +-- deps/{OCCT => +OCCT}/occt_toolkit.cmake | 0 deps/{OpenCSG => +OpenCSG}/CMakeLists.txt.in | 0 deps/+OpenCSG/OpenCSG.cmake | 9 ++ deps/{OpenEXR => +OpenEXR}/OpenEXR.cmake | 12 +-- deps/{OpenEXR => +OpenEXR}/OpenEXR.patch | 0 deps/{OpenVDB => +OpenVDB}/OpenVDB.cmake | 22 +---- deps/{Qhull => +Qhull}/Qhull.cmake | 10 +-- deps/{TBB => +TBB}/TBB.cmake | 10 +-- deps/+wxWidgets/wxWidgets.cmake | 2 +- deps/CMakeLists.txt | 79 +++++++++++++++--- deps/GLEW/GLEW.cmake | 20 ----- deps/OpenCSG/OpenCSG.cmake | 21 ----- deps/OpenSSL/OpenSSL.cmake | 39 --------- 39 files changed, 109 insertions(+), 181 deletions(-) rename deps/{Blosc => +Blosc}/Blosc.cmake (84%) rename deps/{Blosc => +Blosc}/blosc-mods.patch (100%) rename deps/{CGAL => +CGAL}/CGAL.cmake (57%) rename deps/{CGAL => +CGAL}/cgal/CGALConfigVersion.cmake (100%) create mode 100644 deps/+GLEW/GLEW.cmake rename deps/{GMP => +GMP}/GMP.cmake (86%) rename deps/{GMP => +GMP}/gmp/gmp.COPYING (100%) rename deps/{GMP => +GMP}/gmp/gmp.README (100%) rename deps/{GMP => +GMP}/gmp/include/gmp.h (100%) rename deps/{GMP => +GMP}/gmp/lib/win32/libgmp-10.dll (100%) rename deps/{GMP => +GMP}/gmp/lib/win32/libgmp-10.lib (100%) rename deps/{GMP => +GMP}/gmp/lib/win64/libgmp-10.dll (100%) rename deps/{GMP => +GMP}/gmp/lib/win64/libgmp-10.lib (100%) rename deps/{MPFR => +MPFR}/MPFR.cmake (89%) rename deps/{MPFR => +MPFR}/mpfr/include/mpf2mpfr.h (100%) rename deps/{MPFR => +MPFR}/mpfr/include/mpfr.h (100%) rename deps/{MPFR => +MPFR}/mpfr/lib/win32/libmpfr-4.dll (100%) rename deps/{MPFR => +MPFR}/mpfr/lib/win32/libmpfr-4.lib (100%) rename deps/{MPFR => +MPFR}/mpfr/lib/win64/libmpfr-4.dll (100%) rename deps/{MPFR => +MPFR}/mpfr/lib/win64/libmpfr-4.lib (100%) rename deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING (100%) rename deps/{MPFR => +MPFR}/mpfr/mpfr.COPYING.LESSER (100%) rename deps/{MPFR => +MPFR}/mpfr/mpfr.README (100%) rename deps/{NLopt => +NLopt}/NLopt.cmake (57%) rename deps/{OCCT => +OCCT}/OCCT.cmake (77%) rename deps/{OCCT => +OCCT}/occt_toolkit.cmake (100%) rename deps/{OpenCSG => +OpenCSG}/CMakeLists.txt.in (100%) create mode 100644 deps/+OpenCSG/OpenCSG.cmake rename deps/{OpenEXR => +OpenEXR}/OpenEXR.cmake (60%) rename deps/{OpenEXR => +OpenEXR}/OpenEXR.patch (100%) rename deps/{OpenVDB => +OpenVDB}/OpenVDB.cmake (56%) rename deps/{Qhull => +Qhull}/Qhull.cmake (50%) rename deps/{TBB => +TBB}/TBB.cmake (56%) delete mode 100644 deps/GLEW/GLEW.cmake delete mode 100644 deps/OpenCSG/OpenCSG.cmake delete mode 100644 deps/OpenSSL/OpenSSL.cmake diff --git a/deps/Blosc/Blosc.cmake b/deps/+Blosc/Blosc.cmake similarity index 84% rename from deps/Blosc/Blosc.cmake rename to deps/+Blosc/Blosc.cmake index b11dc34f66..a38ea62df4 100644 --- a/deps/Blosc/Blosc.cmake +++ b/deps/+Blosc/Blosc.cmake @@ -1,7 +1,3 @@ -#/|/ Copyright (c) Prusa Research 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ if(BUILD_SHARED_LIBS) set(_build_shared ON) set(_build_static OFF) @@ -15,7 +11,6 @@ add_cmake_project(Blosc #URL_HASH SHA256=7463a1df566704f212263312717ab2c36b45d45cba6cd0dccebf91b2cc4b4da9 URL https://github.com/tamasmeszaros/c-blosc/archive/refs/heads/v1.17.0_tm.zip URL_HASH SHA256=dcb48bf43a672fa3de6a4b1de2c4c238709dad5893d1e097b8374ad84b1fc3b3 - DEPENDS ${ZLIB_PKG} # Patching upstream does not work this way with git version 2.28 installed on mac worker # PATCH_COMMAND ${GIT_EXECUTABLE} apply --ignore-space-change --whitespace=fix ${CMAKE_CURRENT_LIST_DIR}/blosc-mods.patch CMAKE_ARGS @@ -25,4 +20,6 @@ add_cmake_project(Blosc -DBUILD_TESTS=OFF -DBUILD_BENCHMARKS=OFF -DPREFER_EXTERNAL_ZLIB=ON -) \ No newline at end of file +) + +set(DEP_Blosc_DEPENDS ZLIB) diff --git a/deps/Blosc/blosc-mods.patch b/deps/+Blosc/blosc-mods.patch similarity index 100% rename from deps/Blosc/blosc-mods.patch rename to deps/+Blosc/blosc-mods.patch diff --git a/deps/+Boost/Boost.cmake b/deps/+Boost/Boost.cmake index 6521a8fd1d..4c4377c8d3 100644 --- a/deps/+Boost/Boost.cmake +++ b/deps/+Boost/Boost.cmake @@ -3,6 +3,6 @@ add_cmake_project(Boost URL_HASH SHA256=200f9292b5ef957ab551a648834239f502df165cb7bff18432702fb7ae98accb LIST_SEPARATOR | CMAKE_ARGS - -DBOOST_INCLUDE_LIBRARIES:STRING=system|iostreams|filesystem|thread|log|locale|regex|date_time|beast|nowide|polygon + -DBOOST_INCLUDE_LIBRARIES:STRING=system|iostreams|filesystem|thread|log|locale|regex|date_time|beast|nowide|polygon|uuid -DBUILD_TESTING:BOOL=OFF -) \ No newline at end of file +) diff --git a/deps/CGAL/CGAL.cmake b/deps/+CGAL/CGAL.cmake similarity index 57% rename from deps/CGAL/CGAL.cmake rename to deps/+CGAL/CGAL.cmake index 37f33b74c0..bb6e8fd87e 100644 --- a/deps/CGAL/CGAL.cmake +++ b/deps/+CGAL/CGAL.cmake @@ -1,15 +1,12 @@ -#/|/ Copyright (c) Prusa Research 2019 - 2022 Tomáš Mészáros @tamasmeszaros, Filip Sykala @Jony01, Vojtěch Bubník @bubnikv, David Kocík @kocikdav -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -prusaslicer_add_cmake_project( +add_cmake_project( CGAL # GIT_REPOSITORY https://github.com/CGAL/cgal.git # GIT_TAG bec70a6d52d8aacb0b3d82a7b4edc3caa899184b # releases/CGAL-5.0 # For whatever reason, this keeps downloading forever (repeats downloads if finished) URL https://github.com/CGAL/cgal/archive/refs/tags/v5.4.zip URL_HASH SHA256=d7605e0a5a5ca17da7547592f6f6e4a59430a0bc861948974254d0de43eab4c0 - DEPENDS dep_Boost dep_GMP dep_MPFR ) include(GNUInstallDirs) + +set(DEP_CGAL_DEPENDS Boost GMP MPFR) diff --git a/deps/CGAL/cgal/CGALConfigVersion.cmake b/deps/+CGAL/cgal/CGALConfigVersion.cmake similarity index 100% rename from deps/CGAL/cgal/CGALConfigVersion.cmake rename to deps/+CGAL/cgal/CGALConfigVersion.cmake diff --git a/deps/+GLEW/GLEW.cmake b/deps/+GLEW/GLEW.cmake new file mode 100644 index 0000000000..c2db9117b6 --- /dev/null +++ b/deps/+GLEW/GLEW.cmake @@ -0,0 +1,8 @@ +add_cmake_project( + GLEW + URL https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip + URL_HASH SHA256=a9046a913774395a095edcc0b0ac2d81c3aacca61787b39839b941e9be14e0d4 + SOURCE_SUBDIR build/cmake + CMAKE_ARGS + -DBUILD_UTILS=OFF +) \ No newline at end of file diff --git a/deps/GMP/GMP.cmake b/deps/+GMP/GMP.cmake similarity index 86% rename from deps/GMP/GMP.cmake rename to deps/+GMP/GMP.cmake index 599ecc80b5..4afcbde469 100644 --- a/deps/GMP/GMP.cmake +++ b/deps/+GMP/GMP.cmake @@ -1,7 +1,3 @@ -#/|/ Copyright (c) Prusa Research 2019 - 2021 Tomáš Mészáros @tamasmeszaros, David Kocík @kocikdav -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/gmp) set(_dstdir ${DESTDIR}/usr/local) @@ -21,7 +17,8 @@ if (MSVC) add_custom_target(dep_GMP SOURCES ${_output}) else () - set(_gmp_ccflags "-O2 -DNDEBUG -fPIC -DPIC -Wall -Wmissing-prototypes -Wpointer-arith -pedantic -fomit-frame-pointer -fno-common") + string(TOUPPER ${CMAKE_BUILD_TYPE} _buildtype_upper) + set(_gmp_ccflags "${CMAKE_CXX_FLAGS}_${_buildtype_upper} -fPIC -DPIC -Wall -Wmissing-prototypes -Wpointer-arith -pedantic -fomit-frame-pointer -fno-common") set(_gmp_build_tgt "${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) @@ -55,4 +52,4 @@ else () BUILD_COMMAND make -j INSTALL_COMMAND make install ) -endif () \ No newline at end of file +endif () diff --git a/deps/GMP/gmp/gmp.COPYING b/deps/+GMP/gmp/gmp.COPYING similarity index 100% rename from deps/GMP/gmp/gmp.COPYING rename to deps/+GMP/gmp/gmp.COPYING diff --git a/deps/GMP/gmp/gmp.README b/deps/+GMP/gmp/gmp.README similarity index 100% rename from deps/GMP/gmp/gmp.README rename to deps/+GMP/gmp/gmp.README diff --git a/deps/GMP/gmp/include/gmp.h b/deps/+GMP/gmp/include/gmp.h similarity index 100% rename from deps/GMP/gmp/include/gmp.h rename to deps/+GMP/gmp/include/gmp.h diff --git a/deps/GMP/gmp/lib/win32/libgmp-10.dll b/deps/+GMP/gmp/lib/win32/libgmp-10.dll similarity index 100% rename from deps/GMP/gmp/lib/win32/libgmp-10.dll rename to deps/+GMP/gmp/lib/win32/libgmp-10.dll diff --git a/deps/GMP/gmp/lib/win32/libgmp-10.lib b/deps/+GMP/gmp/lib/win32/libgmp-10.lib similarity index 100% rename from deps/GMP/gmp/lib/win32/libgmp-10.lib rename to deps/+GMP/gmp/lib/win32/libgmp-10.lib diff --git a/deps/GMP/gmp/lib/win64/libgmp-10.dll b/deps/+GMP/gmp/lib/win64/libgmp-10.dll similarity index 100% rename from deps/GMP/gmp/lib/win64/libgmp-10.dll rename to deps/+GMP/gmp/lib/win64/libgmp-10.dll diff --git a/deps/GMP/gmp/lib/win64/libgmp-10.lib b/deps/+GMP/gmp/lib/win64/libgmp-10.lib similarity index 100% rename from deps/GMP/gmp/lib/win64/libgmp-10.lib rename to deps/+GMP/gmp/lib/win64/libgmp-10.lib diff --git a/deps/MPFR/MPFR.cmake b/deps/+MPFR/MPFR.cmake similarity index 89% rename from deps/MPFR/MPFR.cmake rename to deps/+MPFR/MPFR.cmake index 530ff894c7..18a2be7d8a 100644 --- a/deps/MPFR/MPFR.cmake +++ b/deps/+MPFR/MPFR.cmake @@ -1,7 +1,3 @@ -#/|/ Copyright (c) Prusa Research 2019 - 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ set(_srcdir ${CMAKE_CURRENT_LIST_DIR}/mpfr) set(_dstdir ${DESTDIR}/usr/local) @@ -37,6 +33,7 @@ else () CONFIGURE_COMMAND env "CFLAGS=${_gmp_ccflags}" "CXXFLAGS=${_gmp_ccflags}" ./configure ${_cross_compile_arg} --prefix=${DESTDIR}/usr/local --enable-shared=no --enable-static=yes --with-gmp=${DESTDIR}/usr/local ${_gmp_build_tgt} BUILD_COMMAND make -j INSTALL_COMMAND make install - DEPENDS dep_GMP ) endif () + +set(DEP_MPFR_DEPENDS GMP) diff --git a/deps/MPFR/mpfr/include/mpf2mpfr.h b/deps/+MPFR/mpfr/include/mpf2mpfr.h similarity index 100% rename from deps/MPFR/mpfr/include/mpf2mpfr.h rename to deps/+MPFR/mpfr/include/mpf2mpfr.h diff --git a/deps/MPFR/mpfr/include/mpfr.h b/deps/+MPFR/mpfr/include/mpfr.h similarity index 100% rename from deps/MPFR/mpfr/include/mpfr.h rename to deps/+MPFR/mpfr/include/mpfr.h diff --git a/deps/MPFR/mpfr/lib/win32/libmpfr-4.dll b/deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll similarity index 100% rename from deps/MPFR/mpfr/lib/win32/libmpfr-4.dll rename to deps/+MPFR/mpfr/lib/win32/libmpfr-4.dll diff --git a/deps/MPFR/mpfr/lib/win32/libmpfr-4.lib b/deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib similarity index 100% rename from deps/MPFR/mpfr/lib/win32/libmpfr-4.lib rename to deps/+MPFR/mpfr/lib/win32/libmpfr-4.lib diff --git a/deps/MPFR/mpfr/lib/win64/libmpfr-4.dll b/deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll similarity index 100% rename from deps/MPFR/mpfr/lib/win64/libmpfr-4.dll rename to deps/+MPFR/mpfr/lib/win64/libmpfr-4.dll diff --git a/deps/MPFR/mpfr/lib/win64/libmpfr-4.lib b/deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib similarity index 100% rename from deps/MPFR/mpfr/lib/win64/libmpfr-4.lib rename to deps/+MPFR/mpfr/lib/win64/libmpfr-4.lib diff --git a/deps/MPFR/mpfr/mpfr.COPYING b/deps/+MPFR/mpfr/mpfr.COPYING similarity index 100% rename from deps/MPFR/mpfr/mpfr.COPYING rename to deps/+MPFR/mpfr/mpfr.COPYING diff --git a/deps/MPFR/mpfr/mpfr.COPYING.LESSER b/deps/+MPFR/mpfr/mpfr.COPYING.LESSER similarity index 100% rename from deps/MPFR/mpfr/mpfr.COPYING.LESSER rename to deps/+MPFR/mpfr/mpfr.COPYING.LESSER diff --git a/deps/MPFR/mpfr/mpfr.README b/deps/+MPFR/mpfr/mpfr.README similarity index 100% rename from deps/MPFR/mpfr/mpfr.README rename to deps/+MPFR/mpfr/mpfr.README diff --git a/deps/NLopt/NLopt.cmake b/deps/+NLopt/NLopt.cmake similarity index 57% rename from deps/NLopt/NLopt.cmake rename to deps/+NLopt/NLopt.cmake index c5b5fefcee..aed1c19da8 100644 --- a/deps/NLopt/NLopt.cmake +++ b/deps/+NLopt/NLopt.cmake @@ -1,8 +1,4 @@ -#/|/ Copyright (c) Prusa Research 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -prusaslicer_add_cmake_project(NLopt +add_cmake_project(NLopt URL "https://github.com/stevengj/nlopt/archive/v2.5.0.tar.gz" URL_HASH SHA256=c6dd7a5701fff8ad5ebb45a3dc8e757e61d52658de3918e38bab233e7fd3b4ae CMAKE_ARGS @@ -13,7 +9,3 @@ prusaslicer_add_cmake_project(NLopt -DNLOPT_SWIG:BOOL=OFF -DNLOPT_TESTS:BOOL=OFF ) - -if (MSVC) - add_debug_dep(dep_NLopt) -endif () diff --git a/deps/OCCT/OCCT.cmake b/deps/+OCCT/OCCT.cmake similarity index 77% rename from deps/OCCT/OCCT.cmake rename to deps/+OCCT/OCCT.cmake index 0f4184fe93..5b7743e581 100644 --- a/deps/OCCT/OCCT.cmake +++ b/deps/+OCCT/OCCT.cmake @@ -1,8 +1,4 @@ -#/|/ Copyright (c) Prusa Research 2022 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -prusaslicer_add_cmake_project(OCCT +add_cmake_project(OCCT #LMBBS: changed version to 7.6.2 URL https://github.com/Open-Cascade-SAS/OCCT/archive/refs/tags/V7_6_2.zip URL_HASH SHA256=c696b923593e8c18d059709717dbf155b3e72fdd283c8522047a790ec3a432c5 @@ -25,7 +21,3 @@ prusaslicer_add_cmake_project(OCCT -DBUILD_MODULE_ModelingData=OFF -DBUILD_MODULE_Visualization=OFF ) - -if (MSVC) - add_debug_dep(dep_OCCT) -endif () diff --git a/deps/OCCT/occt_toolkit.cmake b/deps/+OCCT/occt_toolkit.cmake similarity index 100% rename from deps/OCCT/occt_toolkit.cmake rename to deps/+OCCT/occt_toolkit.cmake diff --git a/deps/OpenCSG/CMakeLists.txt.in b/deps/+OpenCSG/CMakeLists.txt.in similarity index 100% rename from deps/OpenCSG/CMakeLists.txt.in rename to deps/+OpenCSG/CMakeLists.txt.in diff --git a/deps/+OpenCSG/OpenCSG.cmake b/deps/+OpenCSG/OpenCSG.cmake new file mode 100644 index 0000000000..3ae93950ee --- /dev/null +++ b/deps/+OpenCSG/OpenCSG.cmake @@ -0,0 +1,9 @@ + +add_cmake_project(OpenCSG + URL https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip + URL_HASH SHA256=51afe0db79af8386e2027d56d685177135581e0ee82ade9d7f2caff8deab5ec5 + PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in ./CMakeLists.txt + DEPENDS dep_GLEW +) + +set(DEP_OpenCSG_DEPENDS ZLIB) diff --git a/deps/OpenEXR/OpenEXR.cmake b/deps/+OpenEXR/OpenEXR.cmake similarity index 60% rename from deps/OpenEXR/OpenEXR.cmake rename to deps/+OpenEXR/OpenEXR.cmake index c6f6c57ff5..e13f4a327f 100644 --- a/deps/OpenEXR/OpenEXR.cmake +++ b/deps/+OpenEXR/OpenEXR.cmake @@ -1,13 +1,7 @@ -#/|/ Copyright (c) Prusa Research 2021 - 2023 Lukáš Matěna @lukasmatena, Tomáš Mészáros @tamasmeszaros -#/|/ Copyright (c) 2023 Robert Schiele @schiele -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -prusaslicer_add_cmake_project(OpenEXR +add_cmake_project(OpenEXR # GIT_REPOSITORY https://github.com/openexr/openexr.git URL https://github.com/AcademySoftwareFoundation/openexr/archive/refs/tags/v2.5.5.zip URL_HASH SHA256=0307a3d7e1fa1e77e9d84d7e9a8694583fbbbfd50bdc6884e2c96b8ef6b902de - DEPENDS ${ZLIB_PKG} GIT_TAG v2.5.5 PATCH_COMMAND COMMAND ${PATCH_CMD} ${CMAKE_CURRENT_LIST_DIR}/OpenEXR.patch CMAKE_ARGS @@ -18,6 +12,4 @@ prusaslicer_add_cmake_project(OpenEXR -DOPENEXR_BUILD_UTILS:BOOL=OFF ) -if (MSVC) - add_debug_dep(dep_OpenEXR) -endif () +set(DEP_OpenEXR_DEPENDS ZLIB) diff --git a/deps/OpenEXR/OpenEXR.patch b/deps/+OpenEXR/OpenEXR.patch similarity index 100% rename from deps/OpenEXR/OpenEXR.patch rename to deps/+OpenEXR/OpenEXR.patch diff --git a/deps/OpenVDB/OpenVDB.cmake b/deps/+OpenVDB/OpenVDB.cmake similarity index 56% rename from deps/OpenVDB/OpenVDB.cmake rename to deps/+OpenVDB/OpenVDB.cmake index f658c2a62a..10cd3624d8 100644 --- a/deps/OpenVDB/OpenVDB.cmake +++ b/deps/+OpenVDB/OpenVDB.cmake @@ -1,7 +1,3 @@ -#/|/ Copyright (c) Prusa Research 2021 - 2022 Tomáš Mészáros @tamasmeszaros, Filip Sykala @Jony01 -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ if(BUILD_SHARED_LIBS) set(_build_shared ON) set(_build_static OFF) @@ -11,17 +7,16 @@ else() endif() set (_openvdb_vdbprint ON) -if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm") +if (${CMAKE_SYSTEM_PROCESSOR} MATCHES "arm" OR ${CMAKE_BUILD_TYPE} STREQUAL Debug) # Build fails on raspberry pi due to missing link directive to latomic # Let's hope it will be fixed soon. set (_openvdb_vdbprint OFF) endif () -prusaslicer_add_cmake_project(OpenVDB +add_cmake_project(OpenVDB # 8.2 patched URL https://github.com/tamasmeszaros/openvdb/archive/a68fd58d0e2b85f01adeb8b13d7555183ab10aa5.zip URL_HASH SHA256=f353e7b99bd0cbfc27ac9082de51acf32a8bc0b3e21ff9661ecca6f205ec1d81 - DEPENDS dep_TBB dep_Blosc dep_OpenEXR dep_Boost CMAKE_ARGS -DCMAKE_POSITION_INDEPENDENT_CODE=ON -DOPENVDB_BUILD_PYTHON_MODULE=OFF @@ -34,15 +29,4 @@ prusaslicer_add_cmake_project(OpenVDB -DDISABLE_DEPENDENCY_VERSION_CHECKS=ON # Centos6 has old zlib ) -if (MSVC) - if (${DEP_DEBUG}) - ExternalProject_Get_Property(dep_OpenVDB BINARY_DIR) - ExternalProject_Add_Step(dep_OpenVDB build_debug - DEPENDEES build - DEPENDERS install - COMMAND ${CMAKE_COMMAND} ../dep_OpenVDB -DOPENVDB_BUILD_VDB_PRINT=OFF - COMMAND msbuild /m /P:Configuration=Debug INSTALL.vcxproj - WORKING_DIRECTORY "${BINARY_DIR}" - ) - endif () -endif () \ No newline at end of file +set(DEP_OpenVDB_DEPENDS TBB Blosc OpenEXR Boost) diff --git a/deps/Qhull/Qhull.cmake b/deps/+Qhull/Qhull.cmake similarity index 50% rename from deps/Qhull/Qhull.cmake rename to deps/+Qhull/Qhull.cmake index fec2a067e3..730d22acff 100644 --- a/deps/Qhull/Qhull.cmake +++ b/deps/+Qhull/Qhull.cmake @@ -1,15 +1,7 @@ -#/|/ Copyright (c) Prusa Research 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ include(GNUInstallDirs) -prusaslicer_add_cmake_project(Qhull +add_cmake_project(Qhull URL "https://github.com/qhull/qhull/archive/v8.0.1.zip" URL_HASH SHA256=5287f5edd6a0372588f5d6640799086a4033d89d19711023ef8229dd9301d69b CMAKE_ARGS -DINCLUDE_INSTALL_DIR=${CMAKE_INSTALL_INCLUDEDIR} ) - -if (MSVC) - add_debug_dep(dep_Qhull) -endif () \ No newline at end of file diff --git a/deps/TBB/TBB.cmake b/deps/+TBB/TBB.cmake similarity index 56% rename from deps/TBB/TBB.cmake rename to deps/+TBB/TBB.cmake index 93904fb771..d7ed02d5e1 100644 --- a/deps/TBB/TBB.cmake +++ b/deps/+TBB/TBB.cmake @@ -1,8 +1,4 @@ -#/|/ Copyright (c) Prusa Research 2021 - 2022 Tomáš Mészáros @tamasmeszaros, Filip Sykala @Jony01 -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -prusaslicer_add_cmake_project( +add_cmake_project( TBB URL "https://github.com/oneapi-src/oneTBB/archive/refs/tags/v2021.5.0.zip" URL_HASH SHA256=83ea786c964a384dd72534f9854b419716f412f9d43c0be88d41874763e7bb47 @@ -13,8 +9,4 @@ prusaslicer_add_cmake_project( -DCMAKE_DEBUG_POSTFIX=_debug ) -if (MSVC) - add_debug_dep(dep_TBB) -endif () - diff --git a/deps/+wxWidgets/wxWidgets.cmake b/deps/+wxWidgets/wxWidgets.cmake index 33bb9709dc..6c6338d2e9 100644 --- a/deps/+wxWidgets/wxWidgets.cmake +++ b/deps/+wxWidgets/wxWidgets.cmake @@ -42,4 +42,4 @@ add_cmake_project(wxWidgets -DwxUSE_WEBREQUEST=OFF ) -set(DEP_wxWidgets_DEPENDS ZLIB PNG EXPAT TIFF JPEG NanoSVG) \ No newline at end of file +set(DEP_wxWidgets_DEPENDS ZLIB PNG EXPAT TIFF JPEG NanoSVG) diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 1301dac43b..776956ab1d 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -26,9 +26,8 @@ cmake_minimum_required(VERSION 3.12) project(PrusaSlicer_deps) -# Always ON options: -if (NOT MSVC) - set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") +if (MSVC) + option(DEP_DEBUG "Build in debug version of packages automatically" OFF) endif () if (CMAKE_VERSION VERSION_GREATER_EQUAL 3.24) @@ -51,6 +50,27 @@ macro(list_projects result curdir) set(${result} ${dirlist}) endmacro() +function(dep_message mode msg) + if (NOT DEP_MESSAGES_WRITTEN) + message(${mode} "${msg}") + endif() +endfunction () + +# Always ON options: +if (MSVC) + if ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "8") + dep_message(STATUS "Detected 64-bit compiler => building 64-bit deps bundle") + set(DEPS_BITS 64) + elseif ("${CMAKE_SIZEOF_VOID_P}" STREQUAL "4") + dep_message(STATUS "Detected 32-bit compiler => building 32-bit deps bundle") + set(DEPS_BITS 32) + else () + dep_message(FATAL_ERROR "Unable to detect architecture!") + endif () +else () + set(DEP_CMAKE_OPTS "-DCMAKE_POSITION_INDEPENDENT_CODE=ON") +endif () + if (APPLE) # This ensures dependencies don't use SDK features which are not available in the version specified by Deployment target # That can happen when one uses a recent SDK but specifies an older Deployment target @@ -68,7 +88,8 @@ if (APPLE) endif () list_projects(SUPPORTED_PACKAGES ${CMAKE_CURRENT_LIST_DIR}) -message(STATUS "Found external package definitions: ${SUPPORTED_PACKAGES}") + +dep_message(STATUS "Found external package definitions: ${SUPPORTED_PACKAGES}") set(REQUIRED_PACKAGES Boost @@ -76,7 +97,14 @@ set(REQUIRED_PACKAGES Cereal CURL EXPAT + NLopt + GLEW + TBB + Qhull wxWidgets + OpenVDB + CGAL + OCCT ) set(SYSTEM_PROVIDED_PACKAGES OpenGL) @@ -112,24 +140,55 @@ foreach (pkg ${SUPPORTED_PACKAGES}) endforeach() # Establish dependency graph -foreach (pkg ${REQUIRED_PACKAGES}) +foreach (pkg ${SUPPORTED_PACKAGES}) foreach(deppkg ${DEP_${pkg}_DEPENDS}) if (${deppkg} IN_LIST SYSTEM_PROVIDED_PACKAGES) find_package(${deppkg} QUIET) if (NOT ${deppkg}_FOUND) - message(WARNING "No ${deppkg} found in system altough marked as system provided. This might cause trouble building the dependencies on this platform") + dep_message(WARNING "No ${deppkg} found in system altough marked as system provided. This might cause trouble building the dependencies on this platform") endif () else () - message(STATUS "Mapping dep_${deppkg} => dep_${pkg}") + dep_message(STATUS "Mapping dep_${deppkg} => dep_${pkg}") add_dependencies(dep_${pkg} dep_${deppkg}) - list(APPEND _build_list dep_${deppkg}) + if (${pkg} IN_LIST REQUIRED_PACKAGES) + list(APPEND _build_list dep_${deppkg}) + endif () endif () endforeach() endforeach() list(APPEND _build_list ${_dep_list}) list(REMOVE_DUPLICATES _build_list) -message(STATUS "Building dep targets: ${_build_list}") +dep_message(STATUS "Building dep targets (${CMAKE_BUILD_TYPE}): ${_build_list}") add_custom_target(deps ALL DEPENDS ${_dep_list}) -install(CODE "message(STATUS \"Built packages succesfully.\")") \ No newline at end of file +# Support legacy option DEP_DEBUG on MSVC to build debug libraries in the same cmake run as for Release: +if (DEP_DEBUG AND NOT CMAKE_BUILD_TYPE STREQUAL "Debug") + set(_build_list_dbg "") + foreach (t ${_build_list}) + list(APPEND _build_list_dbg ${t}_debug) + endforeach() + dep_message(STATUS "Building dep targets (Debug): ${_build_list_dbg}") + + file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DebugBuild) + execute_process( + COMMAND ${CMAKE_COMMAND} ${CMAKE_CURRENT_SOURCE_DIR} -G${CMAKE_GENERATOR} -DCMAKE_BUILD_TYPE=Debug -DDEP_DOWNLOAD_DIR=${DEP_DOWNLOAD_DIR} -DDESTDIR=${DESTDIR} -DDEP_MESSAGES_WRITTEN=ON + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DebugBuild + ) + + # Can be used to build only the debug libs + add_custom_target(deps_debug ALL) + + # Each lib will have a dep__debug target to build only the debug counterpart + foreach(pkgtgt ${_build_list}) + add_custom_target(${pkgtgt}_debug + COMMAND ${CMAKE_COMMAND} --build . --target ${pkgtgt} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/DebugBuild + ) + add_dependencies(deps_debug ${pkgtgt}_debug) + endforeach() +endif () + +set(DEP_MESSAGES_WRITTEN ON CACHE BOOL "") + +install(CODE "message(STATUS \"Built packages succesfully.\")") diff --git a/deps/GLEW/GLEW.cmake b/deps/GLEW/GLEW.cmake deleted file mode 100644 index c6c5a51fe0..0000000000 --- a/deps/GLEW/GLEW.cmake +++ /dev/null @@ -1,20 +0,0 @@ -#/|/ Copyright (c) Prusa Research 2019 - 2022 Tomáš Mészáros @tamasmeszaros, Filip Sykala @Jony01 -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ -# We have to check for OpenGL to compile GLEW -set(OpenGL_GL_PREFERENCE "LEGACY") # to prevent a nasty warning by cmake -find_package(OpenGL QUIET REQUIRED) - -prusaslicer_add_cmake_project( - GLEW - URL https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip - URL_HASH SHA256=a9046a913774395a095edcc0b0ac2d81c3aacca61787b39839b941e9be14e0d4 - SOURCE_SUBDIR build/cmake - CMAKE_ARGS - -DBUILD_UTILS=OFF -) - -if (MSVC) - add_debug_dep(dep_GLEW) -endif () diff --git a/deps/OpenCSG/OpenCSG.cmake b/deps/OpenCSG/OpenCSG.cmake deleted file mode 100644 index 83dc7b3c80..0000000000 --- a/deps/OpenCSG/OpenCSG.cmake +++ /dev/null @@ -1,21 +0,0 @@ -#/|/ Copyright (c) Prusa Research 2019 - 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ - -prusaslicer_add_cmake_project(OpenCSG - # GIT_REPOSITORY https://github.com/floriankirsch/OpenCSG.git - # GIT_TAG 83e274457b46c9ad11a4ee599203250b1618f3b9 #v1.4.2 - URL https://github.com/floriankirsch/OpenCSG/archive/refs/tags/opencsg-1-4-2-release.zip - URL_HASH SHA256=51afe0db79af8386e2027d56d685177135581e0ee82ade9d7f2caff8deab5ec5 - PATCH_COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt.in ./CMakeLists.txt - DEPENDS dep_GLEW -) - -if (TARGET ${ZLIB_PKG}) - add_dependencies(dep_OpenCSG ${ZLIB_PKG}) -endif() - -if (MSVC) - add_debug_dep(dep_OpenCSG) -endif () \ No newline at end of file diff --git a/deps/OpenSSL/OpenSSL.cmake b/deps/OpenSSL/OpenSSL.cmake deleted file mode 100644 index 5b9caea52b..0000000000 --- a/deps/OpenSSL/OpenSSL.cmake +++ /dev/null @@ -1,39 +0,0 @@ -#/|/ Copyright (c) Prusa Research 2021 Tomáš Mészáros @tamasmeszaros -#/|/ -#/|/ PrusaSlicer is released under the terms of the AGPLv3 or higher -#/|/ - -include(ProcessorCount) -ProcessorCount(NPROC) - -set(_conf_cmd "./config") -set(_cross_arch "") -set(_cross_comp_prefix_line "") -if (CMAKE_CROSSCOMPILING) - set(_conf_cmd "./Configure") - set(_cross_comp_prefix_line "--cross-compile-prefix=${TOOLCHAIN_PREFIX}-") - - if (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "aarch64" OR ${CMAKE_SYSTEM_PROCESSOR} STREQUAL "arm64") - set(_cross_arch "linux-aarch64") - elseif (${CMAKE_SYSTEM_PROCESSOR} STREQUAL "armhf") # For raspbian - # TODO: verify - set(_cross_arch "linux-armv4") - endif () -endif () - -ExternalProject_Add(dep_OpenSSL - EXCLUDE_FROM_ALL ON - URL "https://github.com/openssl/openssl/archive/OpenSSL_1_1_0l.tar.gz" - URL_HASH SHA256=e2acf0cf58d9bff2b42f2dc0aee79340c8ffe2c5e45d3ca4533dd5d4f5775b1d - DOWNLOAD_DIR ${DEP_DOWNLOAD_DIR}/OpenSSL - BUILD_IN_SOURCE ON - CONFIGURE_COMMAND ${_conf_cmd} ${_cross_arch} - "--prefix=${DESTDIR}/usr/local" - ${_cross_comp_prefix_line} - no-shared - no-ssl3-method - no-dynamic-engine - -Wa,--noexecstack - BUILD_COMMAND make depend && make "-j${NPROC}" - INSTALL_COMMAND make install_sw -) \ No newline at end of file