Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 0 additions & 107 deletions attachments/CMake/FindTinyGLTF.cmake

This file was deleted.

14 changes: 7 additions & 7 deletions attachments/CMake/FindVulkanHpp.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -215,11 +215,11 @@ if(NOT VulkanHpp_INCLUDE_DIR OR NOT VulkanHpp_CPPM_DIR)
set(VulkanHpp_CPPM_DIR ${VulkanHpp_SOURCE_DIR})
else()
# If vulkan.cppm doesn't exist, we need to create it
set(VulkanHpp_CPPM_DIR ${CMAKE_CURRENT_BINARY_DIR}/VulkanHpp)
file(MAKE_DIRECTORY ${VulkanHpp_CPPM_DIR}/vulkan)
set(VulkanHpp_CPPM_DIR ${CMAKE_CURRENT_BINARY_DIR}/VulkanHpp)
file(MAKE_DIRECTORY ${VulkanHpp_CPPM_DIR}/vulkan)

# Create vulkan.cppm file
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
# Create vulkan.cppm file
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
"// Auto-generated vulkan.cppm file
module;
#include <vulkan/vulkan.hpp>
Expand Down Expand Up @@ -288,7 +288,7 @@ endif()

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

# Create vulkan.cppm file
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
"// Auto-generated vulkan.cppm file
module;
#include <vulkan/vulkan.hpp>
Expand Down Expand Up @@ -408,7 +408,7 @@ elseif(DEFINED VulkanHpp_SOURCE_DIR OR DEFINED vulkanhpp_SOURCE_DIR)
message(STATUS "Creating vulkan.cppm in ${VulkanHpp_CPPM_DIR}")

# Create vulkan.cppm file
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
file(WRITE "${VulkanHpp_CPPM_DIR}/vulkan/vulkan.cppm"
"// Auto-generated vulkan.cppm file
module;
#include <vulkan/vulkan.hpp>
Expand Down
176 changes: 71 additions & 105 deletions attachments/CMake/Findtinygltf.cmake
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# Findtinygltf.cmake
# FindTinyGLTF.cmake
#
# Finds the tinygltf library
# Finds the TinyGLTF library
#
# This will define the following variables
#
# tinygltf_FOUND
# tinygltf_INCLUDE_DIRS
# TinyGLTF_FOUND
# TinyGLTF_INCLUDE_DIRS
#
# and the following imported targets
#
Expand All @@ -25,101 +25,89 @@ if(NOT nlohmann_json_FOUND)
FetchContent_MakeAvailable(nlohmann_json)
endif()

# Try to find tinygltf using standard find_package
find_path(tinygltf_INCLUDE_DIR
# Try to find TinyGLTF using standard find_package
find_path(TinyGLTF_INCLUDE_DIR
NAMES tiny_gltf.h
PATHS
${PC_tinygltf_INCLUDE_DIRS}
/usr/include
/usr/local/include
$ENV{VULKAN_SDK}/include
${ANDROID_NDK}/sources/third_party
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../external
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../third_party
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/external
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/third_party
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../attachments/include
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../external
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../third_party
${CMAKE_CURRENT_SOURCE_DIR}/../../../../../../../include
PATH_SUFFIXES tinygltf include
PATH_SUFFIXES include tinygltf
)

# If not found, use FetchContent to download and build
if(NOT tinygltf_INCLUDE_DIR)
# If not found, use FetchContent to download and build
include(FetchContent)

message(STATUS "tinygltf not found, fetching from GitHub...")
FetchContent_Declare(
tinygltf
GIT_REPOSITORY https://github.com/syoyo/tinygltf.git
GIT_TAG v2.8.18 # Use a specific tag for stability
)

# Set policy to suppress the deprecation warning
if(POLICY CMP0169)
cmake_policy(SET CMP0169 OLD)
endif()

# Populate the content but don't configure it yet
FetchContent_GetProperties(tinygltf)
if(NOT tinygltf_POPULATED)
FetchContent_Populate(tinygltf)

# Update the minimum required CMake version to avoid deprecation warning
file(READ "${tinygltf_SOURCE_DIR}/CMakeLists.txt" TINYGLTF_CMAKE_CONTENT)
string(REPLACE "cmake_minimum_required(VERSION 3.6)"
"cmake_minimum_required(VERSION 3.10)"
TINYGLTF_CMAKE_CONTENT "${TINYGLTF_CMAKE_CONTENT}")
file(WRITE "${tinygltf_SOURCE_DIR}/CMakeLists.txt" "${TINYGLTF_CMAKE_CONTENT}")

# Create a symbolic link to make nlohmann/json.hpp available
if(EXISTS "${tinygltf_SOURCE_DIR}/json.hpp")
file(MAKE_DIRECTORY "${tinygltf_SOURCE_DIR}/nlohmann")
file(CREATE_LINK "${tinygltf_SOURCE_DIR}/json.hpp" "${tinygltf_SOURCE_DIR}/nlohmann/json.hpp" SYMBOLIC)
endif()

# Set tinygltf to header-only mode
set(TINYGLTF_HEADER_ONLY ON CACHE BOOL "Use header only version" FORCE)
set(TINYGLTF_INSTALL OFF CACHE BOOL "Do not install tinygltf" FORCE)

# Add the subdirectory after modifying the CMakeLists.txt
add_subdirectory(${tinygltf_SOURCE_DIR} ${tinygltf_BINARY_DIR})
else()
# If already populated, just make it available
FetchContent_MakeAvailable(tinygltf)
endif()

# Get the include directory from the target
get_target_property(tinygltf_INCLUDE_DIR tinygltf INTERFACE_INCLUDE_DIRECTORIES)
if(NOT tinygltf_INCLUDE_DIR)
# If we can't get the include directory from the target, use the source directory
FetchContent_GetProperties(tinygltf SOURCE_DIR tinygltf_SOURCE_DIR)
set(tinygltf_INCLUDE_DIR ${tinygltf_SOURCE_DIR})
endif()
endif()

include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(tinygltf
REQUIRED_VARS tinygltf_INCLUDE_DIR
REQUIRED_VARS TinyGLTF_INCLUDE_DIR
FAIL_MESSAGE "" # Suppress the error message to allow our fallback
)

if(tinygltf_FOUND)
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})
if(TinyGLTF_FOUND)
set(TinyGLTF_INCLUDE_DIRS ${TinyGLTF_INCLUDE_DIR})

