# Copyright 2022 The Draco Authors # # Licensed under the Apache License, Version 2.0 (the "License"); you may not # use this file except in compliance with the License. You may obtain a copy of # the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations under # the License. if(DRACO_CMAKE_DRACO_DEPENDENCIES_CMAKE) return() endif() set(DRACO_CMAKE_DRACO_DEPENDENCIES_CMAKE 1) include("${draco_root}/cmake/draco_variables.cmake") # Each variable holds a user specified custom path to a local copy of the # sources that belong to each project that Draco depends on. When paths are # empty the build will be generated pointing to the Draco git submodules. # Otherwise the paths specified by the user will be used in the build # configuration. # Path to the Eigen. The path must contain the Eigen directory. set(DRACO_EIGEN_PATH) draco_track_configuration_variable(DRACO_EIGEN_PATH) # Path to the gulrak/filesystem installation. The path specified must contain # the ghc subdirectory that houses the filesystem includes. set(DRACO_FILESYSTEM_PATH) draco_track_configuration_variable(DRACO_FILESYSTEM_PATH) # Path to the googletest installation. The path must be to the root of the # Googletest project directory. set(DRACO_GOOGLETEST_PATH) draco_track_configuration_variable(DRACO_GOOGLETEST_PATH) # Path to the syoyo/tinygltf installation. The path must be to the root of the # project directory. set(DRACO_TINYGLTF_PATH) draco_track_configuration_variable(DRACO_TINYGLTF_PATH) # Utility macro for killing the build due to a missing submodule directory. macro(draco_die_missing_submodule dir) message(FATAL_ERROR "${dir} missing, run git submodule update --init") endmacro() # Determines the Eigen location and updates the build configuration accordingly. macro(draco_setup_eigen) if(DRACO_EIGEN_PATH) set(eigen_path "${DRACO_EIGEN_PATH}") if(NOT IS_DIRECTORY "${eigen_path}") message(FATAL_ERROR "DRACO_EIGEN_PATH does not exist.") endif() else() set(eigen_path "${draco_root}/third_party/eigen") if(NOT IS_DIRECTORY "${eigen_path}") draco_die_missing_submodule("${eigen_path}") endif() endif() set(eigen_include_path "${eigen_path}/Eigen") if(NOT EXISTS "${eigen_path}/Eigen") message(FATAL_ERROR "The eigen path does not contain an Eigen directory.") endif() list(APPEND draco_include_paths "${eigen_path}") endmacro() # Determines the gulrak/filesystem location and updates the build configuration # accordingly. macro(draco_setup_filesystem) if(DRACO_FILESYSTEM_PATH) set(fs_path "${DRACO_FILESYSTEM_PATH}") if(NOT IS_DIRECTORY "${fs_path}") message(FATAL_ERROR "DRACO_FILESYSTEM_PATH does not exist.") endif() else() set(fs_path "${draco_root}/third_party/filesystem/include") if(NOT IS_DIRECTORY "${fs_path}") draco_die_missing_submodule("${fs_path}") endif() endif() list(APPEND draco_include_paths "${fs_path}") endmacro() # Determines the Googletest location and sets up include and source list vars # for the draco_tests build. macro(draco_setup_googletest) if(DRACO_GOOGLETEST_PATH) set(gtest_path "${DRACO_GOOGLETEST_PATH}") if(NOT IS_DIRECTORY "${gtest_path}") message(FATAL_ERROR "DRACO_GOOGLETEST_PATH does not exist.") endif() else() set(gtest_path "${draco_root}/third_party/googletest") endif() list(APPEND draco_test_include_paths ${draco_include_paths} "${gtest_path}/include" "${gtest_path}/googlemock" "${gtest_path}/googletest/include" "${gtest_path}/googletest") list(APPEND draco_gtest_all "${gtest_path}/googletest/src/gtest-all.cc") list(APPEND draco_gtest_main "${gtest_path}/googletest/src/gtest_main.cc") endmacro() # Determines the location of TinyGLTF and updates the build configuration # accordingly. macro(draco_setup_tinygltf) if(DRACO_TINYGLTF_PATH) set(tinygltf_path "${DRACO_TINYGLTF_PATH}") if(NOT IS_DIRECTORY "${tinygltf_path}") message(FATAL_ERROR "DRACO_TINYGLTF_PATH does not exist.") endif() else() set(tinygltf_path "${draco_root}/third_party/tinygltf") if(NOT IS_DIRECTORY "${tinygltf_path}") draco_die_missing_submodule("${tinygltf_path}") endif() endif() list(APPEND draco_include_paths "${tinygltf_path}") endmacro()