new stuff
This commit is contained in:
parent
8998bc3936
commit
64c8492e5c
6907 changed files with 3401899 additions and 0 deletions
3
assimp/contrib/draco/cmake/draco-config.cmake.template
Normal file
3
assimp/contrib/draco/cmake/draco-config.cmake.template
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
@PACKAGE_INIT@
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/draco-targets.cmake")
|
||||
6
assimp/contrib/draco/cmake/draco.pc.template
Normal file
6
assimp/contrib/draco/cmake/draco.pc.template
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
Name: @PROJECT_NAME@
|
||||
Description: Draco geometry de(com)pression library.
|
||||
Version: @DRACO_VERSION@
|
||||
Cflags: -I@includes_path@
|
||||
Libs: -L@libs_path@ -ldraco
|
||||
Libs.private: @CMAKE_THREAD_LIBS_INIT@
|
||||
157
assimp/contrib/draco/cmake/draco_build_definitions.cmake
Normal file
157
assimp/contrib/draco/cmake/draco_build_definitions.cmake
Normal file
|
|
@ -0,0 +1,157 @@
|
|||
# Copyright 2021 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_BUILD_DEFINITIONS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_BUILD_DEFINITIONS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_BUILD_DEFINITIONS_CMAKE_ 1)
|
||||
|
||||
# Utility for controlling the main draco library dependency. This changes in
|
||||
# shared builds, and when an optional target requires a shared library build.
|
||||
macro(set_draco_target)
|
||||
if(MSVC)
|
||||
set(draco_dependency draco)
|
||||
set(draco_plugin_dependency ${draco_dependency})
|
||||
else()
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(draco_dependency draco_shared)
|
||||
else()
|
||||
set(draco_dependency draco_static)
|
||||
endif()
|
||||
set(draco_plugin_dependency draco_static)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Configures flags and sets build system globals.
|
||||
macro(draco_set_build_definitions)
|
||||
string(TOLOWER "${CMAKE_BUILD_TYPE}" build_type_lowercase)
|
||||
|
||||
if(build_type_lowercase MATCHES "rel" AND DRACO_FAST)
|
||||
if(MSVC)
|
||||
list(APPEND draco_msvc_cxx_flags "/Ox")
|
||||
else()
|
||||
list(APPEND draco_base_cxx_flags "-O3")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
draco_load_version_info()
|
||||
|
||||
# Library version info. See the libtool docs for updating the values:
|
||||
# https://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
|
||||
#
|
||||
# c=<current>, r=<revision>, a=<age>
|
||||
#
|
||||
# libtool generates a .so file as .so.[c-a].a.r, while -version-info c:r:a is
|
||||
# passed to libtool.
|
||||
#
|
||||
# We set DRACO_SOVERSION = [c-a].a.r
|
||||
set(LT_CURRENT 9)
|
||||
set(LT_REVISION 0)
|
||||
set(LT_AGE 0)
|
||||
math(EXPR DRACO_SOVERSION_MAJOR "${LT_CURRENT} - ${LT_AGE}")
|
||||
set(DRACO_SOVERSION "${DRACO_SOVERSION_MAJOR}.${LT_AGE}.${LT_REVISION}")
|
||||
unset(LT_CURRENT)
|
||||
unset(LT_REVISION)
|
||||
unset(LT_AGE)
|
||||
|
||||
list(APPEND draco_include_paths "${draco_root}" "${draco_root}/src"
|
||||
"${draco_build}")
|
||||
|
||||
if(DRACO_TRANSCODER_SUPPORTED)
|
||||
draco_setup_eigen()
|
||||
draco_setup_filesystem()
|
||||
draco_setup_tinygltf()
|
||||
|
||||
|
||||
endif()
|
||||
|
||||
|
||||
list(APPEND draco_defines "DRACO_CMAKE=1"
|
||||
"DRACO_FLAGS_SRCDIR=\"${draco_root}\""
|
||||
"DRACO_FLAGS_TMPDIR=\"/tmp\"")
|
||||
|
||||
if(MSVC OR WIN32)
|
||||
list(APPEND draco_defines "_CRT_SECURE_NO_DEPRECATE=1" "NOMINMAX=1")
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
if(${CMAKE_SIZEOF_VOID_P} EQUAL 8)
|
||||
# Ensure 64-bit platforms can support large files.
|
||||
list(APPEND draco_defines "_LARGEFILE_SOURCE" "_FILE_OFFSET_BITS=64")
|
||||
endif()
|
||||
|
||||
if(NOT DRACO_DEBUG_COMPILER_WARNINGS)
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
list(APPEND draco_clang_cxx_flags
|
||||
"-Wno-implicit-const-int-float-conversion")
|
||||
else()
|
||||
list(APPEND draco_base_cxx_flags "-Wno-deprecated-declarations")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(ANDROID)
|
||||
if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a")
|
||||
set(CMAKE_ANDROID_ARM_MODE ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set_draco_target()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "6")
|
||||
# Quiet warnings in copy-list-initialization where {} elision has always
|
||||
# been allowed.
|
||||
list(APPEND draco_clang_cxx_flags "-Wno-missing-braces")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
||||
if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL "7")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7")
|
||||
# Quiet gcc 6 vs 7 abi warnings:
|
||||
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77728
|
||||
list(APPEND draco_base_cxx_flags "-Wno-psabi")
|
||||
list(APPEND ABSL_GCC_FLAGS "-Wno-psabi")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Source file names ending in these suffixes will have the appropriate
|
||||
# compiler flags added to their compile commands to enable intrinsics.
|
||||
set(draco_neon_source_file_suffix "neon.cc")
|
||||
set(draco_sse4_source_file_suffix "sse4.cc")
|
||||
|
||||
if((${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" AND ${CMAKE_CXX_COMPILER_VERSION}
|
||||
VERSION_LESS 5)
|
||||
OR (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang"
|
||||
AND ${CMAKE_CXX_COMPILER_VERSION} VERSION_LESS 4))
|
||||
message(
|
||||
WARNING "GNU/GCC < v5 or Clang/LLVM < v4, ENABLING COMPATIBILITY MODE.")
|
||||
draco_enable_feature(FEATURE "DRACO_OLD_GCC")
|
||||
endif()
|
||||
|
||||
if(EMSCRIPTEN)
|
||||
draco_check_emscripten_environment()
|
||||
draco_get_required_emscripten_flags(
|
||||
FLAG_LIST_VAR_COMPILER draco_base_cxx_flags
|
||||
FLAG_LIST_VAR_LINKER draco_base_exe_linker_flags)
|
||||
endif()
|
||||
|
||||
draco_configure_sanitizer()
|
||||
endmacro()
|
||||
42
assimp/contrib/draco/cmake/draco_cpu_detection.cmake
Normal file
42
assimp/contrib/draco/cmake/draco_cpu_detection.cmake
Normal file
|
|
@ -0,0 +1,42 @@
|
|||
# Copyright 2021 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_CPU_DETECTION_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_CPU_DETECTION_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_CPU_DETECTION_CMAKE_ 1)
|
||||
|
||||
# Detect optimizations available for the current target CPU.
|
||||
macro(draco_optimization_detect)
|
||||
if(DRACO_ENABLE_OPTIMIZATIONS)
|
||||
string(TOLOWER "${CMAKE_SYSTEM_PROCESSOR}" cpu_lowercase)
|
||||
if(cpu_lowercase MATCHES "^arm|^aarch64")
|
||||
set(draco_have_neon ON)
|
||||
elseif(cpu_lowercase MATCHES "^x86|amd64")
|
||||
set(draco_have_sse4 ON)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(draco_have_neon AND DRACO_ENABLE_NEON)
|
||||
list(APPEND draco_defines "DRACO_ENABLE_NEON=1")
|
||||
else()
|
||||
list(APPEND draco_defines "DRACO_ENABLE_NEON=0")
|
||||
endif()
|
||||
|
||||
if(draco_have_sse4 AND DRACO_ENABLE_SSE4_1)
|
||||
list(APPEND draco_defines "DRACO_ENABLE_SSE4_1=1")
|
||||
else()
|
||||
list(APPEND draco_defines "DRACO_ENABLE_SSE4_1=0")
|
||||
endif()
|
||||
endmacro()
|
||||
136
assimp/contrib/draco/cmake/draco_dependencies.cmake
Normal file
136
assimp/contrib/draco/cmake/draco_dependencies.cmake
Normal file
|
|
@ -0,0 +1,136 @@
|
|||
# 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()
|
||||
232
assimp/contrib/draco/cmake/draco_emscripten.cmake
Normal file
232
assimp/contrib/draco/cmake/draco_emscripten.cmake
Normal file
|
|
@ -0,0 +1,232 @@
|
|||
# Copyright 2021 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_EMSCRIPTEN_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_EMSCRIPTEN_CMAKE_
|
||||
|
||||
# Checks environment for Emscripten prerequisites.
|
||||
macro(draco_check_emscripten_environment)
|
||||
if(NOT PYTHONINTERP_FOUND)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Python required for Emscripten builds, but cmake cannot find it.")
|
||||
endif()
|
||||
if(NOT EXISTS "$ENV{EMSCRIPTEN}")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"The EMSCRIPTEN environment variable must be set. See README.md.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Obtains the required Emscripten flags for Draco targets.
|
||||
macro(draco_get_required_emscripten_flags)
|
||||
set(em_FLAG_LIST_VAR_COMPILER)
|
||||
set(em_FLAG_LIST_VAR_LINKER)
|
||||
set(em_flags)
|
||||
set(em_single_arg_opts FLAG_LIST_VAR_COMPILER FLAG_LIST_VAR_LINKER)
|
||||
set(em_multi_arg_opts)
|
||||
cmake_parse_arguments(em "${em_flags}" "${em_single_arg_opts}"
|
||||
"${em_multi_arg_opts}" ${ARGN})
|
||||
if(NOT em_FLAG_LIST_VAR_COMPILER)
|
||||
message(
|
||||
FATAL
|
||||
"draco_get_required_emscripten_flags: FLAG_LIST_VAR_COMPILER required")
|
||||
endif()
|
||||
|
||||
if(NOT em_FLAG_LIST_VAR_LINKER)
|
||||
message(
|
||||
FATAL
|
||||
"draco_get_required_emscripten_flags: FLAG_LIST_VAR_LINKER required")
|
||||
endif()
|
||||
|
||||
if(DRACO_JS_GLUE)
|
||||
unset(required_flags)
|
||||
# TODO(tomfinegan): Revisit splitting of compile/link flags for Emscripten,
|
||||
# and drop -Wno-unused-command-line-argument. Emscripten complains about
|
||||
# what are supposedly link-only flags sent with compile commands, but then
|
||||
# proceeds to produce broken code if the warnings are heeded.
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER}
|
||||
"-Wno-unused-command-line-argument")
|
||||
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-Wno-almost-asm")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "--memory-init-file" "0")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-fno-omit-frame-pointer")
|
||||
|
||||
# According to Emscripten the following flags are linker only, but sending
|
||||
# these flags (en masse) to only the linker results in a broken Emscripten
|
||||
# build with an empty DracoDecoderModule.
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sALLOW_MEMORY_GROWTH=1")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sMODULARIZE=1")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sFILESYSTEM=0")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER}
|
||||
"-sEXPORTED_FUNCTIONS=[\"_free\",\"_malloc\"]")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sPRECISE_F32=1")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sNODEJS_CATCH_EXIT=0")
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sNODEJS_CATCH_REJECTION=0")
|
||||
|
||||
if(DRACO_FAST)
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "--llvm-lto" "1")
|
||||
endif()
|
||||
|
||||
# The WASM flag is reported as linker only.
|
||||
if(DRACO_WASM)
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sWASM=1")
|
||||
else()
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sWASM=0")
|
||||
endif()
|
||||
|
||||
# The LEGACY_VM_SUPPORT flag is reported as linker only.
|
||||
if(DRACO_IE_COMPATIBLE)
|
||||
list(APPEND ${em_FLAG_LIST_VAR_COMPILER} "-sLEGACY_VM_SUPPORT=1")
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Macro for generating C++ glue code from IDL for Emscripten targets. Executes
|
||||
# python to generate the C++ binding, and establishes dendency: $OUTPUT_PATH.cpp
|
||||
# on $INPUT_IDL.
|
||||
macro(draco_generate_emscripten_glue)
|
||||
set(glue_flags)
|
||||
set(glue_single_arg_opts INPUT_IDL OUTPUT_PATH)
|
||||
set(glue_multi_arg_opts)
|
||||
cmake_parse_arguments(glue "${glue_flags}" "${glue_single_arg_opts}"
|
||||
"${glue_multi_arg_opts}" ${ARGN})
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message(
|
||||
"--------- draco_generate_emscripten_glue -----------\n"
|
||||
"glue_INPUT_IDL=${glue_INPUT_IDL}\n"
|
||||
"glue_OUTPUT_PATH=${glue_OUTPUT_PATH}\n"
|
||||
"----------------------------------------------------\n")
|
||||
endif()
|
||||
|
||||
if(NOT glue_INPUT_IDL OR NOT glue_OUTPUT_PATH)
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"draco_generate_emscripten_glue: INPUT_IDL and OUTPUT_PATH required.")
|
||||
endif()
|
||||
|
||||
# Generate the glue source.
|
||||
execute_process(
|
||||
COMMAND ${PYTHON_EXECUTABLE} $ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${glue_INPUT_IDL} ${glue_OUTPUT_PATH})
|
||||
if(NOT EXISTS "${glue_OUTPUT_PATH}.cpp")
|
||||
message(FATAL_ERROR "JS glue generation failed for ${glue_INPUT_IDL}.")
|
||||
endif()
|
||||
|
||||
# Create a dependency so that it regenerated on edits.
|
||||
add_custom_command(
|
||||
OUTPUT "${glue_OUTPUT_PATH}.cpp"
|
||||
COMMAND ${PYTHON_EXECUTABLE} $ENV{EMSCRIPTEN}/tools/webidl_binder.py
|
||||
${glue_INPUT_IDL} ${glue_OUTPUT_PATH}
|
||||
DEPENDS ${draco_js_dec_idl}
|
||||
COMMENT "Generating ${glue_OUTPUT_PATH}.cpp."
|
||||
WORKING_DIRECTORY ${draco_build}
|
||||
VERBATIM)
|
||||
endmacro()
|
||||
|
||||
# Wrapper for draco_add_executable() that handles the extra work necessary for
|
||||
# emscripten targets when generating JS glue:
|
||||
#
|
||||
# ~~~
|
||||
# - Set source level dependency on the C++ binding.
|
||||
# - Pre/Post link emscripten magic.
|
||||
#
|
||||
# Required args:
|
||||
# - GLUE_PATH: Base path for glue file. Used to generate .cpp and .js files.
|
||||
# - PRE_LINK_JS_SOURCES: em_link_pre_js() source files.
|
||||
# - POST_LINK_JS_SOURCES: em_link_post_js() source files.
|
||||
# Optional args:
|
||||
# - FEATURES:
|
||||
# ~~~
|
||||
macro(draco_add_emscripten_executable)
|
||||
unset(emexe_NAME)
|
||||
unset(emexe_FEATURES)
|
||||
unset(emexe_SOURCES)
|
||||
unset(emexe_DEFINES)
|
||||
unset(emexe_INCLUDES)
|
||||
unset(emexe_LINK_FLAGS)
|
||||
set(optional_args)
|
||||
set(single_value_args NAME GLUE_PATH)
|
||||
set(multi_value_args
|
||||
SOURCES
|
||||
DEFINES
|
||||
FEATURES
|
||||
INCLUDES
|
||||
LINK_FLAGS
|
||||
PRE_LINK_JS_SOURCES
|
||||
POST_LINK_JS_SOURCES)
|
||||
|
||||
cmake_parse_arguments(emexe "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT
|
||||
(emexe_GLUE_PATH
|
||||
AND emexe_POST_LINK_JS_SOURCES
|
||||
AND emexe_PRE_LINK_JS_SOURCES))
|
||||
message(FATAL
|
||||
"draco_add_emscripten_executable: GLUE_PATH PRE_LINK_JS_SOURCES "
|
||||
"POST_LINK_JS_SOURCES args required.")
|
||||
endif()
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message(
|
||||
"--------- draco_add_emscripten_executable ---------\n"
|
||||
"emexe_NAME=${emexe_NAME}\n"
|
||||
"emexe_SOURCES=${emexe_SOURCES}\n"
|
||||
"emexe_DEFINES=${emexe_DEFINES}\n"
|
||||
"emexe_INCLUDES=${emexe_INCLUDES}\n"
|
||||
"emexe_LINK_FLAGS=${emexe_LINK_FLAGS}\n"
|
||||
"emexe_GLUE_PATH=${emexe_GLUE_PATH}\n"
|
||||
"emexe_FEATURES=${emexe_FEATURES}\n"
|
||||
"emexe_PRE_LINK_JS_SOURCES=${emexe_PRE_LINK_JS_SOURCES}\n"
|
||||
"emexe_POST_LINK_JS_SOURCES=${emexe_POST_LINK_JS_SOURCES}\n"
|
||||
"----------------------------------------------------\n")
|
||||
endif()
|
||||
|
||||
# The Emscripten linker needs the C++ flags in addition to whatever has been
|
||||
# passed in with the target.
|
||||
list(APPEND emexe_LINK_FLAGS ${DRACO_CXX_FLAGS})
|
||||
|
||||
if(DRACO_GLTF_BITSTREAM)
|
||||
# Add "_gltf" suffix to target output name.
|
||||
draco_add_executable(
|
||||
NAME ${emexe_NAME}
|
||||
OUTPUT_NAME ${emexe_NAME}_gltf
|
||||
SOURCES ${emexe_SOURCES}
|
||||
DEFINES ${emexe_DEFINES}
|
||||
INCLUDES ${emexe_INCLUDES}
|
||||
LINK_FLAGS ${emexe_LINK_FLAGS})
|
||||
else()
|
||||
draco_add_executable(
|
||||
NAME ${emexe_NAME}
|
||||
SOURCES ${emexe_SOURCES}
|
||||
DEFINES ${emexe_DEFINES}
|
||||
INCLUDES ${emexe_INCLUDES}
|
||||
LINK_FLAGS ${emexe_LINK_FLAGS})
|
||||
endif()
|
||||
|
||||
foreach(feature ${emexe_FEATURES})
|
||||
draco_enable_feature(FEATURE ${feature} TARGETS ${emexe_NAME})
|
||||
endforeach()
|
||||
|
||||
set_property(
|
||||
SOURCE ${emexe_SOURCES}
|
||||
APPEND
|
||||
PROPERTY OBJECT_DEPENDS "${emexe_GLUE_PATH}.cpp")
|
||||
em_link_pre_js(${emexe_NAME} ${emexe_PRE_LINK_JS_SOURCES})
|
||||
em_link_post_js(${emexe_NAME} "${emexe_GLUE_PATH}.js"
|
||||
${emexe_POST_LINK_JS_SOURCES})
|
||||
endmacro()
|
||||
292
assimp/contrib/draco/cmake/draco_flags.cmake
Normal file
292
assimp/contrib/draco/cmake/draco_flags.cmake
Normal file
|
|
@ -0,0 +1,292 @@
|
|||
# Copyright 2021 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_FLAGS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_FLAGS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_FLAGS_CMAKE_ 1)
|
||||
|
||||
include(CheckCXXCompilerFlag)
|
||||
include(CheckCXXSourceCompiles)
|
||||
|
||||
# Adds compiler flags specified by FLAGS to the sources specified by SOURCES:
|
||||
#
|
||||
# draco_set_compiler_flags_for_sources(SOURCES <sources> FLAGS <flags>)
|
||||
macro(draco_set_compiler_flags_for_sources)
|
||||
unset(compiler_SOURCES)
|
||||
unset(compiler_FLAGS)
|
||||
unset(optional_args)
|
||||
unset(single_value_args)
|
||||
set(multi_value_args SOURCES FLAGS)
|
||||
cmake_parse_arguments(compiler "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT (compiler_SOURCES AND compiler_FLAGS))
|
||||
draco_die("draco_set_compiler_flags_for_sources: SOURCES and "
|
||||
"FLAGS required.")
|
||||
endif()
|
||||
|
||||
set_source_files_properties(${compiler_SOURCES} PROPERTIES COMPILE_FLAGS
|
||||
${compiler_FLAGS})
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
foreach(source ${compiler_SOURCES})
|
||||
foreach(flag ${compiler_FLAGS})
|
||||
message("draco_set_compiler_flags_for_sources: source:${source} "
|
||||
"flag:${flag}")
|
||||
endforeach()
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Tests compiler flags stored in list(s) specified by FLAG_LIST_VAR_NAMES, adds
|
||||
# flags to $DRACO_CXX_FLAGS when tests pass. Terminates configuration if
|
||||
# FLAG_REQUIRED is specified and any flag check fails.
|
||||
#
|
||||
# ~~~
|
||||
# draco_test_cxx_flag(<FLAG_LIST_VAR_NAMES <flag list variable(s)>>
|
||||
# [FLAG_REQUIRED])
|
||||
# ~~~
|
||||
macro(draco_test_cxx_flag)
|
||||
unset(cxx_test_FLAG_LIST_VAR_NAMES)
|
||||
unset(cxx_test_FLAG_REQUIRED)
|
||||
unset(single_value_args)
|
||||
set(optional_args FLAG_REQUIRED)
|
||||
set(multi_value_args FLAG_LIST_VAR_NAMES)
|
||||
cmake_parse_arguments(cxx_test "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT cxx_test_FLAG_LIST_VAR_NAMES)
|
||||
draco_die("draco_test_cxx_flag: FLAG_LIST_VAR_NAMES required")
|
||||
endif()
|
||||
|
||||
unset(cxx_flags)
|
||||
foreach(list_var ${cxx_test_FLAG_LIST_VAR_NAMES})
|
||||
if(DRACO_VERBOSE)
|
||||
message("draco_test_cxx_flag: adding ${list_var} to cxx_flags")
|
||||
endif()
|
||||
list(APPEND cxx_flags ${${list_var}})
|
||||
endforeach()
|
||||
|
||||
if(DRACO_VERBOSE)
|
||||
message("CXX test: all flags: ${cxx_flags}")
|
||||
endif()
|
||||
|
||||
unset(all_cxx_flags)
|
||||
list(APPEND all_cxx_flags ${DRACO_CXX_FLAGS} ${cxx_flags})
|
||||
|
||||
# Turn off output from check_cxx_source_compiles. Print status directly
|
||||
# instead since the logging messages from check_cxx_source_compiles can be
|
||||
# quite confusing.
|
||||
set(CMAKE_REQUIRED_QUIET TRUE)
|
||||
|
||||
# Run the actual compile test.
|
||||
unset(draco_all_cxx_flags_pass CACHE)
|
||||
message("--- Running combined CXX flags test, flags: ${all_cxx_flags}")
|
||||
|
||||
# check_cxx_compiler_flag() requires that the flags are a string. When flags
|
||||
# are passed as a list it will remove the list separators, and attempt to run
|
||||
# a compile command using list entries concatenated together as a single
|
||||
# argument. Avoid the problem by forcing the argument to be a string.
|
||||
draco_set_and_stringify(SOURCE_VARS all_cxx_flags DEST all_cxx_flags_string)
|
||||
check_cxx_compiler_flag("${all_cxx_flags_string}" draco_all_cxx_flags_pass)
|
||||
|
||||
if(cxx_test_FLAG_REQUIRED AND NOT draco_all_cxx_flags_pass)
|
||||
draco_die("Flag test failed for required flag(s): "
|
||||
"${all_cxx_flags} and FLAG_REQUIRED specified.")
|
||||
endif()
|
||||
|
||||
if(draco_all_cxx_flags_pass)
|
||||
# Test passed: update the global flag list used by the draco target creation
|
||||
# wrappers.
|
||||
set(DRACO_CXX_FLAGS ${cxx_flags})
|
||||
list(REMOVE_DUPLICATES DRACO_CXX_FLAGS)
|
||||
|
||||
if(DRACO_VERBOSE)
|
||||
message("DRACO_CXX_FLAGS=${DRACO_CXX_FLAGS}")
|
||||
endif()
|
||||
|
||||
message("--- Passed combined CXX flags test")
|
||||
else()
|
||||
message("--- Failed combined CXX flags test, testing flags individually.")
|
||||
|
||||
if(cxx_flags)
|
||||
message("--- Testing flags from $cxx_flags: " "${cxx_flags}")
|
||||
foreach(cxx_flag ${cxx_flags})
|
||||
# Since 3.17.0 check_cxx_compiler_flag() sets a normal variable at
|
||||
# parent scope while check_cxx_source_compiles() continues to set an
|
||||
# internal cache variable, so we unset both to avoid the failure /
|
||||
# success state persisting between checks. This has been fixed in newer
|
||||
# CMake releases, but 3.17 is pretty common: we will need this to avoid
|
||||
# weird build breakages while the fix propagates.
|
||||
unset(cxx_flag_test_passed)
|
||||
unset(cxx_flag_test_passed CACHE)
|
||||
message("--- Testing flag: ${cxx_flag}")
|
||||
check_cxx_compiler_flag("${cxx_flag}" cxx_flag_test_passed)
|
||||
|
||||
if(cxx_flag_test_passed)
|
||||
message("--- Passed test for ${cxx_flag}")
|
||||
else()
|
||||
list(REMOVE_ITEM cxx_flags ${cxx_flag})
|
||||
message("--- Failed test for ${cxx_flag}, flag removed.")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
set(DRACO_CXX_FLAGS ${cxx_flags})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DRACO_CXX_FLAGS)
|
||||
list(REMOVE_DUPLICATES DRACO_CXX_FLAGS)
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Tests executable linker flags stored in list specified by FLAG_LIST_VAR_NAME,
|
||||
# adds flags to $DRACO_EXE_LINKER_FLAGS when test passes. Terminates
|
||||
# configuration when flag check fails. draco_set_cxx_flags() must be called
|
||||
# before calling this macro because it assumes $DRACO_CXX_FLAGS contains only
|
||||
# valid CXX flags.
|
||||
#
|
||||
# draco_test_exe_linker_flag(<FLAG_LIST_VAR_NAME <flag list variable)>)
|
||||
macro(draco_test_exe_linker_flag)
|
||||
unset(link_FLAG_LIST_VAR_NAME)
|
||||
unset(optional_args)
|
||||
unset(multi_value_args)
|
||||
set(single_value_args FLAG_LIST_VAR_NAME)
|
||||
cmake_parse_arguments(link "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT link_FLAG_LIST_VAR_NAME)
|
||||
draco_die("draco_test_link_flag: FLAG_LIST_VAR_NAME required")
|
||||
endif()
|
||||
|
||||
draco_set_and_stringify(DEST linker_flags SOURCE_VARS
|
||||
${link_FLAG_LIST_VAR_NAME})
|
||||
|
||||
if(DRACO_VERBOSE)
|
||||
message("EXE LINKER test: all flags: ${linker_flags}")
|
||||
endif()
|
||||
|
||||
# Tests of $DRACO_CXX_FLAGS have already passed. Include them with the linker
|
||||
# test.
|
||||
draco_set_and_stringify(DEST CMAKE_REQUIRED_FLAGS SOURCE_VARS DRACO_CXX_FLAGS)
|
||||
|
||||
# Cache the global exe linker flags.
|
||||
if(CMAKE_EXE_LINKER_FLAGS)
|
||||
set(cached_CMAKE_EXE_LINKER_FLAGS ${CMAKE_EXE_LINKER_FLAGS})
|
||||
draco_set_and_stringify(DEST CMAKE_EXE_LINKER_FLAGS SOURCE ${linker_flags})
|
||||
endif()
|
||||
|
||||
draco_set_and_stringify(DEST CMAKE_EXE_LINKER_FLAGS SOURCE ${linker_flags}
|
||||
${CMAKE_EXE_LINKER_FLAGS})
|
||||
|
||||
# Turn off output from check_cxx_source_compiles. Print status directly
|
||||
# instead since the logging messages from check_cxx_source_compiles can be
|
||||
# quite confusing.
|
||||
set(CMAKE_REQUIRED_QUIET TRUE)
|
||||
|
||||
message("--- Running EXE LINKER test for flags: ${linker_flags}")
|
||||
|
||||
unset(linker_flag_test_passed CACHE)
|
||||
set(draco_cxx_main "\nint main() { return 0; }")
|
||||
check_cxx_source_compiles("${draco_cxx_main}" linker_flag_test_passed)
|
||||
|
||||
if(NOT linker_flag_test_passed)
|
||||
draco_die("EXE LINKER test failed.")
|
||||
endif()
|
||||
|
||||
message("--- Passed EXE LINKER flag test.")
|
||||
|
||||
# Restore cached global exe linker flags.
|
||||
if(cached_CMAKE_EXE_LINKER_FLAGS)
|
||||
set(CMAKE_EXE_LINKER_FLAGS ${cached_CMAKE_EXE_LINKER_FLAGS})
|
||||
else()
|
||||
unset(CMAKE_EXE_LINKER_FLAGS)
|
||||
endif()
|
||||
|
||||
list(APPEND DRACO_EXE_LINKER_FLAGS ${${link_FLAG_LIST_VAR_NAME}})
|
||||
list(REMOVE_DUPLICATES DRACO_EXE_LINKER_FLAGS)
|
||||
endmacro()
|
||||
|
||||
# Runs the draco compiler tests. This macro builds up the list of list var(s)
|
||||
# that is passed to draco_test_cxx_flag().
|
||||
#
|
||||
# Note: draco_set_build_definitions() must be called before this macro.
|
||||
macro(draco_set_cxx_flags)
|
||||
unset(cxx_flag_lists)
|
||||
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
||||
list(APPEND cxx_flag_lists draco_base_cxx_flags)
|
||||
endif()
|
||||
|
||||
# Append clang flags after the base set to allow -Wno* overrides to take
|
||||
# effect. Some of the base flags may enable a large set of warnings, e.g.,
|
||||
# -Wall.
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
list(APPEND cxx_flag_lists draco_clang_cxx_flags)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
list(APPEND cxx_flag_lists draco_msvc_cxx_flags)
|
||||
endif()
|
||||
|
||||
draco_set_and_stringify(DEST cxx_flags SOURCE_VARS ${cxx_flag_lists})
|
||||
if(DRACO_VERBOSE)
|
||||
message("draco_set_cxx_flags: internal CXX flags: ${cxx_flags}")
|
||||
endif()
|
||||
|
||||
if(DRACO_CXX_FLAGS)
|
||||
list(APPEND cxx_flag_lists DRACO_CXX_FLAGS)
|
||||
if(DRACO_VERBOSE)
|
||||
message("draco_set_cxx_flags: user CXX flags: ${DRACO_CXX_FLAGS}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
draco_set_and_stringify(DEST cxx_flags SOURCE_VARS ${cxx_flag_lists})
|
||||
|
||||
if(cxx_flags)
|
||||
draco_test_cxx_flag(FLAG_LIST_VAR_NAMES ${cxx_flag_lists})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Collects Draco built-in and user-specified linker flags and tests them. Halts
|
||||
# configuration and reports the error when any flags cause the build to fail.
|
||||
#
|
||||
# Note: draco_test_exe_linker_flag() does the real work of setting the flags and
|
||||
# running the test compile commands.
|
||||
macro(draco_set_exe_linker_flags)
|
||||
unset(linker_flag_lists)
|
||||
|
||||
if(DRACO_VERBOSE)
|
||||
message("draco_set_exe_linker_flags: "
|
||||
"draco_base_exe_linker_flags=${draco_base_exe_linker_flags}")
|
||||
endif()
|
||||
|
||||
if(draco_base_exe_linker_flags)
|
||||
list(APPEND linker_flag_lists draco_base_exe_linker_flags)
|
||||
endif()
|
||||
|
||||
if(linker_flag_lists)
|
||||
unset(test_linker_flags)
|
||||
|
||||
if(DRACO_VERBOSE)
|
||||
message("draco_set_exe_linker_flags: "
|
||||
"linker_flag_lists=${linker_flag_lists}")
|
||||
endif()
|
||||
|
||||
draco_set_and_stringify(DEST test_linker_flags SOURCE_VARS
|
||||
${linker_flag_lists})
|
||||
draco_test_exe_linker_flag(FLAG_LIST_VAR_NAME test_linker_flags)
|
||||
endif()
|
||||
endmacro()
|
||||
124
assimp/contrib/draco/cmake/draco_helpers.cmake
Normal file
124
assimp/contrib/draco/cmake/draco_helpers.cmake
Normal file
|
|
@ -0,0 +1,124 @@
|
|||
# Copyright 2021 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_HELPERS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_HELPERS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_HELPERS_CMAKE_ 1)
|
||||
|
||||
# Kills build generation using message(FATAL_ERROR) and outputs all data passed
|
||||
# to the console via use of $ARGN.
|
||||
macro(draco_die)
|
||||
message(FATAL_ERROR ${ARGN})
|
||||
endmacro()
|
||||
|
||||
# Converts semi-colon delimited list variable(s) to string. Output is written to
|
||||
# variable supplied via the DEST parameter. Input is from an expanded variable
|
||||
# referenced by SOURCE and/or variable(s) referenced by SOURCE_VARS.
|
||||
macro(draco_set_and_stringify)
|
||||
set(optional_args)
|
||||
set(single_value_args DEST SOURCE_VAR)
|
||||
set(multi_value_args SOURCE SOURCE_VARS)
|
||||
cmake_parse_arguments(sas "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT sas_DEST OR NOT (sas_SOURCE OR sas_SOURCE_VARS))
|
||||
draco_die("draco_set_and_stringify: DEST and at least one of SOURCE "
|
||||
"SOURCE_VARS required.")
|
||||
endif()
|
||||
|
||||
unset(${sas_DEST})
|
||||
|
||||
if(sas_SOURCE)
|
||||
# $sas_SOURCE is one or more expanded variables, just copy the values to
|
||||
# $sas_DEST.
|
||||
set(${sas_DEST} "${sas_SOURCE}")
|
||||
endif()
|
||||
|
||||
if(sas_SOURCE_VARS)
|
||||
# $sas_SOURCE_VARS is one or more variable names. Each iteration expands a
|
||||
# variable and appends it to $sas_DEST.
|
||||
foreach(source_var ${sas_SOURCE_VARS})
|
||||
set(${sas_DEST} "${${sas_DEST}} ${${source_var}}")
|
||||
endforeach()
|
||||
|
||||
# Because $sas_DEST can be empty when entering this scope leading whitespace
|
||||
# can be introduced to $sas_DEST on the first iteration of the above loop.
|
||||
# Remove it:
|
||||
string(STRIP "${${sas_DEST}}" ${sas_DEST})
|
||||
endif()
|
||||
|
||||
# Lists in CMake are simply semicolon delimited strings, so stringification is
|
||||
# just a find and replace of the semicolon.
|
||||
string(REPLACE ";" " " ${sas_DEST} "${${sas_DEST}}")
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message("draco_set_and_stringify: ${sas_DEST}=${${sas_DEST}}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Creates a dummy source file in $DRACO_GENERATED_SOURCES_DIRECTORY and adds it
|
||||
# to the specified target. Optionally adds its path to a list variable.
|
||||
#
|
||||
# draco_create_dummy_source_file(<TARGET <target> BASENAME <basename of file>>
|
||||
# [LISTVAR <list variable>])
|
||||
macro(draco_create_dummy_source_file)
|
||||
set(optional_args)
|
||||
set(single_value_args TARGET BASENAME LISTVAR)
|
||||
set(multi_value_args)
|
||||
cmake_parse_arguments(cdsf "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT cdsf_TARGET OR NOT cdsf_BASENAME)
|
||||
draco_die("draco_create_dummy_source_file: TARGET and BASENAME required.")
|
||||
endif()
|
||||
|
||||
if(NOT DRACO_GENERATED_SOURCES_DIRECTORY)
|
||||
set(DRACO_GENERATED_SOURCES_DIRECTORY "${draco_build}/gen_src")
|
||||
endif()
|
||||
|
||||
set(dummy_source_dir "${DRACO_GENERATED_SOURCES_DIRECTORY}")
|
||||
set(dummy_source_file
|
||||
"${dummy_source_dir}/draco_${cdsf_TARGET}_${cdsf_BASENAME}.cc")
|
||||
set(dummy_source_code
|
||||
"// Generated file. DO NOT EDIT!\n"
|
||||
"// C++ source file created for target ${cdsf_TARGET}.\n"
|
||||
"void draco_${cdsf_TARGET}_${cdsf_BASENAME}_dummy_function(void)\;\n"
|
||||
"void draco_${cdsf_TARGET}_${cdsf_BASENAME}_dummy_function(void) {}\n")
|
||||
file(WRITE "${dummy_source_file}" ${dummy_source_code})
|
||||
|
||||
target_sources(${cdsf_TARGET} PRIVATE ${dummy_source_file})
|
||||
|
||||
if(cdsf_LISTVAR)
|
||||
list(APPEND ${cdsf_LISTVAR} "${dummy_source_file}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Loads the version string from $draco_source/draco/version.h and sets
|
||||
# $DRACO_VERSION.
|
||||
macro(draco_load_version_info)
|
||||
file(STRINGS "${draco_src_root}/core/draco_version.h" version_file_strings)
|
||||
foreach(str ${version_file_strings})
|
||||
if(str MATCHES "char kDracoVersion")
|
||||
string(FIND "${str}" "\"" open_quote_pos)
|
||||
string(FIND "${str}" ";" semicolon_pos)
|
||||
math(EXPR open_quote_pos "${open_quote_pos} + 1")
|
||||
math(EXPR close_quote_pos "${semicolon_pos} - 1")
|
||||
math(EXPR version_string_length "${close_quote_pos} - ${open_quote_pos}")
|
||||
string(SUBSTRING "${str}" ${open_quote_pos} ${version_string_length}
|
||||
DRACO_VERSION)
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
123
assimp/contrib/draco/cmake/draco_install.cmake
Normal file
123
assimp/contrib/draco/cmake/draco_install.cmake
Normal file
|
|
@ -0,0 +1,123 @@
|
|||
# Copyright 2021 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_INSTALL_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_INSTALL_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_INSTALL_CMAKE_ 1)
|
||||
|
||||
include(CMakePackageConfigHelpers)
|
||||
include(GNUInstallDirs)
|
||||
|
||||
# Sets up the draco install targets. Must be called after the static library
|
||||
# target is created.
|
||||
macro(draco_setup_install_target)
|
||||
if(DRACO_INSTALL)
|
||||
set(bin_path "${CMAKE_INSTALL_BINDIR}")
|
||||
set(data_path "${CMAKE_INSTALL_DATAROOTDIR}")
|
||||
set(includes_path "${CMAKE_INSTALL_INCLUDEDIR}")
|
||||
set(libs_path "${CMAKE_INSTALL_LIBDIR}")
|
||||
|
||||
foreach(file ${draco_sources})
|
||||
if(file MATCHES "h$")
|
||||
list(APPEND draco_api_includes ${file})
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
list(REMOVE_DUPLICATES draco_api_includes)
|
||||
|
||||
# Strip $draco_src_root from the file paths: we need to install relative to
|
||||
# $include_directory.
|
||||
list(TRANSFORM draco_api_includes REPLACE "${draco_src_root}/" "")
|
||||
|
||||
foreach(draco_api_include ${draco_api_includes})
|
||||
get_filename_component(file_directory ${draco_api_include} DIRECTORY)
|
||||
set(target_directory "${includes_path}/draco/${file_directory}")
|
||||
install(FILES ${draco_src_root}/${draco_api_include}
|
||||
DESTINATION "${target_directory}")
|
||||
endforeach()
|
||||
|
||||
install(FILES "${draco_build}/draco/draco_features.h"
|
||||
DESTINATION "${includes_path}/draco/")
|
||||
|
||||
install(TARGETS draco_decoder DESTINATION "${bin_path}")
|
||||
install(TARGETS draco_encoder DESTINATION "${bin_path}")
|
||||
|
||||
if(DRACO_TRANSCODER_SUPPORTED)
|
||||
install(TARGETS draco_transcoder DESTINATION "${bin_path}")
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
install(
|
||||
TARGETS draco
|
||||
EXPORT dracoExport
|
||||
RUNTIME DESTINATION "${bin_path}"
|
||||
ARCHIVE DESTINATION "${libs_path}"
|
||||
LIBRARY DESTINATION "${libs_path}")
|
||||
else()
|
||||
install(
|
||||
TARGETS draco_static
|
||||
EXPORT dracoExport
|
||||
DESTINATION "${libs_path}")
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
install(
|
||||
TARGETS draco_shared
|
||||
EXPORT dracoExport
|
||||
RUNTIME DESTINATION "${bin_path}"
|
||||
ARCHIVE DESTINATION "${libs_path}"
|
||||
LIBRARY DESTINATION "${libs_path}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DRACO_UNITY_PLUGIN)
|
||||
install(TARGETS dracodec_unity DESTINATION "${libs_path}")
|
||||
endif()
|
||||
|
||||
if(DRACO_MAYA_PLUGIN)
|
||||
install(TARGETS draco_maya_wrapper DESTINATION "${libs_path}")
|
||||
endif()
|
||||
|
||||
# pkg-config: draco.pc
|
||||
configure_file("${draco_root}/cmake/draco.pc.template"
|
||||
"${draco_build}/draco.pc" @ONLY NEWLINE_STYLE UNIX)
|
||||
install(FILES "${draco_build}/draco.pc" DESTINATION "${libs_path}/pkgconfig")
|
||||
|
||||
# CMake config: draco-config.cmake
|
||||
configure_package_config_file(
|
||||
"${draco_root}/cmake/draco-config.cmake.template"
|
||||
"${draco_build}/draco-config.cmake"
|
||||
INSTALL_DESTINATION "${data_path}/cmake/draco")
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${draco_build}/draco-config-version.cmake"
|
||||
VERSION ${DRACO_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion)
|
||||
|
||||
export(
|
||||
EXPORT dracoExport
|
||||
NAMESPACE draco::
|
||||
FILE "${draco_build}/draco-targets.cmake")
|
||||
|
||||
install(
|
||||
EXPORT dracoExport
|
||||
NAMESPACE draco::
|
||||
FILE draco-targets.cmake
|
||||
DESTINATION "${data_path}/cmake/draco")
|
||||
|
||||
install(FILES "${draco_build}/draco-config.cmake"
|
||||
"${draco_build}/draco-config-version.cmake"
|
||||
DESTINATION "${data_path}/cmake/draco")
|
||||
endif(DRACO_INSTALL)
|
||||
endmacro()
|
||||
106
assimp/contrib/draco/cmake/draco_intrinsics.cmake
Normal file
106
assimp/contrib/draco/cmake/draco_intrinsics.cmake
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# Copyright 2021 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_INTRINSICS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_INTRINSICS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_INTRINSICS_CMAKE_ 1)
|
||||
|
||||
# Returns the compiler flag for the SIMD intrinsics suffix specified by the
|
||||
# SUFFIX argument via the variable specified by the VARIABLE argument:
|
||||
# draco_get_intrinsics_flag_for_suffix(SUFFIX <suffix> VARIABLE <var name>)
|
||||
macro(draco_get_intrinsics_flag_for_suffix)
|
||||
unset(intrinsics_SUFFIX)
|
||||
unset(intrinsics_VARIABLE)
|
||||
unset(optional_args)
|
||||
unset(multi_value_args)
|
||||
set(single_value_args SUFFIX VARIABLE)
|
||||
cmake_parse_arguments(intrinsics "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT (intrinsics_SUFFIX AND intrinsics_VARIABLE))
|
||||
message(FATAL_ERROR "draco_get_intrinsics_flag_for_suffix: SUFFIX and "
|
||||
"VARIABLE required.")
|
||||
endif()
|
||||
|
||||
if(intrinsics_SUFFIX MATCHES "neon")
|
||||
if(NOT MSVC)
|
||||
set(${intrinsics_VARIABLE} "${DRACO_NEON_INTRINSICS_FLAG}")
|
||||
endif()
|
||||
elseif(intrinsics_SUFFIX MATCHES "sse4")
|
||||
if(NOT MSVC)
|
||||
set(${intrinsics_VARIABLE} "-msse4.1")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "draco_get_intrinsics_flag_for_suffix: Unknown "
|
||||
"instrinics suffix: ${intrinsics_SUFFIX}")
|
||||
endif()
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message("draco_get_intrinsics_flag_for_suffix: "
|
||||
"suffix:${intrinsics_SUFFIX} flag:${${intrinsics_VARIABLE}}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Processes source files specified by SOURCES and adds intrinsics flags as
|
||||
# necessary: draco_process_intrinsics_sources(SOURCES <sources>)
|
||||
#
|
||||
# Detects requirement for intrinsics flags using source file name suffix.
|
||||
# Currently supports only SSE4.1.
|
||||
macro(draco_process_intrinsics_sources)
|
||||
unset(arg_TARGET)
|
||||
unset(arg_SOURCES)
|
||||
unset(optional_args)
|
||||
set(single_value_args TARGET)
|
||||
set(multi_value_args SOURCES)
|
||||
cmake_parse_arguments(arg "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
if(NOT (arg_TARGET AND arg_SOURCES))
|
||||
message(FATAL_ERROR "draco_process_intrinsics_sources: TARGET and "
|
||||
"SOURCES required.")
|
||||
endif()
|
||||
|
||||
if(DRACO_ENABLE_SSE4_1 AND draco_have_sse4)
|
||||
unset(sse4_sources)
|
||||
list(APPEND sse4_sources ${arg_SOURCES})
|
||||
|
||||
list(FILTER sse4_sources INCLUDE REGEX "${draco_sse4_source_file_suffix}$")
|
||||
|
||||
if(sse4_sources)
|
||||
unset(sse4_flags)
|
||||
draco_get_intrinsics_flag_for_suffix(
|
||||
SUFFIX ${draco_sse4_source_file_suffix} VARIABLE sse4_flags)
|
||||
if(sse4_flags)
|
||||
draco_set_compiler_flags_for_sources(SOURCES ${sse4_sources} FLAGS
|
||||
${sse4_flags})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DRACO_ENABLE_NEON AND draco_have_neon)
|
||||
unset(neon_sources)
|
||||
list(APPEND neon_sources ${arg_SOURCES})
|
||||
list(FILTER neon_sources INCLUDE REGEX "${draco_neon_source_file_suffix}$")
|
||||
|
||||
if(neon_sources AND DRACO_NEON_INTRINSICS_FLAG)
|
||||
unset(neon_flags)
|
||||
draco_get_intrinsics_flag_for_suffix(
|
||||
SUFFIX ${draco_neon_source_file_suffix} VARIABLE neon_flags)
|
||||
if(neon_flags)
|
||||
draco_set_compiler_flags_for_sources(SOURCES ${neon_sources} FLAGS
|
||||
${neon_flags})
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
358
assimp/contrib/draco/cmake/draco_options.cmake
Normal file
358
assimp/contrib/draco/cmake/draco_options.cmake
Normal file
|
|
@ -0,0 +1,358 @@
|
|||
# Copyright 2021 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_OPTIONS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_OPTIONS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_OPTIONS_CMAKE_)
|
||||
|
||||
set(draco_features_file_name "${draco_build}/draco/draco_features.h")
|
||||
set(draco_features_list)
|
||||
|
||||
# Simple wrapper for CMake's builtin option command that tracks draco's build
|
||||
# options in the list variable $draco_options.
|
||||
macro(draco_option)
|
||||
unset(option_NAME)
|
||||
unset(option_HELPSTRING)
|
||||
unset(option_VALUE)
|
||||
unset(optional_args)
|
||||
unset(multi_value_args)
|
||||
set(single_value_args NAME HELPSTRING VALUE)
|
||||
cmake_parse_arguments(option "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(NOT
|
||||
(option_NAME
|
||||
AND option_HELPSTRING
|
||||
AND DEFINED option_VALUE))
|
||||
message(FATAL_ERROR "draco_option: NAME HELPSTRING and VALUE required.")
|
||||
endif()
|
||||
|
||||
option(${option_NAME} ${option_HELPSTRING} ${option_VALUE})
|
||||
|
||||
if(DRACO_VERBOSE GREATER 2)
|
||||
message(
|
||||
"--------- draco_option ---------\n"
|
||||
"option_NAME=${option_NAME}\n"
|
||||
"option_HELPSTRING=${option_HELPSTRING}\n"
|
||||
"option_VALUE=${option_VALUE}\n"
|
||||
"------------------------------------------\n")
|
||||
endif()
|
||||
|
||||
list(APPEND draco_options ${option_NAME})
|
||||
list(REMOVE_DUPLICATES draco_options)
|
||||
endmacro()
|
||||
|
||||
# Dumps the $draco_options list via CMake message command.
|
||||
macro(draco_dump_options)
|
||||
foreach(option_name ${draco_options})
|
||||
message("${option_name}: ${${option_name}}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Set default options.
|
||||
macro(draco_set_default_options)
|
||||
draco_option(
|
||||
NAME DRACO_FAST
|
||||
HELPSTRING "Try to build faster libs."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_JS_GLUE
|
||||
HELPSTRING "Enable JS Glue and JS targets when using Emscripten."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_IE_COMPATIBLE
|
||||
HELPSTRING "Enable support for older IE builds when using Emscripten."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_MESH_COMPRESSION
|
||||
HELPSTRING "Enable mesh compression."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_POINT_CLOUD_COMPRESSION
|
||||
HELPSTRING "Enable point cloud compression."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_PREDICTIVE_EDGEBREAKER
|
||||
HELPSTRING "Enable predictive edgebreaker."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_STANDARD_EDGEBREAKER
|
||||
HELPSTRING "Enable stand edgebreaker."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_BACKWARDS_COMPATIBILITY
|
||||
HELPSTRING "Enable backwards compatibility."
|
||||
VALUE ON)
|
||||
draco_option(
|
||||
NAME DRACO_DECODER_ATTRIBUTE_DEDUPLICATION
|
||||
HELPSTRING "Enable attribute deduping."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_TESTS
|
||||
HELPSTRING "Enables tests."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_WASM
|
||||
HELPSTRING "Enables WASM support."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_UNITY_PLUGIN
|
||||
HELPSTRING "Build plugin library for Unity."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_ANIMATION_ENCODING
|
||||
HELPSTRING "Enable animation."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_GLTF_BITSTREAM
|
||||
HELPSTRING "Draco GLTF extension bitstream specified features only."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_MAYA_PLUGIN
|
||||
HELPSTRING "Build plugin library for Maya."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_TRANSCODER_SUPPORTED
|
||||
HELPSTRING "Enable the Draco transcoder."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_DEBUG_COMPILER_WARNINGS
|
||||
HELPSTRING "Turn on more warnings."
|
||||
VALUE OFF)
|
||||
draco_option(
|
||||
NAME DRACO_INSTALL
|
||||
HELPSTRING "Enable installation."
|
||||
VALUE ON)
|
||||
draco_check_deprecated_options()
|
||||
endmacro()
|
||||
|
||||
# Warns when a deprecated option is used and sets the option that replaced it.
|
||||
macro(draco_handle_deprecated_option)
|
||||
unset(option_OLDNAME)
|
||||
unset(option_NEWNAME)
|
||||
unset(optional_args)
|
||||
unset(multi_value_args)
|
||||
set(single_value_args OLDNAME NEWNAME)
|
||||
cmake_parse_arguments(option "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if("${${option_OLDNAME}}")
|
||||
message(WARNING "${option_OLDNAME} is deprecated. Use ${option_NEWNAME}.")
|
||||
set(${option_NEWNAME} ${${option_OLDNAME}})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Checks for use of deprecated options.
|
||||
macro(draco_check_deprecated_options)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_EXTRA_SPEED NEWNAME DRACO_FAST)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_JS_GLUE NEWNAME DRACO_JS_GLUE)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_MESH_COMPRESSION NEWNAME
|
||||
DRACO_MESH_COMPRESSION)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_POINT_CLOUD_COMPRESSION NEWNAME
|
||||
DRACO_POINT_CLOUD_COMPRESSION)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_PREDICTIVE_EDGEBREAKER NEWNAME
|
||||
DRACO_PREDICTIVE_EDGEBREAKER)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_STANDARD_EDGEBREAKER NEWNAME
|
||||
DRACO_STANDARD_EDGEBREAKER)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_BACKWARDS_COMPATIBILITY NEWNAME
|
||||
DRACO_BACKWARDS_COMPATIBILITY)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_DECODER_ATTRIBUTE_DEDUPLICATION
|
||||
NEWNAME DRACO_DECODER_ATTRIBUTE_DEDUPLICATION)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_TESTS NEWNAME DRACO_TESTS)
|
||||
draco_handle_deprecated_option(OLDNAME ENABLE_WASM NEWNAME DRACO_WASM)
|
||||
draco_handle_deprecated_option(OLDNAME BUILD_UNITY_PLUGIN NEWNAME
|
||||
DRACO_UNITY_PLUGIN)
|
||||
draco_handle_deprecated_option(OLDNAME BUILD_ANIMATION_ENCODING NEWNAME
|
||||
DRACO_ANIMATION_ENCODING)
|
||||
draco_handle_deprecated_option(OLDNAME BUILD_FOR_GLTF NEWNAME DRACO_GLTF)
|
||||
draco_handle_deprecated_option(OLDNAME BUILD_MAYA_PLUGIN NEWNAME
|
||||
DRACO_MAYA_PLUGIN)
|
||||
draco_handle_deprecated_option(OLDNAME BUILD_USD_PLUGIN NEWNAME
|
||||
BUILD_SHARED_LIBS)
|
||||
draco_handle_deprecated_option(OLDNAME DRACO_GLTF NEWNAME
|
||||
DRACO_GLTF_BITSTREAM)
|
||||
|
||||
endmacro()
|
||||
|
||||
# Macro for setting Draco features based on user configuration. Features enabled
|
||||
# by this macro are Draco global.
|
||||
macro(draco_set_optional_features)
|
||||
if(DRACO_GLTF_BITSTREAM)
|
||||
# Enable only the features included in the Draco GLTF bitstream spec.
|
||||
draco_enable_feature(FEATURE "DRACO_MESH_COMPRESSION_SUPPORTED")
|
||||
draco_enable_feature(FEATURE "DRACO_NORMAL_ENCODING_SUPPORTED")
|
||||
draco_enable_feature(FEATURE "DRACO_STANDARD_EDGEBREAKER_SUPPORTED")
|
||||
else()
|
||||
if(DRACO_POINT_CLOUD_COMPRESSION)
|
||||
draco_enable_feature(FEATURE "DRACO_POINT_CLOUD_COMPRESSION_SUPPORTED")
|
||||
endif()
|
||||
if(DRACO_MESH_COMPRESSION)
|
||||
draco_enable_feature(FEATURE "DRACO_MESH_COMPRESSION_SUPPORTED")
|
||||
draco_enable_feature(FEATURE "DRACO_NORMAL_ENCODING_SUPPORTED")
|
||||
|
||||
if(DRACO_STANDARD_EDGEBREAKER)
|
||||
draco_enable_feature(FEATURE "DRACO_STANDARD_EDGEBREAKER_SUPPORTED")
|
||||
endif()
|
||||
if(DRACO_PREDICTIVE_EDGEBREAKER)
|
||||
draco_enable_feature(FEATURE "DRACO_PREDICTIVE_EDGEBREAKER_SUPPORTED")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DRACO_BACKWARDS_COMPATIBILITY)
|
||||
draco_enable_feature(FEATURE "DRACO_BACKWARDS_COMPATIBILITY_SUPPORTED")
|
||||
endif()
|
||||
|
||||
|
||||
if(NOT EMSCRIPTEN)
|
||||
# For now, enable deduplication for both encoder and decoder.
|
||||
# TODO(ostava): Support for disabling attribute deduplication for the C++
|
||||
# decoder is planned in future releases.
|
||||
draco_enable_feature(FEATURE
|
||||
DRACO_ATTRIBUTE_INDICES_DEDUPLICATION_SUPPORTED)
|
||||
draco_enable_feature(FEATURE
|
||||
DRACO_ATTRIBUTE_VALUES_DEDUPLICATION_SUPPORTED)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DRACO_UNITY_PLUGIN)
|
||||
draco_enable_feature(FEATURE "DRACO_UNITY_PLUGIN")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(DRACO_MAYA_PLUGIN)
|
||||
draco_enable_feature(FEATURE "DRACO_MAYA_PLUGIN")
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(DRACO_TRANSCODER_SUPPORTED)
|
||||
draco_enable_feature(FEATURE "DRACO_TRANSCODER_SUPPORTED")
|
||||
endif()
|
||||
|
||||
|
||||
endmacro()
|
||||
|
||||
# Macro that handles tracking of Draco preprocessor symbols for the purpose of
|
||||
# producing draco_features.h.
|
||||
#
|
||||
# ~~~
|
||||
# draco_enable_feature(FEATURE <feature_name> [TARGETS <target_name>])
|
||||
# ~~~
|
||||
#
|
||||
# FEATURE is required. It should be a Draco preprocessor symbol. TARGETS is
|
||||
# optional. It can be one or more draco targets.
|
||||
#
|
||||
# When the TARGETS argument is not present the preproc symbol is added to
|
||||
# draco_features.h. When it is draco_features.h is unchanged, and
|
||||
# target_compile_options() is called for each target specified.
|
||||
macro(draco_enable_feature)
|
||||
set(def_flags)
|
||||
set(def_single_arg_opts FEATURE)
|
||||
set(def_multi_arg_opts TARGETS)
|
||||
cmake_parse_arguments(DEF "${def_flags}" "${def_single_arg_opts}"
|
||||
"${def_multi_arg_opts}" ${ARGN})
|
||||
if("${DEF_FEATURE}" STREQUAL "")
|
||||
message(FATAL_ERROR "Empty FEATURE passed to draco_enable_feature().")
|
||||
endif()
|
||||
|
||||
# Do nothing/return early if $DEF_FEATURE is already in the list.
|
||||
list(FIND draco_features_list ${DEF_FEATURE} df_index)
|
||||
if(NOT df_index EQUAL -1)
|
||||
return()
|
||||
endif()
|
||||
|
||||
list(LENGTH DEF_TARGETS df_targets_list_length)
|
||||
if(${df_targets_list_length} EQUAL 0)
|
||||
list(APPEND draco_features_list ${DEF_FEATURE})
|
||||
else()
|
||||
foreach(target ${DEF_TARGETS})
|
||||
target_compile_definitions(${target} PRIVATE ${DEF_FEATURE})
|
||||
endforeach()
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Function for generating draco_features.h.
|
||||
function(draco_generate_features_h)
|
||||
file(WRITE "${draco_features_file_name}.new"
|
||||
"// GENERATED FILE -- DO NOT EDIT\n\n" "#ifndef DRACO_FEATURES_H_\n"
|
||||
"#define DRACO_FEATURES_H_\n\n")
|
||||
|
||||
foreach(feature ${draco_features_list})
|
||||
file(APPEND "${draco_features_file_name}.new" "#define ${feature}\n")
|
||||
endforeach()
|
||||
|
||||
if(MSVC)
|
||||
if(NOT DRACO_DEBUG_COMPILER_WARNINGS)
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"// Enable DRACO_DEBUG_COMPILER_WARNINGS at CMake generation \n"
|
||||
"// time to remove these pragmas.\n")
|
||||
|
||||
# warning C4018: '<operator>': signed/unsigned mismatch.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4018)\n")
|
||||
|
||||
# warning C4146: unary minus operator applied to unsigned type, result
|
||||
# still unsigned
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4146)\n")
|
||||
|
||||
# warning C4244: 'return': conversion from '<type>' to '<type>', possible
|
||||
# loss of data.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4244)\n")
|
||||
|
||||
# warning C4267: 'initializing' conversion from '<type>' to '<type>',
|
||||
# possible loss of data.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4267)\n")
|
||||
|
||||
# warning C4305: 'context' : truncation from 'type1' to 'type2'.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4305)\n")
|
||||
|
||||
# warning C4661: 'identifier' : no suitable definition provided for
|
||||
# explicit template instantiation request.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4661)\n")
|
||||
|
||||
# warning C4800: Implicit conversion from 'type' to bool. Possible
|
||||
# information loss.
|
||||
# Also, in older MSVC releases:
|
||||
# warning C4800: 'type' : forcing value to bool 'true' or 'false'
|
||||
# (performance warning).
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4800)\n")
|
||||
|
||||
# warning C4804: '<operator>': unsafe use of type '<type>' in operation.
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"#pragma warning(disable:4804)\n")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
file(APPEND "${draco_features_file_name}.new"
|
||||
"\n#endif // DRACO_FEATURES_H_\n")
|
||||
|
||||
# Will replace ${draco_features_file_name} only if the file content has
|
||||
# changed. This prevents forced Draco rebuilds after CMake runs.
|
||||
configure_file("${draco_features_file_name}.new"
|
||||
"${draco_features_file_name}")
|
||||
file(REMOVE "${draco_features_file_name}.new")
|
||||
endfunction()
|
||||
|
||||
# Sets default options for the build and processes user controlled options to
|
||||
# compute enabled features.
|
||||
macro(draco_setup_options)
|
||||
draco_set_default_options()
|
||||
draco_set_optional_features()
|
||||
endmacro()
|
||||
48
assimp/contrib/draco/cmake/draco_sanitizer.cmake
Normal file
48
assimp/contrib/draco/cmake/draco_sanitizer.cmake
Normal file
|
|
@ -0,0 +1,48 @@
|
|||
# Copyright 2021 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_SANITIZER_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_SANITIZER_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_SANITIZER_CMAKE_ 1)
|
||||
|
||||
# Handles the details of enabling sanitizers.
|
||||
macro(draco_configure_sanitizer)
|
||||
if(DRACO_SANITIZE
|
||||
AND NOT EMSCRIPTEN
|
||||
AND NOT MSVC)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
|
||||
if(DRACO_SANITIZE MATCHES "cfi")
|
||||
list(APPEND SAN_CXX_FLAGS "-flto" "-fno-sanitize-trap=cfi")
|
||||
list(APPEND SAN_LINKER_FLAGS "-flto" "-fno-sanitize-trap=cfi"
|
||||
"-fuse-ld=gold")
|
||||
endif()
|
||||
|
||||
if(${CMAKE_SIZEOF_VOID_P} EQUAL 4 AND DRACO_SANITIZE MATCHES
|
||||
"integer|undefined")
|
||||
list(APPEND SAN_LINKER_FLAGS "--rtlib=compiler-rt" "-lgcc_s")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
list(APPEND SAN_CXX_FLAGS "-fsanitize=${DRACO_SANITIZE}")
|
||||
list(APPEND SAN_LINKER_FLAGS "-fsanitize=${DRACO_SANITIZE}")
|
||||
|
||||
# Make sanitizer callstacks accurate.
|
||||
list(APPEND SAN_CXX_FLAGS "-fno-omit-frame-pointer")
|
||||
list(APPEND SAN_CXX_FLAGS "-fno-optimize-sibling-calls")
|
||||
|
||||
draco_test_cxx_flag(FLAG_LIST_VAR_NAMES SAN_CXX_FLAGS FLAG_REQUIRED)
|
||||
draco_test_exe_linker_flag(FLAG_LIST_VAR_NAME SAN_LINKER_FLAGS)
|
||||
endif()
|
||||
endmacro()
|
||||
400
assimp/contrib/draco/cmake/draco_targets.cmake
Normal file
400
assimp/contrib/draco/cmake/draco_targets.cmake
Normal file
|
|
@ -0,0 +1,400 @@
|
|||
# Copyright 2021 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_TARGETS_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_TARGETS_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_TARGETS_CMAKE_ 1)
|
||||
|
||||
# Resets list variables used to track draco targets.
|
||||
macro(draco_reset_target_lists)
|
||||
unset(draco_targets)
|
||||
unset(draco_exe_targets)
|
||||
unset(draco_lib_targets)
|
||||
unset(draco_objlib_targets)
|
||||
unset(draco_module_targets)
|
||||
unset(draco_sources)
|
||||
unset(draco_test_targets)
|
||||
endmacro()
|
||||
|
||||
# Creates an executable target. The target name is passed as a parameter to the
|
||||
# NAME argument, and the sources passed as a parameter to the SOURCES argument:
|
||||
# draco_add_executable(NAME <name> SOURCES <sources> [optional args])
|
||||
#
|
||||
# Optional args:
|
||||
# cmake-format: off
|
||||
# - OUTPUT_NAME: Override output file basename. Target basename defaults to
|
||||
# NAME.
|
||||
# - TEST: Flag. Presence means treat executable as a test.
|
||||
# - DEFINES: List of preprocessor macro definitions.
|
||||
# - INCLUDES: list of include directories for the target.
|
||||
# - COMPILE_FLAGS: list of compiler flags for the target.
|
||||
# - LINK_FLAGS: List of linker flags for the target.
|
||||
# - OBJLIB_DEPS: List of CMake object library target dependencies.
|
||||
# - LIB_DEPS: List of CMake library dependencies.
|
||||
# cmake-format: on
|
||||
#
|
||||
# Sources passed to this macro are added to $draco_test_sources when TEST is
|
||||
# specified. Otherwise sources are added to $draco_sources.
|
||||
#
|
||||
# Targets passed to this macro are always added to the $draco_targets list. When
|
||||
# TEST is specified targets are also added to the $draco_test_targets list.
|
||||
# Otherwise targets are added to $draco_exe_targets.
|
||||
macro(draco_add_executable)
|
||||
unset(exe_TEST)
|
||||
unset(exe_TEST_DEFINES_MAIN)
|
||||
unset(exe_NAME)
|
||||
unset(exe_OUTPUT_NAME)
|
||||
unset(exe_SOURCES)
|
||||
unset(exe_DEFINES)
|
||||
unset(exe_INCLUDES)
|
||||
unset(exe_COMPILE_FLAGS)
|
||||
unset(exe_LINK_FLAGS)
|
||||
unset(exe_OBJLIB_DEPS)
|
||||
unset(exe_LIB_DEPS)
|
||||
set(optional_args TEST)
|
||||
set(single_value_args NAME OUTPUT_NAME)
|
||||
set(multi_value_args
|
||||
SOURCES
|
||||
DEFINES
|
||||
INCLUDES
|
||||
COMPILE_FLAGS
|
||||
LINK_FLAGS
|
||||
OBJLIB_DEPS
|
||||
LIB_DEPS)
|
||||
|
||||
cmake_parse_arguments(exe "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message(
|
||||
"--------- draco_add_executable ---------\n"
|
||||
"exe_TEST=${exe_TEST}\n"
|
||||
"exe_TEST_DEFINES_MAIN=${exe_TEST_DEFINES_MAIN}\n"
|
||||
"exe_NAME=${exe_NAME}\n"
|
||||
"exe_OUTPUT_NAME=${exe_OUTPUT_NAME}\n"
|
||||
"exe_SOURCES=${exe_SOURCES}\n"
|
||||
"exe_DEFINES=${exe_DEFINES}\n"
|
||||
"exe_INCLUDES=${exe_INCLUDES}\n"
|
||||
"exe_COMPILE_FLAGS=${exe_COMPILE_FLAGS}\n"
|
||||
"exe_LINK_FLAGS=${exe_LINK_FLAGS}\n"
|
||||
"exe_OBJLIB_DEPS=${exe_OBJLIB_DEPS}\n"
|
||||
"exe_LIB_DEPS=${exe_LIB_DEPS}\n"
|
||||
"------------------------------------------\n")
|
||||
endif()
|
||||
|
||||
if(NOT (exe_NAME AND exe_SOURCES))
|
||||
message(FATAL_ERROR "draco_add_executable: NAME and SOURCES required.")
|
||||
endif()
|
||||
|
||||
list(APPEND draco_targets ${exe_NAME})
|
||||
if(exe_TEST)
|
||||
list(APPEND draco_test_targets ${exe_NAME})
|
||||
list(APPEND draco_test_sources ${exe_SOURCES})
|
||||
else()
|
||||
list(APPEND draco_exe_targets ${exe_NAME})
|
||||
list(APPEND draco_sources ${exe_SOURCES})
|
||||
endif()
|
||||
|
||||
add_executable(${exe_NAME} ${exe_SOURCES})
|
||||
|
||||
target_compile_features(${exe_NAME} PUBLIC cxx_std_11)
|
||||
|
||||
if(NOT EMSCRIPTEN)
|
||||
set_target_properties(${exe_NAME} PROPERTIES VERSION ${DRACO_VERSION})
|
||||
endif()
|
||||
|
||||
if(exe_OUTPUT_NAME)
|
||||
set_target_properties(${exe_NAME} PROPERTIES OUTPUT_NAME ${exe_OUTPUT_NAME})
|
||||
endif()
|
||||
|
||||
draco_process_intrinsics_sources(TARGET ${exe_NAME} SOURCES ${exe_SOURCES})
|
||||
|
||||
if(exe_DEFINES)
|
||||
target_compile_definitions(${exe_NAME} PRIVATE ${exe_DEFINES})
|
||||
endif()
|
||||
|
||||
if(exe_INCLUDES)
|
||||
target_include_directories(${exe_NAME} PRIVATE ${exe_INCLUDES})
|
||||
endif()
|
||||
|
||||
if(exe_COMPILE_FLAGS OR DRACO_CXX_FLAGS)
|
||||
target_compile_options(${exe_NAME} PRIVATE ${exe_COMPILE_FLAGS}
|
||||
${DRACO_CXX_FLAGS})
|
||||
endif()
|
||||
|
||||
if(exe_LINK_FLAGS OR DRACO_EXE_LINKER_FLAGS)
|
||||
if(${CMAKE_VERSION} VERSION_LESS "3.13")
|
||||
list(APPEND exe_LINK_FLAGS "${DRACO_EXE_LINKER_FLAGS}")
|
||||
# LINK_FLAGS is managed as a string.
|
||||
draco_set_and_stringify(SOURCE "${exe_LINK_FLAGS}" DEST exe_LINK_FLAGS)
|
||||
set_target_properties(${exe_NAME} PROPERTIES LINK_FLAGS
|
||||
"${exe_LINK_FLAGS}")
|
||||
else()
|
||||
target_link_options(${exe_NAME} PRIVATE ${exe_LINK_FLAGS}
|
||||
${DRACO_EXE_LINKER_FLAGS})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(exe_OBJLIB_DEPS)
|
||||
foreach(objlib_dep ${exe_OBJLIB_DEPS})
|
||||
target_sources(${exe_NAME} PRIVATE $<TARGET_OBJECTS:${objlib_dep}>)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(CMAKE_THREAD_LIBS_INIT)
|
||||
list(APPEND exe_LIB_DEPS ${CMAKE_THREAD_LIBS_INIT})
|
||||
endif()
|
||||
|
||||
if(BUILD_SHARED_LIBS AND (MSVC OR WIN32))
|
||||
target_compile_definitions(${exe_NAME} PRIVATE "DRACO_BUILDING_DLL=0")
|
||||
endif()
|
||||
|
||||
if(exe_LIB_DEPS)
|
||||
if(CMAKE_CXX_COMPILER_ID MATCHES "^Clang|^GNU")
|
||||
# Third party dependencies can introduce dependencies on system and test
|
||||
# libraries. Since the target created here is an executable, and CMake
|
||||
# does not provide a method of controlling order of link dependencies,
|
||||
# wrap all of the dependencies of this target in start/end group flags to
|
||||
# ensure that dependencies of third party targets can be resolved when
|
||||
# those dependencies happen to be resolved by dependencies of the current
|
||||
# target.
|
||||
# TODO(tomfinegan): For portability use LINK_GROUP with RESCAN instead of
|
||||
# directly (ab)using compiler/linker specific flags once CMake v3.24 is in
|
||||
# wider use. See:
|
||||
# https://cmake.org/cmake/help/latest/manual/cmake-generator-expressions.7.html#genex:LINK_GROUP
|
||||
list(INSERT exe_LIB_DEPS 0 -Wl,--start-group)
|
||||
list(APPEND exe_LIB_DEPS -Wl,--end-group)
|
||||
endif()
|
||||
target_link_libraries(${exe_NAME} PRIVATE ${exe_LIB_DEPS})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Creates a library target of the specified type. The target name is passed as a
|
||||
# parameter to the NAME argument, the type as a parameter to the TYPE argument,
|
||||
# and the sources passed as a parameter to the SOURCES argument:
|
||||
# draco_add_library(NAME <name> TYPE <type> SOURCES <sources> [optional args])
|
||||
#
|
||||
# Optional args:
|
||||
# cmake-format: off
|
||||
# - OUTPUT_NAME: Override output file basename. Target basename defaults to
|
||||
# NAME. OUTPUT_NAME is ignored when BUILD_SHARED_LIBS is enabled and CMake
|
||||
# is generating a build for which MSVC is true. This is to avoid output
|
||||
# basename collisions with DLL import libraries.
|
||||
# - TEST: Flag. Presence means treat library as a test.
|
||||
# - DEFINES: List of preprocessor macro definitions.
|
||||
# - INCLUDES: list of include directories for the target.
|
||||
# - COMPILE_FLAGS: list of compiler flags for the target.
|
||||
# - LINK_FLAGS: List of linker flags for the target.
|
||||
# - OBJLIB_DEPS: List of CMake object library target dependencies.
|
||||
# - LIB_DEPS: List of CMake library dependencies.
|
||||
# - PUBLIC_INCLUDES: List of include paths to export to dependents.
|
||||
# cmake-format: on
|
||||
#
|
||||
# Sources passed to the macro are added to the lists tracking draco sources:
|
||||
# cmake-format: off
|
||||
# - When TEST is specified sources are added to $draco_test_sources.
|
||||
# - Otherwise sources are added to $draco_sources.
|
||||
# cmake-format: on
|
||||
#
|
||||
# Targets passed to this macro are added to the lists tracking draco targets:
|
||||
# cmake-format: off
|
||||
# - Targets are always added to $draco_targets.
|
||||
# - When the TEST flag is specified, targets are added to
|
||||
# $draco_test_targets.
|
||||
# - When TEST is not specified:
|
||||
# - Libraries of type SHARED are added to $draco_dylib_targets.
|
||||
# - Libraries of type OBJECT are added to $draco_objlib_targets.
|
||||
# - Libraries of type STATIC are added to $draco_lib_targets.
|
||||
# cmake-format: on
|
||||
macro(draco_add_library)
|
||||
unset(lib_TEST)
|
||||
unset(lib_NAME)
|
||||
unset(lib_OUTPUT_NAME)
|
||||
unset(lib_TYPE)
|
||||
unset(lib_SOURCES)
|
||||
unset(lib_DEFINES)
|
||||
unset(lib_INCLUDES)
|
||||
unset(lib_COMPILE_FLAGS)
|
||||
unset(lib_LINK_FLAGS)
|
||||
unset(lib_OBJLIB_DEPS)
|
||||
unset(lib_LIB_DEPS)
|
||||
unset(lib_PUBLIC_INCLUDES)
|
||||
unset(lib_TARGET_PROPERTIES)
|
||||
set(optional_args TEST)
|
||||
set(single_value_args NAME OUTPUT_NAME TYPE)
|
||||
set(multi_value_args
|
||||
SOURCES
|
||||
DEFINES
|
||||
INCLUDES
|
||||
COMPILE_FLAGS
|
||||
LINK_FLAGS
|
||||
OBJLIB_DEPS
|
||||
LIB_DEPS
|
||||
PUBLIC_INCLUDES
|
||||
TARGET_PROPERTIES)
|
||||
|
||||
cmake_parse_arguments(lib "${optional_args}" "${single_value_args}"
|
||||
"${multi_value_args}" ${ARGN})
|
||||
|
||||
if(DRACO_VERBOSE GREATER 1)
|
||||
message(
|
||||
"--------- draco_add_library ---------\n"
|
||||
"lib_TEST=${lib_TEST}\n"
|
||||
"lib_NAME=${lib_NAME}\n"
|
||||
"lib_OUTPUT_NAME=${lib_OUTPUT_NAME}\n"
|
||||
"lib_TYPE=${lib_TYPE}\n"
|
||||
"lib_SOURCES=${lib_SOURCES}\n"
|
||||
"lib_DEFINES=${lib_DEFINES}\n"
|
||||
"lib_INCLUDES=${lib_INCLUDES}\n"
|
||||
"lib_COMPILE_FLAGS=${lib_COMPILE_FLAGS}\n"
|
||||
"lib_LINK_FLAGS=${lib_LINK_FLAGS}\n"
|
||||
"lib_OBJLIB_DEPS=${lib_OBJLIB_DEPS}\n"
|
||||
"lib_LIB_DEPS=${lib_LIB_DEPS}\n"
|
||||
"lib_PUBLIC_INCLUDES=${lib_PUBLIC_INCLUDES}\n"
|
||||
"---------------------------------------\n")
|
||||
endif()
|
||||
|
||||
if(NOT (lib_NAME AND lib_TYPE))
|
||||
message(FATAL_ERROR "draco_add_library: NAME and TYPE required.")
|
||||
endif()
|
||||
|
||||
list(APPEND draco_targets ${lib_NAME})
|
||||
if(lib_TEST)
|
||||
list(APPEND draco_test_targets ${lib_NAME})
|
||||
list(APPEND draco_test_sources ${lib_SOURCES})
|
||||
else()
|
||||
list(APPEND draco_sources ${lib_SOURCES})
|
||||
if(lib_TYPE STREQUAL MODULE)
|
||||
list(APPEND draco_module_targets ${lib_NAME})
|
||||
elseif(lib_TYPE STREQUAL OBJECT)
|
||||
list(APPEND draco_objlib_targets ${lib_NAME})
|
||||
elseif(lib_TYPE STREQUAL SHARED)
|
||||
list(APPEND draco_dylib_targets ${lib_NAME})
|
||||
elseif(lib_TYPE STREQUAL STATIC)
|
||||
list(APPEND draco_lib_targets ${lib_NAME})
|
||||
else()
|
||||
message(WARNING "draco_add_library: Unhandled type: ${lib_TYPE}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_library(${lib_NAME} ${lib_TYPE} ${lib_SOURCES})
|
||||
|
||||
target_compile_features(${lib_NAME} PUBLIC cxx_std_11)
|
||||
|
||||
target_include_directories(${lib_NAME} PUBLIC $<INSTALL_INTERFACE:include>)
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
# Enable PIC for all targets in shared configurations.
|
||||
set_target_properties(${lib_NAME} PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||
endif()
|
||||
|
||||
if(lib_SOURCES)
|
||||
draco_process_intrinsics_sources(TARGET ${lib_NAME} SOURCES ${lib_SOURCES})
|
||||
endif()
|
||||
|
||||
if(lib_OUTPUT_NAME)
|
||||
if(NOT (BUILD_SHARED_LIBS AND MSVC))
|
||||
set_target_properties(${lib_NAME} PROPERTIES OUTPUT_NAME
|
||||
${lib_OUTPUT_NAME})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(lib_DEFINES)
|
||||
target_compile_definitions(${lib_NAME} PRIVATE ${lib_DEFINES})
|
||||
endif()
|
||||
|
||||
if(lib_INCLUDES)
|
||||
target_include_directories(${lib_NAME} PRIVATE ${lib_INCLUDES})
|
||||
endif()
|
||||
|
||||
if(lib_PUBLIC_INCLUDES)
|
||||
target_include_directories(${lib_NAME} PUBLIC ${lib_PUBLIC_INCLUDES})
|
||||
endif()
|
||||
|
||||
if(lib_COMPILE_FLAGS OR DRACO_CXX_FLAGS)
|
||||
target_compile_options(${lib_NAME} PRIVATE ${lib_COMPILE_FLAGS}
|
||||
${DRACO_CXX_FLAGS})
|
||||
endif()
|
||||
|
||||
if(lib_LINK_FLAGS)
|
||||
set_target_properties(${lib_NAME} PROPERTIES LINK_FLAGS ${lib_LINK_FLAGS})
|
||||
endif()
|
||||
|
||||
if(lib_OBJLIB_DEPS)
|
||||
foreach(objlib_dep ${lib_OBJLIB_DEPS})
|
||||
target_sources(${lib_NAME} PRIVATE $<TARGET_OBJECTS:${objlib_dep}>)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
if(lib_LIB_DEPS)
|
||||
if(lib_TYPE STREQUAL STATIC)
|
||||
set(link_type PUBLIC)
|
||||
else()
|
||||
set(link_type PRIVATE)
|
||||
if(lib_TYPE STREQUAL SHARED AND CMAKE_CXX_COMPILER_ID MATCHES "Clang|GNU")
|
||||
# The draco shared object uses the static draco as input to turn it into
|
||||
# a shared object. Include everything from the static library in the
|
||||
# shared object.
|
||||
if(APPLE)
|
||||
list(INSERT lib_LIB_DEPS 0 -Wl,-force_load)
|
||||
else()
|
||||
list(INSERT lib_LIB_DEPS 0 -Wl,--whole-archive)
|
||||
list(APPEND lib_LIB_DEPS -Wl,--no-whole-archive)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
target_link_libraries(${lib_NAME} ${link_type} ${lib_LIB_DEPS})
|
||||
endif()
|
||||
|
||||
if(NOT MSVC AND lib_NAME MATCHES "^lib")
|
||||
# Non-MSVC generators prepend lib to static lib target file names. Libdraco
|
||||
# already includes lib in its name. Avoid naming output files liblib*.
|
||||
set_target_properties(${lib_NAME} PROPERTIES PREFIX "")
|
||||
endif()
|
||||
|
||||
if(NOT EMSCRIPTEN)
|
||||
# VERSION and SOVERSION as necessary
|
||||
if((lib_TYPE STREQUAL BUNDLE OR lib_TYPE STREQUAL SHARED) AND NOT MSVC)
|
||||
set_target_properties(
|
||||
${lib_NAME} PROPERTIES VERSION ${DRACO_SOVERSION}
|
||||
SOVERSION ${DRACO_SOVERSION_MAJOR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(BUILD_SHARED_LIBS AND (MSVC OR WIN32))
|
||||
if(lib_TYPE STREQUAL SHARED)
|
||||
target_compile_definitions(${lib_NAME} PRIVATE "DRACO_BUILDING_DLL=1")
|
||||
else()
|
||||
target_compile_definitions(${lib_NAME} PRIVATE "DRACO_BUILDING_DLL=0")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Determine if $lib_NAME is a header only target.
|
||||
unset(sources_list)
|
||||
if(lib_SOURCES)
|
||||
set(sources_list ${lib_SOURCES})
|
||||
list(FILTER sources_list INCLUDE REGEX cc$)
|
||||
endif()
|
||||
|
||||
if(NOT sources_list)
|
||||
if(NOT XCODE)
|
||||
# This is a header only target. Tell CMake the link language.
|
||||
set_target_properties(${lib_NAME} PROPERTIES LINKER_LANGUAGE CXX)
|
||||
else()
|
||||
# The Xcode generator ignores LINKER_LANGUAGE. Add a dummy cc file.
|
||||
draco_create_dummy_source_file(TARGET ${lib_NAME} BASENAME ${lib_NAME})
|
||||
endif()
|
||||
endif()
|
||||
endmacro()
|
||||
28
assimp/contrib/draco/cmake/draco_test_config.h.cmake
Normal file
28
assimp/contrib/draco/cmake/draco_test_config.h.cmake
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
// Copyright 2021 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.
|
||||
|
||||
#ifndef DRACO_TESTING_DRACO_TEST_CONFIG_H_
|
||||
#define DRACO_TESTING_DRACO_TEST_CONFIG_H_
|
||||
|
||||
// If this file is named draco_test_config.h.cmake:
|
||||
// This file is used as input at cmake generation time.
|
||||
|
||||
// If this file is named draco_test_config.h:
|
||||
// GENERATED FILE, DO NOT EDIT. SEE ABOVE.
|
||||
|
||||
#define DRACO_TEST_DATA_DIR "${DRACO_TEST_DATA_DIR}"
|
||||
#define DRACO_TEST_TEMP_DIR "${DRACO_TEST_TEMP_DIR}"
|
||||
#define DRACO_TEST_ROOT_DIR "${DRACO_TEST_ROOT_DIR}"
|
||||
|
||||
#endif // DRACO_TESTING_DRACO_TEST_CONFIG_H_
|
||||
173
assimp/contrib/draco/cmake/draco_tests.cmake
Normal file
173
assimp/contrib/draco/cmake/draco_tests.cmake
Normal file
|
|
@ -0,0 +1,173 @@
|
|||
# Copyright 2021 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_TESTS_CMAKE)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_DRACO_TESTS_CMAKE 1)
|
||||
|
||||
# The factory tests are in a separate target to avoid breaking tests that rely
|
||||
# on file I/O via the factories. The fake reader and writer implementations
|
||||
# interfere with normal file I/O function.
|
||||
set(draco_factory_test_sources
|
||||
"${draco_src_root}/io/file_reader_factory_test.cc"
|
||||
"${draco_src_root}/io/file_writer_factory_test.cc")
|
||||
|
||||
list(
|
||||
APPEND draco_test_common_sources
|
||||
"${draco_src_root}/core/draco_test_base.h"
|
||||
"${draco_src_root}/core/draco_test_utils.cc"
|
||||
"${draco_src_root}/core/draco_test_utils.h"
|
||||
"${draco_src_root}/core/status.cc")
|
||||
|
||||
list(
|
||||
APPEND
|
||||
draco_test_sources
|
||||
"${draco_src_root}/animation/keyframe_animation_encoding_test.cc"
|
||||
"${draco_src_root}/animation/keyframe_animation_test.cc"
|
||||
"${draco_src_root}/attributes/point_attribute_test.cc"
|
||||
"${draco_src_root}/compression/attributes/point_d_vector_test.cc"
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_canonicalized_transform_test.cc"
|
||||
"${draco_src_root}/compression/attributes/prediction_schemes/prediction_scheme_normal_octahedron_transform_test.cc"
|
||||
"${draco_src_root}/compression/attributes/sequential_integer_attribute_encoding_test.cc"
|
||||
"${draco_src_root}/compression/bit_coders/rans_coding_test.cc"
|
||||
"${draco_src_root}/compression/decode_test.cc"
|
||||
"${draco_src_root}/compression/encode_test.cc"
|
||||
"${draco_src_root}/compression/entropy/shannon_entropy_test.cc"
|
||||
"${draco_src_root}/compression/entropy/symbol_coding_test.cc"
|
||||
"${draco_src_root}/compression/mesh/mesh_edgebreaker_encoding_test.cc"
|
||||
"${draco_src_root}/compression/mesh/mesh_encoder_test.cc"
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_kd_tree_encoding_test.cc"
|
||||
"${draco_src_root}/compression/point_cloud/point_cloud_sequential_encoding_test.cc"
|
||||
"${draco_src_root}/core/buffer_bit_coding_test.cc"
|
||||
"${draco_src_root}/core/math_utils_test.cc"
|
||||
"${draco_src_root}/core/quantization_utils_test.cc"
|
||||
"${draco_src_root}/core/status_test.cc"
|
||||
"${draco_src_root}/core/vector_d_test.cc"
|
||||
"${draco_src_root}/io/file_reader_test_common.h"
|
||||
"${draco_src_root}/io/file_utils_test.cc"
|
||||
"${draco_src_root}/io/file_writer_utils_test.cc"
|
||||
"${draco_src_root}/io/stdio_file_reader_test.cc"
|
||||
"${draco_src_root}/io/stdio_file_writer_test.cc"
|
||||
"${draco_src_root}/io/obj_decoder_test.cc"
|
||||
"${draco_src_root}/io/obj_encoder_test.cc"
|
||||
"${draco_src_root}/io/ply_decoder_test.cc"
|
||||
"${draco_src_root}/io/ply_reader_test.cc"
|
||||
"${draco_src_root}/io/stl_decoder_test.cc"
|
||||
"${draco_src_root}/io/stl_encoder_test.cc"
|
||||
"${draco_src_root}/io/point_cloud_io_test.cc"
|
||||
"${draco_src_root}/mesh/corner_table_test.cc"
|
||||
"${draco_src_root}/mesh/mesh_are_equivalent_test.cc"
|
||||
"${draco_src_root}/mesh/mesh_cleanup_test.cc"
|
||||
"${draco_src_root}/mesh/triangle_soup_mesh_builder_test.cc"
|
||||
"${draco_src_root}/metadata/metadata_encoder_test.cc"
|
||||
"${draco_src_root}/metadata/metadata_test.cc"
|
||||
"${draco_src_root}/point_cloud/point_cloud_builder_test.cc"
|
||||
"${draco_src_root}/point_cloud/point_cloud_test.cc")
|
||||
|
||||
if(DRACO_TRANSCODER_SUPPORTED)
|
||||
list(
|
||||
APPEND draco_test_sources
|
||||
"${draco_src_root}/animation/animation_test.cc"
|
||||
"${draco_src_root}/io/gltf_decoder_test.cc"
|
||||
"${draco_src_root}/io/gltf_encoder_test.cc"
|
||||
"${draco_src_root}/io/gltf_utils_test.cc"
|
||||
"${draco_src_root}/io/gltf_test_helper.cc"
|
||||
"${draco_src_root}/io/gltf_test_helper.h"
|
||||
"${draco_src_root}/io/scene_io_test.cc"
|
||||
"${draco_src_root}/io/texture_io_test.cc"
|
||||
"${draco_src_root}/material/material_library_test.cc"
|
||||
"${draco_src_root}/material/material_test.cc"
|
||||
"${draco_src_root}/metadata/property_attribute_test.cc"
|
||||
"${draco_src_root}/metadata/property_table_test.cc"
|
||||
"${draco_src_root}/metadata/structural_metadata_test.cc"
|
||||
"${draco_src_root}/metadata/structural_metadata_schema_test.cc"
|
||||
"${draco_src_root}/scene/instance_array_test.cc"
|
||||
"${draco_src_root}/scene/light_test.cc"
|
||||
"${draco_src_root}/scene/mesh_group_test.cc"
|
||||
"${draco_src_root}/scene/scene_test.cc"
|
||||
"${draco_src_root}/scene/scene_are_equivalent_test.cc"
|
||||
"${draco_src_root}/scene/scene_utils_test.cc"
|
||||
"${draco_src_root}/scene/trs_matrix_test.cc"
|
||||
"${draco_src_root}/texture/texture_library_test.cc"
|
||||
"${draco_src_root}/texture/texture_map_test.cc"
|
||||
"${draco_src_root}/texture/texture_transform_test.cc")
|
||||
|
||||
endif()
|
||||
|
||||
macro(draco_setup_test_targets)
|
||||
if(DRACO_TESTS)
|
||||
draco_setup_googletest()
|
||||
|
||||
if(NOT (EXISTS ${draco_gtest_all} AND EXISTS ${draco_gtest_main}))
|
||||
message(FATAL_ERROR "googletest missing, run git submodule update --init")
|
||||
endif()
|
||||
|
||||
list(APPEND draco_test_defines GTEST_HAS_PTHREAD=0)
|
||||
|
||||
draco_add_library(
|
||||
TEST
|
||||
NAME draco_test_common
|
||||
TYPE STATIC
|
||||
SOURCES ${draco_test_common_sources}
|
||||
DEFINES ${draco_defines} ${draco_test_defines}
|
||||
INCLUDES ${draco_test_include_paths})
|
||||
|
||||
draco_add_library(
|
||||
TEST
|
||||
NAME draco_gtest
|
||||
TYPE STATIC
|
||||
SOURCES ${draco_gtest_all}
|
||||
DEFINES ${draco_defines} ${draco_test_defines}
|
||||
INCLUDES ${draco_test_include_paths})
|
||||
|
||||
draco_add_library(
|
||||
TEST
|
||||
NAME draco_gtest_main
|
||||
TYPE STATIC
|
||||
SOURCES ${draco_gtest_main}
|
||||
DEFINES ${draco_defines} ${draco_test_defines}
|
||||
INCLUDES ${draco_test_include_paths})
|
||||
|
||||
set(DRACO_TEST_DATA_DIR "${draco_root}/testdata")
|
||||
set(DRACO_TEST_TEMP_DIR "${draco_build}/draco_test_temp")
|
||||
set(DRACO_TEST_ROOT_DIR "${draco_root}")
|
||||
file(MAKE_DIRECTORY "${DRACO_TEST_TEMP_DIR}")
|
||||
|
||||
# Sets DRACO_TEST_DATA_DIR and DRACO_TEST_TEMP_DIR.
|
||||
configure_file("${draco_root}/cmake/draco_test_config.h.cmake"
|
||||
"${draco_build}/testing/draco_test_config.h")
|
||||
|
||||
# Create the test targets.
|
||||
draco_add_executable(
|
||||
TEST
|
||||
NAME draco_tests
|
||||
SOURCES ${draco_test_sources}
|
||||
DEFINES ${draco_defines} ${draco_test_defines}
|
||||
INCLUDES ${draco_test_include_paths}
|
||||
LIB_DEPS ${draco_dependency} draco_gtest draco_gtest_main
|
||||
draco_test_common)
|
||||
|
||||
draco_add_executable(
|
||||
TEST
|
||||
NAME draco_factory_tests
|
||||
SOURCES ${draco_factory_test_sources}
|
||||
DEFINES ${draco_defines} ${draco_test_defines}
|
||||
INCLUDES ${draco_test_include_paths}
|
||||
LIB_DEPS ${draco_dependency} draco_gtest draco_gtest_main
|
||||
draco_test_common)
|
||||
|
||||
|
||||
endif()
|
||||
endmacro()
|
||||
79
assimp/contrib/draco/cmake/draco_variables.cmake
Normal file
79
assimp/contrib/draco/cmake/draco_variables.cmake
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
# Copyright 2021 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_VARIABLES_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_DRACO_VARIABLES_CMAKE_
|
||||
set(DRACO_CMAKE_DRACO_VARIABLES_CMAKE_ 1)
|
||||
|
||||
# Halts generation when $variable_name does not refer to a directory that
|
||||
# exists.
|
||||
macro(draco_variable_must_be_directory variable_name)
|
||||
if("${variable_name}" STREQUAL "")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"Empty variable_name passed to draco_variable_must_be_directory.")
|
||||
endif()
|
||||
|
||||
if("${${variable_name}}" STREQUAL "")
|
||||
message(
|
||||
FATAL_ERROR "Empty variable ${variable_name} is required to build draco.")
|
||||
endif()
|
||||
|
||||
if(NOT IS_DIRECTORY "${${variable_name}}")
|
||||
message(
|
||||
FATAL_ERROR
|
||||
"${variable_name}, which is ${${variable_name}}, does not refer to a\n"
|
||||
"directory.")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# Adds $var_name to the tracked variables list.
|
||||
macro(draco_track_configuration_variable var_name)
|
||||
if(DRACO_VERBOSE GREATER 2)
|
||||
message("---- draco_track_configuration_variable ----\n"
|
||||
"var_name=${var_name}\n"
|
||||
"----------------------------------------------\n")
|
||||
endif()
|
||||
|
||||
list(APPEND draco_configuration_variables ${var_name})
|
||||
list(REMOVE_DUPLICATES draco_configuration_variables)
|
||||
endmacro()
|
||||
|
||||
# Logs current C++ and executable linker flags via the CMake message command.
|
||||
macro(draco_dump_cmake_flag_variables)
|
||||
unset(flag_variables)
|
||||
list(APPEND flag_variables "CMAKE_CXX_FLAGS_INIT" "CMAKE_CXX_FLAGS"
|
||||
"CMAKE_EXE_LINKER_FLAGS_INIT" "CMAKE_EXE_LINKER_FLAGS")
|
||||
if(CMAKE_BUILD_TYPE)
|
||||
list(
|
||||
APPEND flag_variables
|
||||
"CMAKE_BUILD_TYPE"
|
||||
"CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}_INIT"
|
||||
"CMAKE_CXX_FLAGS_${CMAKE_BUILD_TYPE}"
|
||||
"CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE}_INIT"
|
||||
"CMAKE_EXE_LINKER_FLAGS_${CMAKE_BUILD_TYPE}")
|
||||
endif()
|
||||
foreach(flag_variable ${flag_variables})
|
||||
message("${flag_variable}:${${flag_variable}}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
# Dumps the variables tracked in $draco_configuration_variables via the CMake
|
||||
# message command.
|
||||
macro(draco_dump_tracked_configuration_variables)
|
||||
foreach(config_variable ${draco_configuration_variables})
|
||||
message("${config_variable}:${${config_variable}}")
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
|
@ -0,0 +1,28 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_AARCH64_LINUX_GNU_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_TOOLCHAINS_AARCH64_LINUX_GNU_CMAKE_
|
||||
set(DRACO_CMAKE_TOOLCHAINS_AARCH64_LINUX_GNU_CMAKE_ 1)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
|
||||
if("${CROSS}" STREQUAL "")
|
||||
set(CROSS aarch64-linux-gnu-)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||
set(CMAKE_CXX_FLAGS_INIT "-march=armv8-a")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "aarch64")
|
||||
|
|
@ -0,0 +1,37 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ANDROID_NDK_COMMON_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ANDROID_NDK_COMMON_CMAKE_ 1)
|
||||
|
||||
# Toolchain files do not have access to cached variables:
|
||||
# https://gitlab.kitware.com/cmake/cmake/issues/16170. Set an intermediate
|
||||
# environment variable when loaded the first time.
|
||||
if(DRACO_ANDROID_NDK_PATH)
|
||||
set(ENV{DRACO_ANDROID_NDK_PATH} "${DRACO_ANDROID_NDK_PATH}")
|
||||
else()
|
||||
set(DRACO_ANDROID_NDK_PATH "$ENV{DRACO_ANDROID_NDK_PATH}")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_NAME Android)
|
||||
|
||||
if(NOT CMAKE_ANDROID_STL_TYPE)
|
||||
set(CMAKE_ANDROID_STL_TYPE c++_static)
|
||||
endif()
|
||||
|
||||
if(NOT CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION)
|
||||
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang)
|
||||
endif()
|
||||
53
assimp/contrib/draco/cmake/toolchains/android.cmake
Normal file
53
assimp/contrib/draco/cmake/toolchains/android.cmake
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ANDROID_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_TOOLCHAINS_ANDROID_CMAKE_
|
||||
|
||||
# Additional ANDROID_* settings are available, see:
|
||||
# https://developer.android.com/ndk/guides/cmake#variables
|
||||
|
||||
if(NOT ANDROID_PLATFORM)
|
||||
set(ANDROID_PLATFORM android-21)
|
||||
endif()
|
||||
|
||||
# Choose target architecture with:
|
||||
#
|
||||
# -DANDROID_ABI={armeabi-v7a,armeabi-v7a with NEON,arm64-v8a,x86,x86_64}
|
||||
if(NOT ANDROID_ABI)
|
||||
set(ANDROID_ABI arm64-v8a)
|
||||
endif()
|
||||
|
||||
# Force arm mode for 32-bit arm targets (instead of the default thumb) to
|
||||
# improve performance.
|
||||
if(ANDROID_ABI MATCHES "^armeabi" AND NOT ANDROID_ARM_MODE)
|
||||
set(ANDROID_ARM_MODE arm)
|
||||
endif()
|
||||
|
||||
# Toolchain files do not have access to cached variables:
|
||||
# https://gitlab.kitware.com/cmake/cmake/issues/16170. Set an intermediate
|
||||
# environment variable when loaded the first time.
|
||||
if(DRACO_ANDROID_NDK_PATH)
|
||||
set(ENV{DRACO_ANDROID_NDK_PATH} "${DRACO_ANDROID_NDK_PATH}")
|
||||
else()
|
||||
set(DRACO_ANDROID_NDK_PATH "$ENV{DRACO_ANDROID_NDK_PATH}")
|
||||
endif()
|
||||
|
||||
if(NOT DRACO_ANDROID_NDK_PATH)
|
||||
message(FATAL_ERROR "DRACO_ANDROID_NDK_PATH not set.")
|
||||
return()
|
||||
endif()
|
||||
|
||||
include("${DRACO_ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake")
|
||||
29
assimp/contrib/draco/cmake/toolchains/arm-ios-common.cmake
Normal file
29
assimp/contrib/draco/cmake/toolchains/arm-ios-common.cmake
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARM_IOS_COMMON_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_ARM_IOS_COMMON_CMAKE_ 1)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME "Darwin")
|
||||
if(CMAKE_OSX_SDK)
|
||||
set(CMAKE_OSX_SYSROOT ${CMAKE_OSX_SDK})
|
||||
else()
|
||||
set(CMAKE_OSX_SYSROOT iphoneos)
|
||||
endif()
|
||||
set(CMAKE_C_COMPILER clang)
|
||||
set(CMAKE_C_COMPILER_ARG1 "-arch ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
set(CMAKE_CXX_COMPILER clang++)
|
||||
set(CMAKE_CXX_COMPILER_ARG1 "-arch ${CMAKE_SYSTEM_PROCESSOR}")
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARM_LINUX_GNUEABIHF_CMAKE_)
|
||||
return()
|
||||
endif() # DRACO_CMAKE_TOOLCHAINS_ARM_LINUX_GNUEABIHF_CMAKE_
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARM_LINUX_GNUEABIHF_CMAKE_ 1)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
|
||||
if("${CROSS}" STREQUAL "")
|
||||
set(CROSS arm-linux-gnueabihf-)
|
||||
endif()
|
||||
|
||||
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||
set(CMAKE_CXX_FLAGS_INIT "-march=armv7-a -marm")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "armv7")
|
||||
set(DRACO_NEON_INTRINSICS_FLAG "-mfpu=neon")
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARM64_ANDROID_NDK_LIBCPP_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARM64_ANDROID_NDK_LIBCPP_CMAKE_ 1)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake")
|
||||
|
||||
if(NOT ANDROID_PLATFORM)
|
||||
set(ANROID_PLATFORM android-21)
|
||||
endif()
|
||||
|
||||
if(NOT ANDROID_ABI)
|
||||
set(ANDROID_ABI arm64-v8a)
|
||||
endif()
|
||||
|
||||
include("${DRACO_ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake")
|
||||
27
assimp/contrib/draco/cmake/toolchains/arm64-ios.cmake
Normal file
27
assimp/contrib/draco/cmake/toolchains/arm64-ios.cmake
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARM64_IOS_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARM64_IOS_CMAKE_ 1)
|
||||
|
||||
if(XCODE)
|
||||
message(FATAL_ERROR "This toolchain does not support Xcode.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR "arm64")
|
||||
set(CMAKE_OSX_ARCHITECTURES "arm64")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake")
|
||||
32
assimp/contrib/draco/cmake/toolchains/arm64-linux-gcc.cmake
Normal file
32
assimp/contrib/draco/cmake/toolchains/arm64-linux-gcc.cmake
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARM64_LINUX_GCC_CMAKE_ 1)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
|
||||
if("${CROSS}" STREQUAL "")
|
||||
# Default the cross compiler prefix to something known to work.
|
||||
set(CROSS aarch64-linux-gnu-)
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||
set(AS_EXECUTABLE ${CROSS}as)
|
||||
set(CMAKE_C_COMPILER_ARG1 "-march=armv8-a")
|
||||
set(CMAKE_CXX_COMPILER_ARG1 "-march=armv8-a")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "arm64")
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARMV7_ANDROID_NDK_LIBCPP_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARMV7_ANDROID_NDK_LIBCPP_CMAKE_ 1)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake")
|
||||
|
||||
if(NOT ANDROID_PLATFORM)
|
||||
set(ANDROID_PLATFORM android-18)
|
||||
endif()
|
||||
|
||||
if(NOT ANDROID_ABI)
|
||||
set(ANDROID_ABI armeabi-v7a)
|
||||
endif()
|
||||
|
||||
include("${DRACO_ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake")
|
||||
27
assimp/contrib/draco/cmake/toolchains/armv7-ios.cmake
Normal file
27
assimp/contrib/draco/cmake/toolchains/armv7-ios.cmake
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARMV7_IOS_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARMV7_IOS_CMAKE_ 1)
|
||||
|
||||
if(XCODE)
|
||||
message(FATAL_ERROR "This toolchain does not support Xcode.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR "armv7")
|
||||
set(CMAKE_OSX_ARCHITECTURES "armv7")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake")
|
||||
38
assimp/contrib/draco/cmake/toolchains/armv7-linux-gcc.cmake
Normal file
38
assimp/contrib/draco/cmake/toolchains/armv7-linux-gcc.cmake
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARMV7_LINUX_GCC_CMAKE_ 1)
|
||||
|
||||
set(CMAKE_SYSTEM_NAME "Linux")
|
||||
|
||||
if("${CROSS}" STREQUAL "")
|
||||
# Default the cross compiler prefix to something known to work.
|
||||
set(CROSS arm-linux-gnueabihf-)
|
||||
endif()
|
||||
|
||||
if(NOT ${CROSS} MATCHES hf-$)
|
||||
set(DRACO_EXTRA_TOOLCHAIN_FLAGS "-mfloat-abi=softfp")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER ${CROSS}gcc)
|
||||
set(CMAKE_CXX_COMPILER ${CROSS}g++)
|
||||
set(AS_EXECUTABLE ${CROSS}as)
|
||||
set(CMAKE_C_COMPILER_ARG1
|
||||
"-march=armv7-a -mfpu=neon ${DRACO_EXTRA_TOOLCHAIN_FLAGS}")
|
||||
set(CMAKE_CXX_COMPILER_ARG1
|
||||
"-march=armv7-a -mfpu=neon ${DRACO_EXTRA_TOOLCHAIN_FLAGS}")
|
||||
set(CMAKE_SYSTEM_PROCESSOR "armv7")
|
||||
27
assimp/contrib/draco/cmake/toolchains/armv7s-ios.cmake
Normal file
27
assimp/contrib/draco/cmake/toolchains/armv7s-ios.cmake
Normal file
|
|
@ -0,0 +1,27 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_ARMV7S_IOS_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_ARMV7S_IOS_CMAKE_ 1)
|
||||
|
||||
if(XCODE)
|
||||
message(FATAL_ERROR "This toolchain does not support Xcode.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR "armv7s")
|
||||
set(CMAKE_OSX_ARCHITECTURES "armv7s")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake")
|
||||
28
assimp/contrib/draco/cmake/toolchains/i386-ios.cmake
Normal file
28
assimp/contrib/draco/cmake/toolchains/i386-ios.cmake
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_i386_IOS_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_i386_IOS_CMAKE_ 1)
|
||||
|
||||
if(XCODE)
|
||||
message(FATAL_ERROR "This toolchain does not support Xcode.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR "i386")
|
||||
set(CMAKE_OSX_ARCHITECTURES "i386")
|
||||
set(CMAKE_OSX_SDK "iphonesimulator")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake")
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_X86_ANDROID_NDK_LIBCPP_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_X86_ANDROID_NDK_LIBCPP_CMAKE_ 1)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake")
|
||||
|
||||
if(NOT ANDROID_PLATFORM)
|
||||
set(ANDROID_PLATFORM android-18)
|
||||
endif()
|
||||
|
||||
if(NOT ANDROID_ABI)
|
||||
set(ANDROID_ABI x86)
|
||||
endif()
|
||||
|
||||
include("${DRACO_ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake")
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_X86_64_ANDROID_NDK_LIBCPP_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_X86_64_ANDROID_NDK_LIBCPP_CMAKE_ 1)
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/android-ndk-common.cmake")
|
||||
|
||||
if(NOT ANDROID_PLATFORM)
|
||||
set(ANDROID_PLATFORM android-21)
|
||||
endif()
|
||||
|
||||
if(NOT ANDROID_ABI)
|
||||
set(ANDROID_ABI x86_64)
|
||||
endif()
|
||||
|
||||
include("${DRACO_ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake")
|
||||
28
assimp/contrib/draco/cmake/toolchains/x86_64-ios.cmake
Normal file
28
assimp/contrib/draco/cmake/toolchains/x86_64-ios.cmake
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Copyright 2021 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_TOOLCHAINS_X86_64_IOS_CMAKE_)
|
||||
return()
|
||||
endif()
|
||||
set(DRACO_CMAKE_TOOLCHAINS_X86_64_IOS_CMAKE_ 1)
|
||||
|
||||
if(XCODE)
|
||||
message(FATAL_ERROR "This toolchain does not support Xcode.")
|
||||
endif()
|
||||
|
||||
set(CMAKE_SYSTEM_PROCESSOR "x86_64")
|
||||
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||
set(CMAKE_OSX_SDK "iphonesimulator")
|
||||
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/arm-ios-common.cmake")
|
||||
Loading…
Add table
Add a link
Reference in a new issue