Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'extern/draco/dracoenc/cmake/draco_features.cmake')
-rw-r--r--extern/draco/dracoenc/cmake/draco_features.cmake57
1 files changed, 57 insertions, 0 deletions
diff --git a/extern/draco/dracoenc/cmake/draco_features.cmake b/extern/draco/dracoenc/cmake/draco_features.cmake
new file mode 100644
index 00000000000..057b0b07ecd
--- /dev/null
+++ b/extern/draco/dracoenc/cmake/draco_features.cmake
@@ -0,0 +1,57 @@
+if (NOT DRACO_CMAKE_DRACO_FEATURES_CMAKE_)
+set(DRACO_CMAKE_DRACO_FEATURES_CMAKE_ 1)
+
+set(draco_features_file_name "${draco_build_dir}/draco/draco_features.h")
+set(draco_features_list)
+
+# 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}"
+ "// 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}" "#define ${feature}\n")
+ endforeach ()
+
+ file(APPEND "${draco_features_file_name}" "\n#endif // DRACO_FEATURES_H_")
+endfunction ()
+
+endif () # DRACO_CMAKE_DRACO_FEATURES_CMAKE_