projects/aports·blob master · refs

149 lines · 5.0 KiB

1From: =?utf-8?q?Timo_R=C3=B6hling?= <[email protected]>
2Date: Tue, 31 Mar 2020 17:05:46 +0200
3Subject: Fix build system
4
5Forwarded: not-needed
6---
7 CMakeLists.txt | 94 ++++++++++++++++++++-----------------------
8 cmake/TinyGLTFConfig.cmake.in | 8 +++-
9 tiny_gltf.cpp | 3 ++
10 3 files changed, 53 insertions(+), 52 deletions(-)
11 create mode 100644 tiny_gltf.cpp
12
13diff --git a/CMakeLists.txt b/CMakeLists.txt
14index 4301fd1..34778cf 100644
15--- a/CMakeLists.txt
16+++ b/CMakeLists.txt
17@@ -1,14 +1,12 @@
18 cmake_minimum_required(VERSION 3.6)
19
20-project(tinygltf)
21+project(TinyGLTF VERSION ${TINYGLTF_VERSION} LANGUAGES CXX)
22
23 include(GNUInstallDirs)
24 include(CMakePackageConfigHelpers)
25
26-set(CMAKE_CXX_STANDARD 11)
27-set(CMAKE_CXX_STANDARD_REQUIRED On)
28-set(CMAKE_CXX_EXTENSIONS Off)
29-set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
30+find_package(nlohmann_json 3 REQUIRED)
31+find_path(stb_INCLUDE_DIRS NAMES stb_image.h PATH_SUFFIXES stb)
32
33 option(TINYGLTF_BUILD_LOADER_EXAMPLE "Build loader_example(load glTF and dump infos)" ON)
34 option(TINYGLTF_BUILD_GL_EXAMPLES "Build GL exampels(requires glfw, OpenGL, etc)" OFF)
35@@ -37,51 +36,44 @@ if (TINYGLTF_BUILD_BUILDER_EXAMPLE)
36 add_subdirectory ( examples/build-gltf )
37 endif (TINYGLTF_BUILD_BUILDER_EXAMPLE)
38
39-#
40-# for add_subdirectory and standalone build
41-#
42-if (TINYGLTF_HEADER_ONLY)
43- add_library(tinygltf INTERFACE)
44+add_library(${PROJECT_NAME} tiny_gltf.h tiny_gltf.cpp)
45+target_include_directories(${PROJECT_NAME}
46+ PUBLIC
47+ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
48+ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
49+ PRIVATE
50+ ${stb_INCLUDE_DIRS}
51+)
52+target_link_libraries(${PROJECT_NAME} PRIVATE
53+ ${stb_LIBRARY}
54+ nlohmann_json::nlohmann_json
55+)
56+set_target_properties(${PROJECT_NAME} PROPERTIES
57+ OUTPUT_NAME "tinygltf"
58+ VERSION ${PROJECT_VERSION}
59+ SOVERSION ${TINYGLTF_SOVERSION}
60+)
61+add_library(${PROJECT_NAME}::${PROJECT_NAME} ALIAS ${PROJECT_NAME})
62
63- target_include_directories(tinygltf
64- INTERFACE
65- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
66- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
67- )
68+install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME}Targets
69+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
70+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
71+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
72+)
73+export(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}::)
74+install(EXPORT ${PROJECT_NAME}Targets NAMESPACE ${PROJECT_NAME}::
75+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
76+)
77+install(FILES tiny_gltf.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
78
79-else (TINYGLTF_HEADER_ONLY)
80- add_library(tinygltf)
81- target_sources(tinygltf PRIVATE
82- ${CMAKE_CURRENT_SOURCE_DIR}/tiny_gltf.cc)
83- target_include_directories(tinygltf
84- INTERFACE
85- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
86- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
87- )
88-endif (TINYGLTF_HEADER_ONLY)
89-
90-if (TINYGLTF_INSTALL)
91- install(TARGETS tinygltf EXPORT tinygltfTargets)
92- install(EXPORT tinygltfTargets NAMESPACE tinygltf:: FILE TinyGLTFTargets.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tinygltf)
93- configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/TinyGLTFConfig.cmake.in ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake)
94- install(FILES ${CMAKE_CURRENT_BINARY_DIR}/TinyGLTFConfig.cmake DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/tinygltf)
95- # Do not install .lib even if !TINYGLTF_HEADER_ONLY
96-
97- INSTALL ( FILES
98- tiny_gltf.h
99- ${TINYGLTF_EXTRA_SOUECES}
100- DESTINATION
101- include
102- )
103-
104- if(TINYGLTF_INSTALL_VENDOR)
105- INSTALL ( FILES
106- json.hpp
107- stb_image.h
108- stb_image_write.h
109- DESTINATION
110- include
111- )
112- endif()
113-
114-endif(TINYGLTF_INSTALL)
115+configure_package_config_file(cmake/${PROJECT_NAME}Config.cmake.in ${PROJECT_NAME}Config.cmake
116+ INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
117+ NO_CHECK_REQUIRED_COMPONENTS_MACRO
118+ NO_SET_AND_CHECK_MACRO
119+)
120+write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake COMPATIBILITY SameMinorVersion)
121+install(FILES
122+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake
123+ ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake
124+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}
125+)
126diff --git a/cmake/TinyGLTFConfig.cmake.in b/cmake/TinyGLTFConfig.cmake.in
127index fcccacf..89f21e4 100644
128--- a/cmake/TinyGLTFConfig.cmake.in
129+++ b/cmake/TinyGLTFConfig.cmake.in
130@@ -1,3 +1,9 @@
131 @PACKAGE_INIT@
132
133-include(${CMAKE_CURRENT_LIST_DIR}/TinyGLTFTargets.cmake)
134+include(FindPackageHandleStandardArgs)
135+
136+include(${CMAKE_CURRENT_LIST_DIR}/@[email protected])
137+
138+set(@PROJECT_NAME@_CONFIG ${CMAKE_CURRENT_LIST_FILE})
139+find_package_handle_standard_args(@PROJECT_NAME@ CONFIG_MODE)
140+
141diff --git a/tiny_gltf.cpp b/tiny_gltf.cpp
142new file mode 100644
143index 0000000..43e41f4
144--- /dev/null
145+++ b/tiny_gltf.cpp
146@@ -0,0 +1,3 @@
147+#define TINYGLTF_IMPLEMENTATION
148+#include "tiny_gltf.h"
149+