mirror of
https://git.mirrors.martin98.com/https://github.com/google/draco
synced 2025-08-11 16:09:02 +08:00
Add more CMake helper scripts plus more CMake updates.
- Disallow in-tree CMake runs. - Adds back CONTRIBUTING.md. This fixes #130 and hopefully addresses #163.
This commit is contained in:
parent
5c8b21d610
commit
da71b48359
@ -5,6 +5,14 @@ set(draco_root "${CMAKE_CURRENT_SOURCE_DIR}")
|
|||||||
set(draco_src_root "${draco_root}/src/draco")
|
set(draco_src_root "${draco_root}/src/draco")
|
||||||
set(draco_build_dir "${CMAKE_BINARY_DIR}")
|
set(draco_build_dir "${CMAKE_BINARY_DIR}")
|
||||||
|
|
||||||
|
if ("${draco_root}" STREQUAL "${draco_build_dir}")
|
||||||
|
message(FATAL_ERROR
|
||||||
|
"Building from within the Draco source tree is not supported.\n"
|
||||||
|
"Hint: mkdir -p ../draco_build && cd ../draco_build\n"
|
||||||
|
"Run cmake from there.")
|
||||||
|
endif ()
|
||||||
|
|
||||||
|
include(CMakePackageConfigHelpers)
|
||||||
include("${draco_root}/cmake/compiler_flags.cmake")
|
include("${draco_root}/cmake/compiler_flags.cmake")
|
||||||
include("${draco_root}/cmake/util.cmake")
|
include("${draco_root}/cmake/util.cmake")
|
||||||
|
|
||||||
@ -772,22 +780,12 @@ else ()
|
|||||||
set_target_properties(draco PROPERTIES SOVERSION 1)
|
set_target_properties(draco PROPERTIES SOVERSION 1)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
extract_version_string("${draco_src_root}/core/draco_version.h" draco_version)
|
||||||
|
|
||||||
if (NOT MSVC)
|
if (NOT MSVC)
|
||||||
# Generate draco.pc.
|
# Generate draco.pc.
|
||||||
|
|
||||||
# Extract the version string.
|
|
||||||
file(STRINGS "${draco_src_root}/core/draco_version.h" draco_version
|
|
||||||
REGEX "kDracoVersion\\[\\]")
|
|
||||||
list(GET draco_version 0 draco_version)
|
|
||||||
string(REPLACE "static const char kDracoVersion[] = " "" draco_version
|
|
||||||
"${draco_version}")
|
|
||||||
string(REPLACE ";" "" draco_version "${draco_version}")
|
|
||||||
string(REPLACE "\"" "" draco_version "${draco_version}")
|
|
||||||
|
|
||||||
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
set(prefix "${CMAKE_INSTALL_PREFIX}")
|
||||||
set(pkgconfig_file "${draco_build_dir}/draco.pc")
|
set(pkgconfig_file "${draco_build_dir}/draco.pc")
|
||||||
|
|
||||||
# Write aom.pc.
|
|
||||||
file(WRITE "${pkgconfig_file}" "# draco pkg-config.\n")
|
file(WRITE "${pkgconfig_file}" "# draco pkg-config.\n")
|
||||||
file(APPEND "${pkgconfig_file}" "prefix=${prefix}\n")
|
file(APPEND "${pkgconfig_file}" "prefix=${prefix}\n")
|
||||||
file(APPEND "${pkgconfig_file}" "exec_prefix=${prefix}/bin\n")
|
file(APPEND "${pkgconfig_file}" "exec_prefix=${prefix}/bin\n")
|
||||||
@ -836,8 +834,41 @@ else ()
|
|||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
|
DESTINATION "${CMAKE_INSTALL_PREFIX}/lib")
|
||||||
install(TARGETS draco_decoder draco_encoder DESTINATION
|
install(TARGETS draco_decoder draco_encoder DESTINATION
|
||||||
"${CMAKE_INSTALL_PREFIX}/bin")
|
"${CMAKE_INSTALL_PREFIX}/bin")
|
||||||
install(FILES "${draco_root}/cmake/FindDraco.cmake"
|
|
||||||
DESTINATION "${CMAKE_INSTALL_PREFIX}/include/draco/cmake")
|
# Generate a CMake config file.
|
||||||
|
set(draco_include_install_dir "include/draco")
|
||||||
|
set(draco_lib_install_dir "lib")
|
||||||
|
set(draco_script_install_dir
|
||||||
|
"${CMAKE_INSTALL_PREFIX}/${draco_lib_install_dir}/draco/cmake")
|
||||||
|
set(draco_config_in_file "${draco_root}/cmake/DracoConfig.cmake")
|
||||||
|
set(draco_config_out_file "${draco_build_dir}/DracoConfig.cmake")
|
||||||
|
|
||||||
|
configure_package_config_file(
|
||||||
|
"${draco_config_in_file}"
|
||||||
|
"${draco_config_out_file}"
|
||||||
|
NO_CHECK_REQUIRED_COMPONENTS_MACRO
|
||||||
|
INSTALL_DESTINATION "${draco_lib_install_dir}/draco/cmake"
|
||||||
|
PATH_VARS draco_include_install_dir draco_lib_install_dir)
|
||||||
|
write_basic_package_version_file(
|
||||||
|
"${draco_build_dir}/DracoConfigVersion.cmake"
|
||||||
|
VERSION ${draco_version}
|
||||||
|
COMPATIBILITY SameMajorVersion)
|
||||||
|
|
||||||
|
# Read in the config file and rewrite it with a version string included.
|
||||||
|
file(STRINGS "${draco_config_out_file}" draco_config_strings)
|
||||||
|
file(WRITE "${draco_config_out_file}"
|
||||||
|
"set(draco_VERSION \"${draco_version}\")\n")
|
||||||
|
foreach (config_string ${draco_config_strings})
|
||||||
|
file(APPEND "${draco_config_out_file}" "${config_string}\n")
|
||||||
|
endforeach ()
|
||||||
|
|
||||||
|
# Add install rules for CMake helper scripts.
|
||||||
|
set(draco_cmake_helper_scripts
|
||||||
|
"${draco_root}/cmake/FindDraco.cmake"
|
||||||
|
"${draco_build_dir}/DracoConfig.cmake"
|
||||||
|
"${draco_build_dir}/DracoConfigVersion.cmake")
|
||||||
|
install(FILES ${draco_cmake_helper_scripts}
|
||||||
|
DESTINATION "${draco_script_install_dir}")
|
||||||
|
|
||||||
# Some generators complain about unknown link language for header only
|
# Some generators complain about unknown link language for header only
|
||||||
# targets. Silence the harmless warnings/errors with some dummy source files.
|
# targets. Silence the harmless warnings/errors with some dummy source files.
|
||||||
|
27
CONTRIBUTING.md
Normal file
27
CONTRIBUTING.md
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
Want to contribute? Great! First, read this page (including the small print at the end).
|
||||||
|
|
||||||
|
### Before you contribute
|
||||||
|
Before we can use your code, you must sign the
|
||||||
|
[Google Individual Contributor License Agreement]
|
||||||
|
(https://cla.developers.google.com/about/google-individual)
|
||||||
|
(CLA), which you can do online. The CLA is necessary mainly because you own the
|
||||||
|
copyright to your changes, even after your contribution becomes part of our
|
||||||
|
codebase, so we need your permission to use and distribute your code. We also
|
||||||
|
need to be sure of various other things—for instance that you'll tell us if you
|
||||||
|
know that your code infringes on other people's patents. You don't have to sign
|
||||||
|
the CLA until after you've submitted your code for review and a member has
|
||||||
|
approved it, but you must do it before we can put your code into our codebase.
|
||||||
|
Before you start working on a larger contribution, you should get in touch with
|
||||||
|
us first through the issue tracker with your idea so that we can help out and
|
||||||
|
possibly guide you. Coordinating up front makes it much easier to avoid
|
||||||
|
frustration later on.
|
||||||
|
|
||||||
|
### Code reviews
|
||||||
|
All submissions, including submissions by project members, require review. We
|
||||||
|
use GitHub pull requests for this purpose.
|
||||||
|
|
||||||
|
### The small print
|
||||||
|
Contributions made by corporations are covered by a different agreement than
|
||||||
|
the one above, the
|
||||||
|
[Software Grant and Corporate Contributor License Agreement]
|
||||||
|
(https://cla.developers.google.com/about/google-corporate).
|
3
cmake/DracoConfig.cmake
Normal file
3
cmake/DracoConfig.cmake
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
@PACKAGE_INIT@
|
||||||
|
set_and_check(draco_INCLUDE_DIR "@PACKAGE_draco_include_install_dir@")
|
||||||
|
set_and_check(draco_LIBRARY_DIR "@PACKAGE_draco_lib_install_dir@")
|
@ -1,58 +1,58 @@
|
|||||||
# FindDraco
|
# Finddraco
|
||||||
#
|
#
|
||||||
# Locates Draco and sets the following variables:
|
# Locates draco and sets the following variables:
|
||||||
#
|
#
|
||||||
# Drace_FOUND
|
# draco_FOUND
|
||||||
# Draco_INCLUDE_DIRS
|
# draco_INCLUDE_DIRS
|
||||||
# Draco_LIBARY_DIRS
|
# draco_LIBARY_DIRS
|
||||||
# Draco_LIBRARIES
|
# draco_LIBRARIES
|
||||||
# Draco_VERSION_STRING
|
# draco_VERSION_STRING
|
||||||
#
|
#
|
||||||
# Draco_FOUND is set to YES only when all other variables are successfully
|
# draco_FOUND is set to YES only when all other variables are successfully
|
||||||
# configured.
|
# configured.
|
||||||
|
|
||||||
unset(Draco_FOUND)
|
unset(draco_FOUND)
|
||||||
unset(Draco_INCLUDE_DIRS)
|
unset(draco_INCLUDE_DIRS)
|
||||||
unset(Draco_LIBRARY_DIRS)
|
unset(draco_LIBRARY_DIRS)
|
||||||
unset(Draco_LIBRARIES)
|
unset(draco_LIBRARIES)
|
||||||
unset(Draco_VERSION_STRING)
|
unset(draco_VERSION_STRING)
|
||||||
|
|
||||||
mark_as_advanced(Draco_FOUND)
|
mark_as_advanced(draco_FOUND)
|
||||||
mark_as_advanced(Draco_INCLUDE_DIRS)
|
mark_as_advanced(draco_INCLUDE_DIRS)
|
||||||
mark_as_advanced(Draco_LIBRARY_DIRS)
|
mark_as_advanced(draco_LIBRARY_DIRS)
|
||||||
mark_as_advanced(Draco_LIBRARIES)
|
mark_as_advanced(draco_LIBRARIES)
|
||||||
mark_as_advanced(Draco_VERSION_STRING)
|
mark_as_advanced(draco_VERSION_STRING)
|
||||||
|
|
||||||
set(Draco_version_file_no_prefix "draco/src/draco/core/draco_version.h")
|
set(draco_version_file_no_prefix "draco/src/draco/core/draco_version.h")
|
||||||
|
|
||||||
# Set Draco_INCLUDE_DIRS
|
# Set draco_INCLUDE_DIRS
|
||||||
find_path(Draco_INCLUDE_DIRS NAMES "${Draco_version_file_no_prefix}")
|
find_path(draco_INCLUDE_DIRS NAMES "${draco_version_file_no_prefix}")
|
||||||
|
|
||||||
# Extract the version string from draco_version.h.
|
# Extract the version string from draco_version.h.
|
||||||
if (Draco_INCLUDE_DIRS)
|
if (draco_INCLUDE_DIRS)
|
||||||
set(Draco_version_file
|
set(draco_version_file
|
||||||
"${Draco_INCLUDE_DIRS}/draco/src/draco/core/draco_version.h")
|
"${draco_INCLUDE_DIRS}/draco/src/draco/core/draco_version.h")
|
||||||
file(STRINGS "${Draco_version_file}" draco_version
|
file(STRINGS "${draco_version_file}" draco_version
|
||||||
REGEX "kDracoVersion")
|
REGEX "kdracoVersion")
|
||||||
list(GET draco_version 0 draco_version)
|
list(GET draco_version 0 draco_version)
|
||||||
string(REPLACE "static const char kDracoVersion[] = " "" draco_version
|
string(REPLACE "static const char kdracoVersion[] = " "" draco_version
|
||||||
"${draco_version}")
|
"${draco_version}")
|
||||||
string(REPLACE ";" "" draco_version "${draco_version}")
|
string(REPLACE ";" "" draco_version "${draco_version}")
|
||||||
string(REPLACE "\"" "" draco_version "${draco_version}")
|
string(REPLACE "\"" "" draco_version "${draco_version}")
|
||||||
set(Draco_VERSION_STRING ${draco_version})
|
set(draco_VERSION_STRING ${draco_version})
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Find the library.
|
# Find the library.
|
||||||
if (BUILD_SHARED_LIBS)
|
if (BUILD_SHARED_LIBS)
|
||||||
find_library(Draco_LIBRARIES NAMES draco.dll libdraco.dylib libdraco.so)
|
find_library(draco_LIBRARIES NAMES draco.dll libdraco.dylib libdraco.so)
|
||||||
else ()
|
else ()
|
||||||
find_library(Draco_LIBRARIES NAMES draco.lib libdraco.a)
|
find_library(draco_LIBRARIES NAMES draco.lib libdraco.a)
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
# Store path to library.
|
# Store path to library.
|
||||||
get_filename_component(Draco_LIBRARY_DIRS ${Draco_LIBRARIES} DIRECTORY)
|
get_filename_component(draco_LIBRARY_DIRS ${draco_LIBRARIES} DIRECTORY)
|
||||||
|
|
||||||
if (Draco_INCLUDE_DIRS AND Draco_LIBRARY_DIRS AND Draco_LIBRARIES AND
|
if (draco_INCLUDE_DIRS AND draco_LIBRARY_DIRS AND draco_LIBRARIES AND
|
||||||
Draco_VERSION_STRING)
|
draco_VERSION_STRING)
|
||||||
set(Draco_FOUND YES)
|
set(draco_FOUND YES)
|
||||||
endif ()
|
endif ()
|
||||||
|
@ -16,5 +16,15 @@ function (add_dummy_source_file_to_target target_name extension)
|
|||||||
target_sources(${target_name} PRIVATE ${dummy_source_file})
|
target_sources(${target_name} PRIVATE ${dummy_source_file})
|
||||||
endfunction ()
|
endfunction ()
|
||||||
|
|
||||||
|
function (extract_version_string version_file version_string_out_var)
|
||||||
|
file(STRINGS "${version_file}" draco_version REGEX "kDracoVersion")
|
||||||
|
list(GET draco_version 0 draco_version)
|
||||||
|
string(REPLACE "static const char kDracoVersion[] = " "" draco_version
|
||||||
|
"${draco_version}")
|
||||||
|
string(REPLACE ";" "" draco_version "${draco_version}")
|
||||||
|
string(REPLACE "\"" "" draco_version "${draco_version}")
|
||||||
|
set("${version_string_out_var}" "${draco_version}" PARENT_SCOPE)
|
||||||
|
endfunction ()
|
||||||
|
|
||||||
endif() # DRACO_CMAKE_UTIL_CMAKE_
|
endif() # DRACO_CMAKE_UTIL_CMAKE_
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user