Skip to content

Commit c71392b

Browse files
authored
Merge pull request #99 from gpx1000/remove-extra-tinygltf
Remove deprecated `Findtinygltf.cmake` file
2 parents 5e77ea9 + 0344d01 commit c71392b

File tree

4 files changed

+79
-220
lines changed

4 files changed

+79
-220
lines changed

attachments/CMake/FindTinyGLTF.cmake

Lines changed: 0 additions & 107 deletions
This file was deleted.

attachments/CMake/FindVulkanHpp.cmake

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -215,11 +215,11 @@ if(NOT VulkanHpp_INCLUDE_DIR OR NOT VulkanHpp_CPPM_DIR)
215215
set(VulkanHpp_CPPM_DIR ${VulkanHpp_SOURCE_DIR})
216216
else()
217217
# If vulkan.cppm doesn't exist, we need to create it
218-
set(VulkanHpp_CPPM_DIR ${CMAKE_CURRENT_BINARY_DIR}/VulkanHpp)
219-
file(MAKE_DIRECTORY ${VulkanHpp_CPPM_DIR}/vulkan)
218+
set(VulkanHpp_CPPM_DIR ${CMAKE_CURRENT_BINARY_DIR}/VulkanHpp)
219+
file(MAKE_DIRECTORY ${VulkanHpp_CPPM_DIR}/vulkan)
220220

221-
# Create vulkan.cppm file
222-
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
221+
# Create vulkan.cppm file
222+
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
223223
"// Auto-generated vulkan.cppm file
224224
module;
225225
#include <vulkan/vulkan.hpp>
@@ -288,7 +288,7 @@ endif()
288288

