diff --git a/.gitignore b/.gitignore index 4ef4e4e6c..02bfedf7a 100644 --- a/.gitignore +++ b/.gitignore @@ -23,14 +23,7 @@ build/* install/* # external libraries automatically downloaded by cmake -src/external/boost* -src/external/CGAL* -src/external/easyexif* -src/external/libigl* -src/external/libE57Format* -src/external/tinygltf* -src/external/u3d* -src/external/xerces-c* +src/external/downloads/* # files created/modified during deploy stage install/macos/resources/meshlab_dmg_final.json diff --git a/src/external/CMakeLists.txt b/src/external/CMakeLists.txt index 9a5515bd1..f3685c060 100644 --- a/src/external/CMakeLists.txt +++ b/src/external/CMakeLists.txt @@ -12,6 +12,8 @@ option( "Should warnings be disabled on bundled source code?" ON) +set(MESHLAB_EXTERNAL_DOWNLOAD_DIR "${CMAKE_CURRENT_SOURCE_DIR}/downloads/") + add_library(external-disable-warnings INTERFACE) if(BUILD_BUNDLED_SOURCES_WITHOUT_WARNINGS) if(MSVC) diff --git a/src/external/boost.cmake b/src/external/boost.cmake index 36d824fa8..ae696746f 100644 --- a/src/external/boost.cmake +++ b/src/external/boost.cmake @@ -15,12 +15,11 @@ if(MESHLAB_ALLOW_SYSTEM_BOOST AND TARGET Boost::boost) target_link_libraries(external-boost INTERFACE Boost::thread) endif() elseif(MESHLAB_ALLOW_DOWNLOAD_SOURCE_BOOST) - set(BOOST_DIR ${CMAKE_CURRENT_LIST_DIR}/boost_1_75_0) + set(BOOST_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/boost_1_75_0) if (NOT EXISTS "${BOOST_DIR}/boost/version.hpp") set(BOOST_LINK https://boostorg.jfrog.io/artifactory/main/release/1.75.0/source/boost_1_75_0.zip) - - download_and_unzip(${BOOST_LINK} ${CMAKE_CURRENT_LIST_DIR} "Boost") + download_and_unzip(${BOOST_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "Boost") endif() message(STATUS "- Boost - using downloaded source") diff --git a/src/external/cgal.cmake b/src/external/cgal.cmake index 2600b3e3d..b259670a5 100644 --- a/src/external/cgal.cmake +++ b/src/external/cgal.cmake @@ -13,11 +13,11 @@ if(MESHLAB_ALLOW_SYSTEM_CGAL AND TARGET CGAL::CGAL) add_library(external-cgal INTERFACE) target_link_libraries(external-cgal INTERFACE CGAL::CGAL Threads::Threads) elseif(MESHLAB_ALLOW_DOWNLOAD_SOURCE_CGAL) - set(CGAL_DIR "${CMAKE_CURRENT_LIST_DIR}/CGAL-5.2.1") + set(CGAL_DIR "${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/CGAL-5.2.1") if (NOT EXISTS "${CGAL_DIR}/include/CGAL/version.h") set(CGAL_LINK https://github.com/CGAL/cgal/releases/download/v5.2.1/CGAL-5.2.1.zip) - download_and_unzip(${CGAL_LINK} ${CMAKE_CURRENT_LIST_DIR} "CGAL") + download_and_unzip(${CGAL_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "CGAL") if (WIN32) set(CGAL_AUX_LINK https://github.com/CGAL/cgal/releases/download/v5.2.1/CGAL-5.2.1-win64-auxiliary-libraries-gmp-mpfr.zip) diff --git a/src/external/e57.cmake b/src/external/e57.cmake index 4203ec6d0..99e3c5e60 100644 --- a/src/external/e57.cmake +++ b/src/external/e57.cmake @@ -6,12 +6,11 @@ option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LIBE57 "Allow download and use of libE57For if (TARGET XercesC::XercesC) if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LIBE57) - - set(LIBE57_DIR ${CMAKE_CURRENT_LIST_DIR}/libE57Format-2.3.0) + set(LIBE57_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/libE57Format-2.3.0) if (NOT EXISTS ${LIBE57_DIR}/CMakeLists.txt) set(LIBE57_LINK https://github.com/asmaloney/libE57Format/archive/refs/tags/v2.3.0.zip) - download_and_unzip(${LIBE57_LINK} ${CMAKE_CURRENT_LIST_DIR} "LibE57") + download_and_unzip(${LIBE57_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "LibE57") endif() message(STATUS "- libE57 - using downloaded source") diff --git a/src/external/easyexif.cmake b/src/external/easyexif.cmake index ec2c2ab14..cddf15b67 100644 --- a/src/external/easyexif.cmake +++ b/src/external/easyexif.cmake @@ -5,11 +5,11 @@ option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_EASYEXIF "Allow download and use of EasyExif source" ON) if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_EASYEXIF) - set(EASYEXIF_DIR ${CMAKE_CURRENT_LIST_DIR}/easyexif-1.0) + set(EASYEXIF_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/easyexif-1.0) if (NOT EXISTS "${EASYEXIF_DIR}/exif.h") set(EASYEXIF_LINK https://github.com/mayanklahiri/easyexif/archive/refs/tags/v1.0.zip) - download_and_unzip(${EASYEXIF_LINK} ${CMAKE_CURRENT_LIST_DIR} "EasyExif") + download_and_unzip(${EASYEXIF_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "EasyExif") endif() message(STATUS "- EasyExif - using downloaded source") diff --git a/src/external/glew.cmake b/src/external/glew.cmake index fb5c3903f..b1174370c 100644 --- a/src/external/glew.cmake +++ b/src/external/glew.cmake @@ -24,11 +24,11 @@ if(MESHLAB_ALLOW_SYSTEM_GLEW AND HAVE_SYSTEM_GLEW) message(FATAL_ERROR "OpenGL not found or your CMake version is too old!") endif() elseif(MESHLAB_ALLOW_DOWNLOAD_SOURCE_GLEW) - set(GLEW_DIR ${CMAKE_CURRENT_LIST_DIR}/glew-2.2.0) + set(GLEW_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/glew-2.2.0) if (NOT EXISTS "${GLEW_DIR}/src/glew.c") set(GLEW_LINK https://github.com/nigels-com/glew/releases/download/glew-2.2.0/glew-2.2.0.zip) - download_and_unzip(${GLEW_LINK} ${CMAKE_CURRENT_LIST_DIR} "GLEW") + download_and_unzip(${GLEW_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "GLEW") endif() message(STATUS "- GLEW - using downloaded source") diff --git a/src/external/libigl.cmake b/src/external/libigl.cmake index c1b3565af..6c50b274e 100644 --- a/src/external/libigl.cmake +++ b/src/external/libigl.cmake @@ -5,11 +5,11 @@ option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LIBIGL "Allow download and use of LibIGL source" ON) if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_LIBIGL) - set(LIBIGL_DIR ${CMAKE_CURRENT_LIST_DIR}/libigl-2.4.0) + set(LIBIGL_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/libigl-2.4.0) if (NOT EXISTS "${LIBIGL_DIR}/include/igl/igl_inline.h") set(LIBIGL_LINK https://github.com/libigl/libigl/archive/refs/tags/v2.4.0.zip) - download_and_unzip(${LIBIGL_LINK} ${CMAKE_CURRENT_LIST_DIR} "LibIGL") + download_and_unzip(${LIBIGL_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "LibIGL") endif() message(STATUS "- libigl - using downloaded source") diff --git a/src/external/tinygltf.cmake b/src/external/tinygltf.cmake index ade6c52fc..691ca19e0 100644 --- a/src/external/tinygltf.cmake +++ b/src/external/tinygltf.cmake @@ -5,11 +5,11 @@ option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_TINYGLTF "Allow download and use of tinyglTF source" ON) if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_TINYGLTF) - set(TINYGLTF_DIR ${CMAKE_CURRENT_LIST_DIR}/tinygltf-2.6.3) + set(TINYGLTF_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/tinygltf-2.6.3) if (NOT EXISTS "${TINYGLTF_DIR}/tiny_gltf.h") set(TINYGLTF_LINK https://github.com/syoyo/tinygltf/archive/refs/tags/v2.6.3.zip) - download_and_unzip(${TINYGLTF_LINK} ${CMAKE_CURRENT_LIST_DIR} "tinygltf") + download_and_unzip(${TINYGLTF_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "tinygltf") endif() message(STATUS "- tiny glTF - using downloaded source") diff --git a/src/external/u3d.cmake b/src/external/u3d.cmake index c3c32f995..8e520079b 100644 --- a/src/external/u3d.cmake +++ b/src/external/u3d.cmake @@ -6,11 +6,11 @@ option(MESHLAB_ALLOW_DOWNLOAD_SOURCE_U3D "Allow download and use of u3d source" if(MESHLAB_ALLOW_DOWNLOAD_SOURCE_U3D) # todo - make release of u3d - set(U3D_DIR ${CMAKE_CURRENT_LIST_DIR}/u3d-master) + set(U3D_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/u3d-master) if (NOT EXISTS ${U3D_DIR}/CMakeLists.txt) set(U3D_LINK https://github.com/alemuntoni/u3d/archive/refs/heads/master.zip) - download_and_unzip(${U3D_LINK} ${CMAKE_CURRENT_LIST_DIR} "u3d") + download_and_unzip(${U3D_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "u3d") endif() message(STATUS "- u3d - using bundled source") diff --git a/src/external/xerces.cmake b/src/external/xerces.cmake index 3898ff64b..ac2046b6c 100644 --- a/src/external/xerces.cmake +++ b/src/external/xerces.cmake @@ -17,11 +17,11 @@ if(MESHLAB_ALLOW_SYSTEM_XERCES AND TARGET XercesC::XercesC) elseif(MESHLAB_ALLOW_DOWNLOAD_SOURCE_XERCES) set(XERCES_C_VER 3.2.4) - set(XERCES_C_DIR ${CMAKE_CURRENT_LIST_DIR}/xerces-c-${XERCES_C_VER}) + set(XERCES_C_DIR ${MESHLAB_EXTERNAL_DOWNLOAD_DIR}/xerces-c-${XERCES_C_VER}) if (NOT EXISTS ${XERCES_C_DIR}/CMakeLists.txt) set(XERCES_C_LINK https://dlcdn.apache.org//xerces/c/3/sources/xerces-c-${XERCES_C_VER}.zip) - download_and_unzip(${XERCES_C_LINK} ${CMAKE_CURRENT_LIST_DIR} "Xerces-C") + download_and_unzip(${XERCES_C_LINK} ${MESHLAB_EXTERNAL_DOWNLOAD_DIR} "Xerces-C") endif() message(STATUS "- XercesC - using downloaded source")