From b81b209bb685d92c26b069dcbdcaf94d1b025147 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Fri, 25 Oct 2024 21:02:39 +0200
Subject: [PATCH] cmake: add BUILD_STATIC option to link against static
SDL3/SDL_gpu_shadercross library
---
CMakeLists.txt | 44 +++++++++++++++++++++++++-------------------
1 file changed, 25 insertions(+), 19 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 7d07a92..e9a26e5 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
# CMake Project for SDL_gpu_shadercross - Simple DirectMedia Layer Shader Cross Compiler
# Written by @thatcosmonaut
-cmake_minimum_required(VERSION 3.8)
+cmake_minimum_required(VERSION 3.22)
# Version
set(MAJOR_VERSION "1")
@@ -10,13 +10,17 @@ set(SDL_REQUIRED_VERSION "3.1.3")
project(SDL_gpu_shadercross LANGUAGES C VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
+include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake")
+include(CMakeDependentOption)
+
+find_package(SDL3 REQUIRED COMPONENTS SDL3-shared)
+
# Options
option(BUILD_STATIC "Build static library" ON)
option(BUILD_CLI "Build command line executable" ON)
option(ENABLE_WERROR "Enable Werror" OFF)
option(ENABLE_INSTALL "Enable installation" OFF)
-
-include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake")
+cmake_dependent_option(BUILD_CLI_STATIC "Link CLI with static libraries" OFF "BUILD_CLI;BUILD_STATIC;TARGET SDL3::SDL3-static" OFF)
sdl_calculate_derived_version_variables(${MAJOR_VERSION} ${MINOR_VERSION} ${MICRO_VERSION})
@@ -35,13 +39,11 @@ set(SOURCE_FILES
# Public Headers
include/SDL_gpu_shadercross.h
# Source Files
- src/SDL_gpu_shadercross.c
- src/spirv_cross_c.h
- src/spirv.h
+ src/SDL_gpu_shadercross.c
+ src/spirv_cross_c.h
+ src/spirv.h
)
-find_package(SDL3 REQUIRED COMPONENTS SDL3-shared)
-
add_library(SDL_gpu_shadercross-shared SHARED ${SOURCE_FILES})
add_library(SDL_gpu_shadercross::SDL_gpu_shadercross ALIAS SDL_gpu_shadercross-shared)
@@ -71,13 +73,13 @@ set_target_properties(SDL_gpu_shadercross-shared PROPERTIES OUTPUT_NAME "SDL_gpu
)
target_link_libraries(SDL_gpu_shadercross-shared PRIVATE
- SDL3::SDL3-shared
+ SDL3::SDL3-shared
)
if(BUILD_STATIC)
find_package(SDL3 REQUIRED COMPONENTS Headers)
- add_library(SDL_gpu_shadercross-static STATIC ${SOURCE_FILES})
+ add_library(SDL_gpu_shadercross-static STATIC ${SOURCE_FILES})
add_library(SDL_gpu_shadercross::SDL_gpu_shadercross-static ALIAS SDL_gpu_shadercross-static)
sdl_add_warning_options(SDL_gpu_shadercross-static WARNING_AS_ERROR ${ENABLE_WERROR})
target_compile_features(SDL_gpu_shadercross-static PRIVATE c_std_99)
@@ -86,12 +88,12 @@ if(BUILD_STATIC)
set_property(TARGET SDL_gpu_shadercross-static PROPERTY OUTPUT_NAME "SDL_gpu_shadercross")
endif()
- # SDL_gpu_shadercross folders as includes, for other targets to consume
- target_include_directories(SDL_gpu_shadercross-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
+ # SDL_gpu_shadercross folders as includes, for other targets to consume
+ target_include_directories(SDL_gpu_shadercross-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
- target_link_libraries(SDL_gpu_shadercross-static PUBLIC
- SDL3::Headers
- )
+ target_link_libraries(SDL_gpu_shadercross-static PUBLIC
+ SDL3::Headers
+ )
endif()
if(NOT TARGET SDL_gpu_shadercross::SDL_gpu_shadercross)
@@ -103,10 +105,15 @@ if(NOT TARGET SDL_gpu_shadercross::SDL_gpu_shadercross)
endif()
if(BUILD_CLI)
- add_executable(shadercross src/cli.c)
+ add_executable(shadercross src/cli.c)
- target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross)
- target_link_libraries(shadercross PRIVATE SDL3::SDL3)
+ if(BUILD_CLI_STATIC)
+ target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross-static)
+ target_link_libraries(shadercross PRIVATE SDL3::SDL3-static)
+ else()
+ target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross)
+ target_link_libraries(shadercross PRIVATE SDL3::SDL3)
+ endif()
endif()
if(ENABLE_INSTALL)
@@ -186,5 +193,4 @@ if(ENABLE_INSTALL)
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}"
COMPONENT library
)
-
endif()