289289
# Set the variables
290290
include(FindPackageHandleStandardArgs)
291-
find_package_handle_standard_args(VulkanHpp
291+
find_package_handle_standard_args(VulkanHpp
292292
REQUIRED_VARS VulkanHpp_INCLUDE_DIR
293293
FAIL_MESSAGE "Could NOT find VulkanHpp. Install it or set VulkanHpp_INCLUDE_DIR to the directory containing vulkan/vulkan.hpp"
294294
)
@@ -319,7 +319,7 @@ if(VulkanHpp_FOUND)
319319
message(STATUS "Creating vulkan.cppm in ${VulkanHpp_CPPM_DIR}")
320320

321321
# Create vulkan.cppm file
322-
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
322+
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
323323
"// Auto-generated vulkan.cppm file
324324
module;
325325
#include <vulkan/vulkan.hpp>
@@ -408,7 +408,7 @@ elseif(DEFINED VulkanHpp_SOURCE_DIR OR DEFINED vulkanhpp_SOURCE_DIR)
408408
message(STATUS "Creating vulkan.cppm in ${VulkanHpp_CPPM_DIR}")
409409

410410
# Create vulkan.cppm file
411-
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
411+
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
412412
"// Auto-generated vulkan.cppm file
413413
module;
414414
#include <vulkan/vulkan.hpp>
Lines changed: 71 additions & 105 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
# Findtinygltf.cmake
1+
# FindTinyGLTF.cmake
22
#
3-
# Finds the tinygltf library
3+
# Finds the TinyGLTF library
44
#
55
# This will define the following variables
66
#
7-
# tinygltf_FOUND
8-
# tinygltf_INCLUDE_DIRS
7+
# TinyGLTF_FOUND
8+
# TinyGLTF_INCLUDE_DIRS
99
#
1010
# and the following imported targets
1111
#
@@ -25,101 +25,89 @@ if(NOT nlohmann_json_FOUND)
2525
FetchContent_MakeAvailable(nlohmann_json)
2626
endif()
2727

28-
# Try to find tinygltf using standard find_package
29-
find_path(tinygltf_INCLUDE_DIR
28+
# Try to find TinyGLTF using standard find_package
29+
find_path(TinyGLTF_INCLUDE_DIR
3030
NAMES tiny_gltf.h
31-
PATHS
32-
${PC_tinygltf_INCLUDE_DIRS}
33-
/usr/include
34-
/usr/local/include
35-
$ENV{VULKAN_SDK}/include
36-
${ANDROID_NDK}/sources/third_party
37-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../external
38-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../third_party
39-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/external
40-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/third_party
41-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/include
42-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../external
43-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../third_party
44-
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../include
45-
PATH_SUFFIXES tinygltf include
31+
PATH_SUFFIXES include tinygltf
4632
)
4733

48-
# If not found, use FetchContent to download and build
49-
if(NOT tinygltf_INCLUDE_DIR)
50-
# If not found, use FetchContent to download and build
51-
include(FetchContent)
52-
53-
message(STATUS "tinygltf not found, fetching from GitHub...")
54-
FetchContent_Declare(
55-
tinygltf
56-
GIT_REPOSITORY https://github.com/syoyo/tinygltf.git
57-
GIT_TAG v2.8.18 # Use a specific tag for stability
58-
)
59-
60-
# Set policy to suppress the deprecation warning
61-
if(POLICY CMP0169)
62-
cmake_policy(SET CMP0169 OLD)
63-
endif()
64-
65-
# Populate the content but don't configure it yet
66-
FetchContent_GetProperties(tinygltf)
67-
if(NOT tinygltf_POPULATED)
68-
FetchContent_Populate(tinygltf)
69-
70-
# Update the minimum required CMake version to avoid deprecation warning
71-
file(READ "${tinygltf_SOURCE_DIR}/CMakeLists.txt" TINYGLTF_CMAKE_CONTENT)
72-
string(REPLACE "cmake_minimum_required(VERSION 3.6)"
73-
"cmake_minimum_required(VERSION 3.10)"
74-
TINYGLTF_CMAKE_CONTENT "${TINYGLTF_CMAKE_CONTENT}")
75-
file(WRITE "${tinygltf_SOURCE_DIR}/CMakeLists.txt" "${TINYGLTF_CMAKE_CONTENT}")
76-
77-
# Create a symbolic link to make nlohmann/json.hpp available
78-
if(EXISTS "${tinygltf_SOURCE_DIR}/json.hpp")
79-
file(MAKE_DIRECTORY "${tinygltf_SOURCE_DIR}/nlohmann")
80-
file(CREATE_LINK "${tinygltf_SOURCE_DIR}/json.hpp" "${tinygltf_SOURCE_DIR}/nlohmann/json.hpp" SYMBOLIC)
81-
endif()
82-
83-
# Set tinygltf to header-only mode
84-
set(TINYGLTF_HEADER_ONLY ON CACHE BOOL "Use header only version" FORCE)
85-
set(TINYGLTF_INSTALL OFF CACHE BOOL "Do not install tinygltf" FORCE)
86-
87-
# Add the subdirectory after modifying the CMakeLists.txt
88-
add_subdirectory(${tinygltf_SOURCE_DIR} ${tinygltf_BINARY_DIR})
89-
else()
90-
# If already populated, just make it available
91-
FetchContent_MakeAvailable(tinygltf)
92-
endif()
93-
94-
# Get the include directory from the target
95-
get_target_property(tinygltf_INCLUDE_DIR tinygltf INTERFACE_INCLUDE_DIRECTORIES)
96-
if(NOT tinygltf_INCLUDE_DIR)
97-
# If we can't get the include directory from the target, use the source directory
98-
FetchContent_GetProperties(tinygltf SOURCE_DIR tinygltf_SOURCE_DIR)
99-
set(tinygltf_INCLUDE_DIR ${tinygltf_SOURCE_DIR})
100-
endif()
101-
endif()
102-
10334
include(FindPackageHandleStandardArgs)
10435
find_package_handle_standard_args(tinygltf
105-
REQUIRED_VARS tinygltf_INCLUDE_DIR
36+
REQUIRED_VARS TinyGLTF_INCLUDE_DIR
37+
FAIL_MESSAGE "" # Suppress the error message to allow our fallback
10638
)
10739

108-
if(tinygltf_FOUND)
109-
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})
40+
if(TinyGLTF_FOUND)
41+
set(TinyGLTF_INCLUDE_DIRS ${TinyGLTF_INCLUDE_DIR})
11042