if(NOT TARGET tinygltf::tinygltf)
add_library(tinygltf::tinygltf INTERFACE IMPORTED)
set_target_properties(tinygltf::tinygltf PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${tinygltf_INCLUDE_DIRS}"
INTERFACE_INCLUDE_DIRECTORIES "${TinyGLTF_INCLUDE_DIRS}"
INTERFACE_COMPILE_DEFINITIONS "TINYGLTF_IMPLEMENTATION;TINYGLTF_NO_EXTERNAL_IMAGE;TINYGLTF_NO_STB_IMAGE;TINYGLTF_NO_STB_IMAGE_WRITE"
)
if(TARGET nlohmann_json::nlohmann_json)
target_link_libraries(tinygltf::tinygltf INTERFACE nlohmann_json::nlohmann_json)
endif()
endif()
elseif(TARGET tinygltf)
# If find_package_handle_standard_args failed but we have a tinygltf target from FetchContent
else()
# If not found, create a custom tinygltf implementation
message(STATUS "TinyGLTF not found, creating a custom implementation...")

# Create a directory for our custom tinygltf implementation
set(TINYGLTF_DIR "${CMAKE_CURRENT_BINARY_DIR}/tinygltf")
file(REMOVE_RECURSE "${TINYGLTF_DIR}")
file(MAKE_DIRECTORY "${TINYGLTF_DIR}")

# Download the necessary files directly
file(DOWNLOAD
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/tiny_gltf.h"
"${TINYGLTF_DIR}/tiny_gltf.h"
SHOW_PROGRESS
)

file(DOWNLOAD
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/json.hpp"
"${TINYGLTF_DIR}/json.hpp"
SHOW_PROGRESS
)

file(DOWNLOAD
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/stb_image.h"
"${TINYGLTF_DIR}/stb_image.h"
SHOW_PROGRESS
)

file(DOWNLOAD
"https://raw.githubusercontent.com/syoyo/tinygltf/v2.8.18/stb_image_write.h"
"${TINYGLTF_DIR}/stb_image_write.h"
SHOW_PROGRESS
)

# Create a symbolic link to make nlohmann/json.hpp available
file(MAKE_DIRECTORY "${TINYGLTF_DIR}/nlohmann")
file(CREATE_LINK "${TINYGLTF_DIR}/json.hpp" "${TINYGLTF_DIR}/nlohmann/json.hpp" SYMBOLIC)

# Create a simple CMakeLists.txt file
file(WRITE "${TINYGLTF_DIR}/CMakeLists.txt" "
cmake_minimum_required(VERSION 3.10...3.29)
project(tinygltf)

if(NOT TARGET tinygltf)
add_library(tinygltf INTERFACE)
target_include_directories(tinygltf INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
target_compile_definitions(tinygltf INTERFACE
TINYGLTF_IMPLEMENTATION
TINYGLTF_NO_EXTERNAL_IMAGE
TINYGLTF_NO_STB_IMAGE
TINYGLTF_NO_STB_IMAGE_WRITE
)
endif()
")

# Add the subdirectory
add_subdirectory(${TINYGLTF_DIR} ${CMAKE_CURRENT_BINARY_DIR}/tinygltf-build)

# Create an alias for the tinygltf target
if(NOT TARGET tinygltf::tinygltf)
add_library(tinygltf_wrapper INTERFACE)
Expand All @@ -136,27 +124,5 @@ elseif(TARGET tinygltf)
add_library(tinygltf::tinygltf ALIAS tinygltf_wrapper)
endif()

# Set variables to indicate that tinygltf was found
set(tinygltf_FOUND TRUE)
set(TINYGLTF_FOUND TRUE)

# Set include directories
get_target_property(tinygltf_INCLUDE_DIR tinygltf INTERFACE_INCLUDE_DIRECTORIES)
if(tinygltf_INCLUDE_DIR)
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})
else()
# If we can't get the include directory from the target, use the source directory
FetchContent_GetProperties(tinygltf SOURCE_DIR tinygltf_SOURCE_DIR)
set(tinygltf_INCLUDE_DIR ${tinygltf_SOURCE_DIR})
set(tinygltf_INCLUDE_DIRS ${tinygltf_INCLUDE_DIR})

# Explicitly set the include directory on the target
if(TARGET tinygltf)
set_target_properties(tinygltf PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${tinygltf_INCLUDE_DIR}"
)
endif()
endif()
set(TinyGLTF_FOUND TRUE)
endif()

mark_as_advanced(tinygltf_INCLUDE_DIR)
2 changes: 1 addition & 1 deletion attachments/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ find_package (glfw3 REQUIRED)
find_package (glm REQUIRED)
find_package (Vulkan REQUIRED)
find_package (tinyobjloader REQUIRED)
find_package (TinyGLTF REQUIRED)
find_package (tinygltf REQUIRED)
find_package (KTX REQUIRED)

# set up Vulkan C++ module
Expand Down
Loading