From bb15e2287f061efa3fd17faff89d16d98eedda47 Mon Sep 17 00:00:00 2001 From: Ryan Pavlik Date: Wed, 2 Dec 2020 11:50:16 -0600 Subject: [PATCH] Modularize build system usage of dependencies. Must check for the existence of a bundled dep before we use it, since e.g. Debian has to strip some files for license and policy reasons. --- src/external/eigen.cmake | 18 +++ src/external/external.cmake | 30 +++-- src/external/glew.cmake | 50 ++++++++ src/external/gmp-mpir.cmake | 48 ++++++++ src/external/levmar-2.3/CMakeLists.txt | 67 ++++++++--- .../levmar-2.3/CMakeLists_original.txt | 52 --------- src/external/levmar.cmake | 23 ++++ .../CMakeLists.txt => lib3ds.cmake} | 16 ++- .../CMakeLists.txt => muparser.cmake} | 12 +- src/external/newuoa.cmake | 11 ++ .../CMakeLists.txt => openctm.cmake} | 12 +- src/external/opengr.cmake | 11 ++ .../CMakeLists.txt => qhull.cmake} | 12 +- src/external/ssynth.cmake | 108 ++++++++++++++++++ .../structuresynth-1.5/CMakeLists.txt | 101 ---------------- src/external/u3d.cmake | 10 ++ src/external/u3d/CMakeLists.txt | 1 - src/external_common.cmake | 19 ++- 18 files changed, 393 insertions(+), 208 deletions(-) create mode 100644 src/external/eigen.cmake create mode 100644 src/external/glew.cmake create mode 100644 src/external/gmp-mpir.cmake delete mode 100644 src/external/levmar-2.3/CMakeLists_original.txt create mode 100644 src/external/levmar.cmake rename src/external/{lib3ds-1.3.0/CMakeLists.txt => lib3ds.cmake} (74%) rename src/external/{muparser_v225/CMakeLists.txt => muparser.cmake} (66%) create mode 100644 src/external/newuoa.cmake rename src/external/{OpenCTM-1.0.3/CMakeLists.txt => openctm.cmake} (71%) create mode 100644 src/external/opengr.cmake rename src/external/{qhull-2003.1/CMakeLists.txt => qhull.cmake} (73%) create mode 100644 src/external/ssynth.cmake delete mode 100644 src/external/structuresynth-1.5/CMakeLists.txt create mode 100644 src/external/u3d.cmake diff --git a/src/external/eigen.cmake b/src/external/eigen.cmake new file mode 100644 index 000000000..4c75a7e93 --- /dev/null +++ b/src/external/eigen.cmake @@ -0,0 +1,18 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_EIGEN "Allow use of bundled Eigen source" ON) +option(ALLOW_SYSTEM_EIGEN "Allow use of system-provided Eigen" ON) + +if(ALLOW_SYSTEM_EIGEN AND EIGEN3_INCLUDE_DIR) + message(STATUS "- Eigen - using system-provided library") + set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) +elseif(ALLOW_BUNDLED_EIGEN AND EXISTS "${EIGEN_DIR}/Eigen/Eigen") + message(STATUS "- Eigen - using bundled source") + set(EIGEN_INCLUDE_DIRS ${EIGEN_DIR}) +else() + message( + FATAL_ERROR + "Eigen is required - at least one of ALLOW_SYSTEM_EIGEN or ALLOW_BUNDLED_EIGEN must be enabled and found.") +endif() diff --git a/src/external/external.cmake b/src/external/external.cmake index e329193c4..7efb0f63c 100644 --- a/src/external/external.cmake +++ b/src/external/external.cmake @@ -1,45 +1,43 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + # newuoa - optional and header-only, for several plugins including all that use levmar set(NEWUOA_DIR ${VCGDIR}/wrap/newuoa) -message(STATUS "- newuoa - using bundled source") -add_library(external-newuoa INTERFACE) -target_include_directories(external-newuoa INTERFACE ${NEWUOA_DIR}/include) +include(${EXTERNAL_DIR}/newuoa.cmake) # levmar - optional, for several plugins set(LEVMAR_DIR ${EXTERNAL_DIR}/levmar-2.3) -add_subdirectory(${LEVMAR_DIR}) +include(${EXTERNAL_DIR}/levmar.cmake) # lib3ds - optional, for io_3ds set(LIB3DS_DIR ${EXTERNAL_DIR}/lib3ds-1.3.0) -add_subdirectory(${LIB3DS_DIR}) +include(${EXTERNAL_DIR}/lib3ds.cmake) # gmp or mpir - optional, for filter_csg set(MPIR_DIR ${EXTERNAL_DIR}/mpir) -add_subdirectory(${MPIR_DIR}) +include(${EXTERNAL_DIR}/gmp-mpir.cmake) # muparser - optional, for filter_func set(MUPARSER_DIR ${EXTERNAL_DIR}/muparser_v225) -add_subdirectory(${MUPARSER_DIR}) +include(${EXTERNAL_DIR}/muparser.cmake) # OpenCTM - optional, for io_ctm set(OPENCTM_DIR ${EXTERNAL_DIR}/OpenCTM-1.0.3) -add_subdirectory(${OPENCTM_DIR}) +include(${EXTERNAL_DIR}/openctm.cmake) # structure-synth - optional, for filter_ssynth set(SSYNTH_DIR ${EXTERNAL_DIR}/structuresynth-1.5) -add_subdirectory(${SSYNTH_DIR}) +include(${EXTERNAL_DIR}/ssynth.cmake) # qhull - optional, for filter_qhull set(QHULL_DIR ${EXTERNAL_DIR}/qhull-2003.1) -add_subdirectory(${QHULL_DIR}) +include(${EXTERNAL_DIR}/qhull.cmake) # u3d - optional, for io_u3d set(U3D_DIR ${EXTERNAL_DIR}/u3d) -add_subdirectory(${U3D_DIR}) -#set_property(TARGET external-IDTFConverter PROPERTY FOLDER External) +include(${EXTERNAL_DIR}/u3d.cmake) # opengr - optional and header-only, for filter_globalregistration set(OPENGR_DIR ${EXTERNAL_DIR}/OpenGR) -message(STATUS "- OpenGR - using bundled source") -add_library(external-opengr INTERFACE) -target_include_directories(external-opengr INTERFACE ${OPENGR_DIR}/src/) - +include(${EXTERNAL_DIR}/opengr.cmake) diff --git a/src/external/glew.cmake b/src/external/glew.cmake new file mode 100644 index 000000000..0e308d9eb --- /dev/null +++ b/src/external/glew.cmake @@ -0,0 +1,50 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_GLEW "Allow use of bundled GLEW source" ON) +option(ALLOW_SYSTEM_GLEW "Allow use of system-provided GLEW" ON) + +unset(HAVE_SYSTEM_GLEW) +if(DEFINED GLEW_VERSION) + if((TARGET GLEW::GLEW) AND (${GLEW_VERSION} VERSION_GREATER_EQUAL "2.0.0")) + set(HAVE_SYSTEM_GLEW TRUE) + endif() +endif() + +if(ALLOW_SYSTEM_GLEW AND HAVE_SYSTEM_GLEW) + message(STATUS "- glew - using system-provided library") + add_library(external-glew INTERFACE) + target_link_libraries(external-glew INTERFACE GLEW::GLEW) + if(TARGET OpenGL::OpenGL) + target_link_libraries(external-glew INTERFACE OpenGL::OpenGL) + elseif(TARGET OpenGL::GL) + target_link_libraries(external-glew INTERFACE OpenGL::GL) + else() + message(FATAL_ERROR "OpenGL not found or your CMake version is too old!") + endif() +elseif(ALLOW_BUNDLED_GLEW AND EXISTS "${GLEW_DIR}/src/glew.c") + message(STATUS "- glew - using bundled source") + add_library(external-glew STATIC "${GLEW_DIR}/src/glew.c") + target_compile_definitions(external-glew PUBLIC GLEW_STATIC) + target_include_directories(external-glew SYSTEM PUBLIC ${GLEW_DIR}/include) + if(TARGET OpenGL::OpenGL) + target_link_libraries(external-glew PUBLIC OpenGL::OpenGL) + elseif(TARGET OpenGL::GL) + target_link_libraries(external-glew PUBLIC OpenGL::GL) + else() + message(FATAL_ERROR "OpenGL not found or your CMake version is too old!") + endif() + if(TARGET OpenGL::GLX) + target_link_libraries(external-glew PUBLIC OpenGL::GLX) + endif() + set_property(TARGET external-glew PROPERTY FOLDER External) + + # TODO not sure what this was for, but it's almost certainly wrong on at least one compiler + # since it's not in a compiler conditional. + # target_compile_options(external-glew PRIVATE -w) +else() + message( + FATAL_ERROR + "GLEW is required - at least one of ALLOW_SYSTEM_GLEW or ALLOW_BUNDLED_GLEW must be enabled and found.") +endif() diff --git a/src/external/gmp-mpir.cmake b/src/external/gmp-mpir.cmake new file mode 100644 index 000000000..ae757716c --- /dev/null +++ b/src/external/gmp-mpir.cmake @@ -0,0 +1,48 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_SYSTEM_GMP "Allow use of system-provided GMP" ON) +option(ALLOW_BUNDLED_MPIR "Allow use of bundled MPIR binaries" ON) + +unset(HAVE_BUNDLED_MPIR) +if (APPLE AND EXISTS "${MPIR_DIR}/macx64/libmpir.a" AND CMAKE_SIZEOF_VOID_P EQUAL 8) + # We have mac binaries for x64 + # TODO check target processor architecture, not just pointer size + set(HAVE_BUNDLED_MPIR APPLE-x64) +elseif(WIN32 AND MSVC AND EXISTS "${MPIR_DIR}/win32-msvc/mpir.lib" AND CMAKE_SIZEOF_VOID_P EQUAL 8) + # We have windows binaries for x64 + # TODO check target processor architecture, not just pointer size + set(HAVE_BUNDLED_MPIR WIN-x64) +endif() + +# gmp or mpir - optional, for filter_csg +if(ALLOW_SYSTEM_GMP AND GMP_FOUND) + message(STATUS "- GMP/MPIR - using system-provided GMP library") + add_library(external-gmp INTERFACE) + target_include_directories(external-gmp SYSTEM INTERFACE ${GMP_INCLUDE_DIRS}) + target_link_libraries(external-gmp INTERFACE ${GMP_LIBRARIES}) + +elseif(ALLOW_BUNDLED_MPIR AND HAVE_BUNDLED_MPIR) + message(STATUS "- GMP/MPIR - using already built MPIR library") + add_library(external-mpir SHARED IMPORTED GLOBAL) + add_library(external-mpirxx SHARED IMPORTED GLOBAL) + # TODO why are we copying these? They're static libraries, not needed at runtime. + if (HAVE_BUNDLED_MPIR STREQUAL "WIN-x64") + file( + COPY ${MPIR_DIR}/win32-msvc/mpir.lib ${MPIR_DIR}/win32-msvc/mpirxx.lib + DESTINATION ${MESHLAB_LIB_OUTPUT_DIR}) + set_property(TARGET external-mpir PROPERTY IMPORTED_IMPLIB "${MESHLAB_LIB_OUTPUT_DIR}/mpir.lib") + set_property(TARGET external-mpir PROPERTY IMPORTED_LOCATION "${MESHLAB_LIB_OUTPUT_DIR}/mpir.lib") + set_property(TARGET external-mpirxx PROPERTY IMPORTED_IMPLIB "${MESHLAB_LIB_OUTPUT_DIR}/mpirxx.lib") + set_property(TARGET external-mpirxx PROPERTY IMPORTED_LOCATION "${MESHLAB_LIB_OUTPUT_DIR}/mpirxx.lib") + target_include_directories(external-mpir INTERFACE ${EXTERNAL_DIR}/inc/win32-msvc/mpir-2.2.1_x64) + elseif(HAVE_BUNDLED_MPIR STREQUAL "APPLE-x64") + file( + COPY ${MPIR_DIR}/macx64/libmpir.a ${MPIR_DIR}/macx64/libmpirxx.a + DESTINATION ${MESHLAB_LIB_OUTPUT_DIR}) + set_property(TARGET external-mpir PROPERTY IMPORTED_LOCATION "${MESHLAB_LIB_OUTPUT_DIR}/libmpir.a") + set_property(TARGET external-mpirxx PROPERTY IMPORTED_LOCATION "${MESHLAB_LIB_OUTPUT_DIR}/libmpirxx.a") + target_include_directories(external-mpir INTERFACE ${EXTERNAL_DIR}/inc/macx64/mpir-2.4.0) + endif() +endif() diff --git a/src/external/levmar-2.3/CMakeLists.txt b/src/external/levmar-2.3/CMakeLists.txt index f9ebfba91..0ba255c15 100644 --- a/src/external/levmar-2.3/CMakeLists.txt +++ b/src/external/levmar-2.3/CMakeLists.txt @@ -1,15 +1,52 @@ -message(STATUS "- levmar - using bundled source") -add_library( - external-levmar STATIC - "${LEVMAR_DIR}/compiler.h" - "${LEVMAR_DIR}/lm.h" - "${LEVMAR_DIR}/misc.h" - "${LEVMAR_DIR}/Axb.c" - "${LEVMAR_DIR}/lm.c" - "${LEVMAR_DIR}/lmbc.c" - "${LEVMAR_DIR}/lmblec.c" - "${LEVMAR_DIR}/lmlec.c" - "${LEVMAR_DIR}/misc.c") -target_include_directories(external-levmar PUBLIC ${LEVMAR_DIR}) -set_property(TARGET external-levmar PROPERTY FOLDER External) -target_compile_options(external-levmar PRIVATE -w) +# levmar CMake file; see http://www.cmake.org and +# http://www.insightsoftwareconsortium.org/wiki/index.php/CMake_Tutorial + +PROJECT(LEVMAR) +#CMAKE_MINIMUM_REQUIRED(VERSION 1.4) + +# compiler flags +ADD_DEFINITIONS(-DLINSOLVERS_RETAIN_MEMORY) # do not free memory between linear solvers calls +#REMOVE_DEFINITIONS(-DLINSOLVERS_RETAIN_MEMORY) + +# f2c is sometimes equivalent to libF77 & libI77; in that case, set HAVE_F2C to 0 +SET(HAVE_F2C 1 CACHE BOOL "Do we have f2c or F77/I77?" ) + +# the directory where the lapack/blas/f2c libraries reside +SET(LAPACKBLAS_DIR /usr/lib CACHE PATH "Path to lapack/blas libraries") + +# actual names for the lapack/blas/f2c libraries +SET(LAPACK_LIB lapack CACHE STRING "The name of the lapack library") +SET(BLAS_LIB blas CACHE STRING "The name of the blas library") +IF(HAVE_F2C) + SET(F2C_LIB f2c CACHE STRING "The name of the f2c library") +ELSE(HAVE_F2C) + SET(F77_LIB libF77 CACHE STRING "The name of the F77 library") + SET(I77_LIB libI77 CACHE STRING "The name of the I77 library") +ENDIF(HAVE_F2C) + +########################## NO CHANGES BEYOND THIS POINT ########################## + +#INCLUDE_DIRECTORIES(/usr/include) +LINK_DIRECTORIES(${LAPACKBLAS_DIR}) + +# levmar library source files +ADD_LIBRARY(levmar STATIC + lm.c Axb.c misc.c lmlec.c lmbc.c lmblec.c + lm.h misc.h compiler.h +) + +# demo program +ADD_EXECUTABLE(lmdemo lmdemo.c lm.h) +# libraries the demo depends on +IF(HAVE_F2C) + TARGET_LINK_LIBRARIES(lmdemo levmar ${LAPACK_LIB} ${BLAS_LIB} ${F2C_LIB}) +ELSE(HAVE_F2C) + TARGET_LINK_LIBRARIES(lmdemo levmar ${LAPACK_LIB} ${BLAS_LIB} ${F77_LIB} ${I77_LIB}) +ENDIF(HAVE_F2C) + +# make sure that the library is built before the demo +ADD_DEPENDENCIES(lmdemo levmar) + +#SUBDIRS(matlab) + +#ADD_TEST(levmar_tst lmdemo) diff --git a/src/external/levmar-2.3/CMakeLists_original.txt b/src/external/levmar-2.3/CMakeLists_original.txt deleted file mode 100644 index 0ba255c15..000000000 --- a/src/external/levmar-2.3/CMakeLists_original.txt +++ /dev/null @@ -1,52 +0,0 @@ -# levmar CMake file; see http://www.cmake.org and -# http://www.insightsoftwareconsortium.org/wiki/index.php/CMake_Tutorial - -PROJECT(LEVMAR) -#CMAKE_MINIMUM_REQUIRED(VERSION 1.4) - -# compiler flags -ADD_DEFINITIONS(-DLINSOLVERS_RETAIN_MEMORY) # do not free memory between linear solvers calls -#REMOVE_DEFINITIONS(-DLINSOLVERS_RETAIN_MEMORY) - -# f2c is sometimes equivalent to libF77 & libI77; in that case, set HAVE_F2C to 0 -SET(HAVE_F2C 1 CACHE BOOL "Do we have f2c or F77/I77?" ) - -# the directory where the lapack/blas/f2c libraries reside -SET(LAPACKBLAS_DIR /usr/lib CACHE PATH "Path to lapack/blas libraries") - -# actual names for the lapack/blas/f2c libraries -SET(LAPACK_LIB lapack CACHE STRING "The name of the lapack library") -SET(BLAS_LIB blas CACHE STRING "The name of the blas library") -IF(HAVE_F2C) - SET(F2C_LIB f2c CACHE STRING "The name of the f2c library") -ELSE(HAVE_F2C) - SET(F77_LIB libF77 CACHE STRING "The name of the F77 library") - SET(I77_LIB libI77 CACHE STRING "The name of the I77 library") -ENDIF(HAVE_F2C) - -########################## NO CHANGES BEYOND THIS POINT ########################## - -#INCLUDE_DIRECTORIES(/usr/include) -LINK_DIRECTORIES(${LAPACKBLAS_DIR}) - -# levmar library source files -ADD_LIBRARY(levmar STATIC - lm.c Axb.c misc.c lmlec.c lmbc.c lmblec.c - lm.h misc.h compiler.h -) - -# demo program -ADD_EXECUTABLE(lmdemo lmdemo.c lm.h) -# libraries the demo depends on -IF(HAVE_F2C) - TARGET_LINK_LIBRARIES(lmdemo levmar ${LAPACK_LIB} ${BLAS_LIB} ${F2C_LIB}) -ELSE(HAVE_F2C) - TARGET_LINK_LIBRARIES(lmdemo levmar ${LAPACK_LIB} ${BLAS_LIB} ${F77_LIB} ${I77_LIB}) -ENDIF(HAVE_F2C) - -# make sure that the library is built before the demo -ADD_DEPENDENCIES(lmdemo levmar) - -#SUBDIRS(matlab) - -#ADD_TEST(levmar_tst lmdemo) diff --git a/src/external/levmar.cmake b/src/external/levmar.cmake new file mode 100644 index 000000000..6b7074cf7 --- /dev/null +++ b/src/external/levmar.cmake @@ -0,0 +1,23 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_LEVMAR "Allow use of bundled levmar source" ON) + +if(ALLOW_BUNDLED_LEVMAR AND EXISTS "${LEVMAR_DIR}/lm.h") + message(STATUS "- levmar - using bundled source") + add_library( + external-levmar STATIC + "${LEVMAR_DIR}/compiler.h" + "${LEVMAR_DIR}/lm.h" + "${LEVMAR_DIR}/misc.h" + "${LEVMAR_DIR}/Axb.c" + "${LEVMAR_DIR}/lm.c" + "${LEVMAR_DIR}/lmbc.c" + "${LEVMAR_DIR}/lmblec.c" + "${LEVMAR_DIR}/lmlec.c" + "${LEVMAR_DIR}/misc.c") + target_include_directories(external-levmar PUBLIC ${LEVMAR_DIR}) + set_property(TARGET external-levmar PROPERTY FOLDER External) + target_link_libraries(external-levmar PRIVATE external-disable-warnings) +endif() diff --git a/src/external/lib3ds-1.3.0/CMakeLists.txt b/src/external/lib3ds.cmake similarity index 74% rename from src/external/lib3ds-1.3.0/CMakeLists.txt rename to src/external/lib3ds.cmake index 3d1fe2c99..b00167a4a 100644 --- a/src/external/lib3ds-1.3.0/CMakeLists.txt +++ b/src/external/lib3ds.cmake @@ -1,8 +1,16 @@ -if(TARGET Lib3ds::Lib3ds) +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + + +option(ALLOW_BUNDLED_LIB3DS "Allow use of bundled lib3ds source" ON) +option(ALLOW_SYSTEM_LIB3DS "Allow use of system-provided lib3ds" ON) + +if(ALLOW_SYSTEM_LIB3DS AND TARGET Lib3ds::Lib3ds) message(STATUS "- lib3ds - using system-provided library") add_library(external-lib3ds INTERFACE) target_link_libraries(external-lib3ds INTERFACE Lib3ds::Lib3ds) -else() +elseif(ALLOW_BUNDLED_LIB3DS AND EXISTS "${LIB3DS_DIR}/lib3ds/types.h") message(STATUS "- lib3ds - using bundled source") add_library( external-lib3ds STATIC @@ -47,5 +55,7 @@ else() target_include_directories(external-lib3ds SYSTEM PUBLIC "${LIB3DS_DIR}") target_compile_definitions(external-lib3ds PUBLIC LIB3DS_STATIC) set_property(TARGET external-lib3ds PROPERTY FOLDER External) - target_compile_options(external-lib3ds PRIVATE -w) + # TODO not sure what this was for, but it's almost certainly wrong on at least one compiler + # since it's not in a compiler conditional. + # target_compile_options(external-glew PRIVATE -w) endif() diff --git a/src/external/muparser_v225/CMakeLists.txt b/src/external/muparser.cmake similarity index 66% rename from src/external/muparser_v225/CMakeLists.txt rename to src/external/muparser.cmake index 7d5abba5a..03df325a2 100644 --- a/src/external/muparser_v225/CMakeLists.txt +++ b/src/external/muparser.cmake @@ -1,8 +1,15 @@ -if(TARGET muparser::muparser) +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_MUPARSER "Allow use of bundled muparser source" ON) +option(ALLOW_SYSTEM_MUPARSER "Allow use of system-provided muparser" ON) + +if(ALLOW_SYSTEM_MUPARSER AND TARGET muparser::muparser) message(STATUS "- muparser - using system-provided library") add_library(external-muparser INTERFACE) target_link_libraries(external-muparser INTERFACE muparser::muparser) -else() +elseif(ALLOW_BUNDLED_MUPARSER AND EXISTS "${MUPARSER_DIR}/src/muParser.cpp") message(STATUS "- muparser - using bundled source") add_library( external-muparser STATIC @@ -18,5 +25,4 @@ else() target_include_directories(external-muparser SYSTEM PUBLIC ${MUPARSER_DIR}/include) target_compile_definitions(external-muparser PUBLIC _UNICODE) set_property(TARGET external-muparser PROPERTY FOLDER External) - target_compile_options(external-muparser PRIVATE -w) endif() diff --git a/src/external/newuoa.cmake b/src/external/newuoa.cmake new file mode 100644 index 000000000..a68e6ffd1 --- /dev/null +++ b/src/external/newuoa.cmake @@ -0,0 +1,11 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_NEWUOA "Allow use of bundled newuoa source" ON) + +if(ALLOW_BUNDLED_NEWUOA AND EXISTS "${NEWUOA_DIR}/include/newuoa.h") + message(STATUS "- newuoa - using bundled source") + add_library(external-newuoa INTERFACE) + target_include_directories(external-newuoa INTERFACE ${NEWUOA_DIR}/include) +endif() diff --git a/src/external/OpenCTM-1.0.3/CMakeLists.txt b/src/external/openctm.cmake similarity index 71% rename from src/external/OpenCTM-1.0.3/CMakeLists.txt rename to src/external/openctm.cmake index 6cf6177d5..77f6c6d22 100644 --- a/src/external/OpenCTM-1.0.3/CMakeLists.txt +++ b/src/external/openctm.cmake @@ -1,8 +1,15 @@ -if(TARGET OpenCTM::OpenCTM) +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_OPENCTM "Allow use of bundled OpenCTM source" ON) +option(ALLOW_SYSTEM_OPENCTM "Allow use of system-provided OpenCTM" ON) + +if(ALLOW_SYSTEM_OPENCTM AND TARGET OpenCTM::OpenCTM) message(STATUS "- OpenCTM - using system-provided library") add_library(external-openctm INTERFACE) target_link_libraries(external-openctm INTERFACE OpenCTM::OpenCTM) -else() +elseif(ALLOW_BUNDLED_OPENCTM AND EXISTS "${OPENCTM_DIR}/lib/openctm.c") message(STATUS "- OpenCTM - using bundled source") # Modified liblzma included - can't build against system version add_library( @@ -26,5 +33,4 @@ else() target_compile_definitions(external-openctm PRIVATE _CRT_SECURE_NO_WARNINGS) endif() set_property(TARGET external-openctm PROPERTY FOLDER External) - target_compile_options(external-openctm PRIVATE -w) endif() diff --git a/src/external/opengr.cmake b/src/external/opengr.cmake new file mode 100644 index 000000000..3864b1db8 --- /dev/null +++ b/src/external/opengr.cmake @@ -0,0 +1,11 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_OPENGR "Allow use of bundled OpenGR source" ON) + +if(ALLOW_BUNDLED_OPENGR AND EXISTS "${OPENGR_DIR}/src/gr/algorithms/match4pcsBase.h") + message(STATUS "- OpenGR - using bundled source") + add_library(external-opengr INTERFACE) + target_include_directories(external-opengr INTERFACE ${OPENGR_DIR}/src/) +endif() diff --git a/src/external/qhull-2003.1/CMakeLists.txt b/src/external/qhull.cmake similarity index 73% rename from src/external/qhull-2003.1/CMakeLists.txt rename to src/external/qhull.cmake index 733f73532..b3045e499 100644 --- a/src/external/qhull-2003.1/CMakeLists.txt +++ b/src/external/qhull.cmake @@ -1,10 +1,17 @@ -if(TARGET Qhull::libqhull) +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_QHULL "Allow use of bundled Qhull source" ON) +option(ALLOW_SYSTEM_QHULL "Allow use of system-provided QHull" ON) + +if(ALLOW_SYSTEM_QHULL AND TARGET Qhull::libqhull) message(STATUS "- qhull - using system-provided library") add_library(external-qhull INTERFACE) target_link_libraries(external-qhull INTERFACE Qhull::libqhull) target_compile_definitions(external-qhull INTERFACE SYSTEM_QHULL) target_include_directories(external-qhull INTERFACE ${QHULL_libqhull_INCLUDE_DIR}/libqhull) -else() +elseif(ALLOW_BUNDLED_QHULL AND EXISTS "${QHULL_DIR}/src/qhull.h") message(STATUS "- qhull - using bundled source") add_library( external-qhull STATIC @@ -32,5 +39,4 @@ else() "${QHULL_DIR}/src/user.h") target_include_directories(external-qhull INTERFACE "${QHULL_DIR}/src") set_property(TARGET external-qhull PROPERTY FOLDER External) - target_compile_options(external-qhull PRIVATE -w) endif() diff --git a/src/external/ssynth.cmake b/src/external/ssynth.cmake new file mode 100644 index 000000000..2c8f8bb56 --- /dev/null +++ b/src/external/ssynth.cmake @@ -0,0 +1,108 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_SSYNTH "Allow use of bundled structure-synth source" ON) + +if(ALLOW_BUNDLED_SSYNTH AND EXISTS "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Action.h") + message(STATUS "- structure-synth - using bundled source") + # Can't use a system version because using StructureSynth as a library is not common + add_library( + external-ssynth STATIC + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Action.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/AmbiguousRule.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Builder.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ColorPool.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/CustomRule.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ExecutionStack.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveClass.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveRule.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RandomStreams.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rule.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleRef.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleSet.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/State.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Transformation.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/TransformationLoop.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/EisenParser.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Preprocessor.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Tokenizer.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Exceptions/Exception.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Box.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Dot.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/EngineWidget.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Grid.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Line.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Mesh.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Object3D.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/AtomicCounter.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RayTracer.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RenderThread.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/Sampler.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/VoxelStepper.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/RaytraceTriangle.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Sphere.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Triangle.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/ListWidgetLogger.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/Logging.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Matrix4.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Random.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Vector3.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/ColorUtils.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/MiniParser.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Persistence.h" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Version.h" + "${SSYNTH_DIR}/ssynth/ThirdPartyCode/MersenneTwister/MersenneTwister.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/OpenGLRenderer.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/Renderer.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/TemplateRenderer.h" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Action.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/AmbiguousRule.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Builder.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ColorPool.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/CustomRule.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ExecutionStack.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveClass.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveRule.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RandomStreams.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rule.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleRef.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleSet.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/State.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Transformation.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/TransformationLoop.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/EisenParser.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Preprocessor.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Tokenizer.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Box.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Dot.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Grid.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Line.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Mesh.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Object3D.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/AtomicCounter.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RenderThread.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/Sampler.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/VoxelStepper.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/RaytraceTriangle.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Triangle.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/ListWidgetLogger.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/Logging.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Matrix4.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Random.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Vector3.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/ColorUtils.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/MiniParser.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Persistence.cpp" + "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Version.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/Renderer.cpp" + "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/TemplateRenderer.cpp") + + # These sources were disabled in the .pro file: "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/EngineWidget.cpp" + # "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RayTracer.cpp" + # "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Sphere.cpp" + # "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/OpenGLRenderer.cpp" + target_include_directories(external-ssynth SYSTEM PUBLIC "${SSYNTH_DIR}/ssynth") + target_link_libraries(external-ssynth PRIVATE Qt5::Core Qt5::Xml Qt5::OpenGL OpenGL::GLU) + set_property(TARGET external-ssynth PROPERTY FOLDER External) +endif() diff --git a/src/external/structuresynth-1.5/CMakeLists.txt b/src/external/structuresynth-1.5/CMakeLists.txt deleted file mode 100644 index f18e6a028..000000000 --- a/src/external/structuresynth-1.5/CMakeLists.txt +++ /dev/null @@ -1,101 +0,0 @@ -message(STATUS "- structure-synth - using bundled source") -# Can't use a system version because using StructureSynth as a library is not common -add_library( - external-ssynth STATIC - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Action.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/AmbiguousRule.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Builder.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ColorPool.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/CustomRule.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ExecutionStack.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveClass.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveRule.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RandomStreams.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rule.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleRef.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleSet.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/State.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Transformation.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/TransformationLoop.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/EisenParser.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Preprocessor.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Tokenizer.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Exceptions/Exception.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Box.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Dot.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/EngineWidget.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Grid.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Line.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Mesh.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Object3D.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/AtomicCounter.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RayTracer.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RenderThread.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/Sampler.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/VoxelStepper.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/RaytraceTriangle.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Sphere.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Triangle.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/ListWidgetLogger.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/Logging.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Matrix4.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Random.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Vector3.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/ColorUtils.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/MiniParser.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Persistence.h" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Version.h" - "${SSYNTH_DIR}/ssynth/ThirdPartyCode/MersenneTwister/MersenneTwister.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/OpenGLRenderer.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/Renderer.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/TemplateRenderer.h" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Action.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/AmbiguousRule.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Builder.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ColorPool.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/CustomRule.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/ExecutionStack.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveClass.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/PrimitiveRule.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RandomStreams.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rule.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleRef.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/RuleSet.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/State.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Transformation.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/TransformationLoop.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/EisenParser.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Preprocessor.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Parser/Tokenizer.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Box.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Dot.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Grid.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Line.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Mesh.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Object3D.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/AtomicCounter.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RenderThread.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/Sampler.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/VoxelStepper.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/RaytraceTriangle.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Triangle.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/ListWidgetLogger.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Logging/Logging.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Matrix4.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Random.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Math/Vector3.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/ColorUtils.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/MiniParser.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Persistence.cpp" - "${SSYNTH_DIR}/ssynth/SyntopiaCore/Misc/Version.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/Renderer.cpp" - "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/TemplateRenderer.cpp") - -# These sources were disabled in the .pro file: "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/EngineWidget.cpp" -# "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Raytracer/RayTracer.cpp" -# "${SSYNTH_DIR}/ssynth/SyntopiaCore/GLEngine/Sphere.cpp" -# "${SSYNTH_DIR}/ssynth/StructureSynth/Model/Rendering/OpenGLRenderer.cpp" -target_include_directories(external-ssynth SYSTEM PUBLIC "${SSYNTH_DIR}/ssynth") -target_link_libraries(external-ssynth PRIVATE Qt5::Core Qt5::Xml Qt5::OpenGL OpenGL::GLU) -set_property(TARGET external-ssynth PROPERTY FOLDER External) -target_compile_options(external-ssynth PRIVATE -w) diff --git a/src/external/u3d.cmake b/src/external/u3d.cmake new file mode 100644 index 000000000..12b36294b --- /dev/null +++ b/src/external/u3d.cmake @@ -0,0 +1,10 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + +option(ALLOW_BUNDLED_U3D "Allow use of bundled u3d source" ON) + +if(ALLOW_BUNDLED_U3D AND EXISTS "${U3D_DIR}/CMakeLists.txt") + message(STATUS "- u3d - using bundled source") + add_subdirectory(${U3D_DIR}) +endif() diff --git a/src/external/u3d/CMakeLists.txt b/src/external/u3d/CMakeLists.txt index 7182dd214..be0197c47 100644 --- a/src/external/u3d/CMakeLists.txt +++ b/src/external/u3d/CMakeLists.txt @@ -1,4 +1,3 @@ -message(STATUS "- u3d - using bundled source") IF(APPLE) # Tiger build diff --git a/src/external_common.cmake b/src/external_common.cmake index 70ffc22de..346f3ff3b 100644 --- a/src/external_common.cmake +++ b/src/external_common.cmake @@ -1,17 +1,20 @@ +# Copyright 2019, 2020, Collabora, Ltd. +# Copyright 2019, 2020, Visual Computing Lab, ISTI - Italian National Research Council +# SPDX-License-Identifier: BSL-1.0 + # GLEW - required set(GLEW_DIR ${EXTERNAL_DIR}/glew-2.1.0) -add_subdirectory(${GLEW_DIR}) +include(${EXTERNAL_DIR}/glew.cmake) -# VCGLIb -- required +# VCGLib -- required if(NOT VCGDIR) get_filename_component(VCGDIR "${CMAKE_CURRENT_LIST_DIR}/vcglib" ABSOLUTE) if(NOT EXISTS ${VCGDIR}) set(VCGDIR NOTFOUND) endif() endif() -set(VCGDIR - "${VCGDIR}") +set(VCGDIR "${VCGDIR}") if(NOT VCGDIR) message(FATAL_ERROR "VCGLib not found. Please clone recursively the MeshLab repo.") @@ -21,11 +24,5 @@ include_directories(${VCGDIR} ${CMAKE_CURRENT_SOURCE_DIR}) # Eigen3 - required set(EIGEN_DIR ${VCGDIR}/eigenlib) -if(EIGEN3_INCLUDE_DIR) - message(STATUS "- Eigen - using system-provided library") - set(EIGEN_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR}) -else() - message(STATUS "- Eigen - using bundled source") - set(EIGEN_INCLUDE_DIRS ${EIGEN_DIR}) -endif() +include(${EXTERNAL_DIR}/eigen.cmake) include_directories(${EIGEN_INCLUDE_DIRS})