11143
if(NOT TARGET tinygltf::tinygltf)
11244
add_library(tinygltf::tinygltf INTERFACE IMPORTED)
11345
set_target_properties(tinygltf::tinygltf PROPERTIES
114-
INTERFACE_INCLUDE_DIRECTORIES "${tinygltf_INCLUDE_DIRS}"
46+
INTERFACE_INCLUDE_DIRECTORIES "${TinyGLTF_INCLUDE_DIRS}"
11547
INTERFACE_COMPILE_DEFINITIONS "TINYGLTF_IMPLEMENTATION;TINYGLTF_NO_EXTERNAL_IMAGE;TINYGLTF_NO_STB_IMAGE;TINYGLTF_NO_STB_IMAGE_WRITE"
11648
)
11749
if(TARGET nlohmann_json::nlohmann_json)
11850
target_link_libraries(tinygltf::tinygltf INTERFACE nlohmann_json::nlohmann_json)
11951
endif()
12052
endif()
121-
elseif(TARGET tinygltf)
122-
# If find_package_handle_standard_args failed but we have a tinygltf target from FetchContent
53+
else()
54+
# If not found, create a custom tinygltf implementation
55+
message(STATUS "TinyGLTF not found, creating a custom implementation...")
56+
57+
# Create a directory for our custom tinygltf implementation
58+
set(TINYGLTF_DIR "${CMAKE_CURRENT_BINARY_DIR}/tinygltf")
59+
file(REMOVE_RECURSE "${TINYGLTF_DIR}")
60+
file(MAKE_DIRECTORY "${TINYGLTF_DIR}")
61+
62+
# Download the necessary files directly
63+
file(DOWNLOAD
64+
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/tiny_gltf.h"
65+
"${TINYGLTF_DIR}/tiny_gltf.h"
66+
SHOW_PROGRESS
67+
)
68+
69+
file(DOWNLOAD
70+
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/json.hpp"
71+
"${TINYGLTF_DIR}/json.hpp"
72+
SHOW_PROGRESS
73+
)
74+
75+
file(DOWNLOAD
76+
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/stb_image.h"
77+
"${TINYGLTF_DIR}/stb_image.h"
78+
SHOW_PROGRESS
79+
)
80+
81+
file(DOWNLOAD
82+
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/stb_image_write.h"
83+
"${TINYGLTF_DIR}/stb_image_write.h"
84+
SHOW_PROGRESS
85+
)
86+
87+
# Create a symbolic link to make nlohmann/json.hpp available
88+
file(MAKE_DIRECTORY "${TINYGLTF_DIR}/nlohmann")
89+
file(CREATE_LINK "${TINYGLTF_DIR}/json.hpp" "${TINYGLTF_DIR}/nlohmann/json.hpp" SYMBOLIC)
90+
91+
# Create a simple CMakeLists.txt file
92+
file(WRITE "${TINYGLTF_DIR}/CMakeLists.txt" "
93+
cmake_minimum_required(VERSION 3.10...3.29)
94+
project(tinygltf)
95+
96+
if(NOT TARGET tinygltf)
97+
add_library(tinygltf INTERFACE)
98+
target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
99+
target_compile_definitions(tinygltf INTERFACE
100+
TINYGLTF_IMPLEMENTATION
101+
TINYGLTF_NO_EXTERNAL_IMAGE
102+
TINYGLTF_NO_STB_IMAGE
103+
TINYGLTF_NO_STB_IMAGE_WRITE
104+
)
105+
endif()
106+
")
107+
108+
# Add the subdirectory
109+
add_subdirectory(${TINYGLTF_DIR} ${CMAKE_CURRENT_BINARY_DIR}/tinygltf-build)
110+
123111
# Create an alias for the tinygltf target
124112
if(NOT TARGET tinygltf::tinygltf)
125113
add_library(tinygltf_wrapper INTERFACE)
@@ -136,27 +124,5 @@ elseif(TARGET tinygltf)
136124
add_library(tinygltf::tinygltf ALIAS tinygltf_wrapper)
137125
endif()
138126

139-
# Set variables to indicate that tinygltf was found
140-
set(tinygltf_FOUND TRUE)
141-
set(TINYGLTF_FOUND TRUE)
142-
143-
# Set include directories
144-
get_target_property(tinygltf_INCLUDE_DIR tinygltf INTERFACE_INCLUDE_DIRECTORIES)
145-
if(tinygltf_INCLUDE_DIR)
146-
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})
147-
else()
148-
# If we can't get the include directory from the target, use the source directory
149-
FetchContent_GetProperties(tinygltf SOURCE_DIR tinygltf_SOURCE_DIR)
150-
set(tinygltf_INCLUDE_DIR ${tinygltf_SOURCE_DIR})
151-
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})
152-
153-
# Explicitly set the include directory on the target
154-
if(TARGET tinygltf)
155-
set_target_properties(tinygltf PROPERTIES
156-
INTERFACE_INCLUDE_DIRECTORIES "${tinygltf_INCLUDE_DIR}"
157-
)
158-
endif()
159-
endif()
127+
set(TinyGLTF_FOUND TRUE)
160128
endif()
161-
162-
mark_as_advanced(tinygltf_INCLUDE_DIR)

attachments/CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ find_package (glfw3 REQUIRED)
1111
find_package (glm REQUIRED)
1212
find_package (Vulkan REQUIRED)
1313
find_package (tinyobjloader REQUIRED)
14-
find_package (TinyGLTF REQUIRED)
14+
find_package (tinygltf REQUIRED)
1515
find_package (KTX REQUIRED)
1616

1717
# set up Vulkan C++ module

0 commit comments

Comments
 (0)