Skip to content

Commit b81b209

Browse files
committed
cmake: add BUILD_STATIC option to link against static SDL3/SDL_gpu_shadercross library
1 parent 934c9a5 commit b81b209

File tree

1 file changed

+25
-19
lines changed

1 file changed

+25
-19
lines changed

CMakeLists.txt

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# CMake Project for SDL_gpu_shadercross - Simple DirectMedia Layer Shader Cross Compiler
22
# Written by @thatcosmonaut
3-
cmake_minimum_required(VERSION 3.8)
3+
cmake_minimum_required(VERSION 3.22)
44

55
# Version
66
set(MAJOR_VERSION "1")
@@ -10,13 +10,17 @@ set(SDL_REQUIRED_VERSION "3.1.3")
1010

1111
project(SDL_gpu_shadercross LANGUAGES C VERSION "${MAJOR_VERSION}.${MINOR_VERSION}.${MICRO_VERSION}")
1212

13+
include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake")
14+
include(CMakeDependentOption)
15+
16+
find_package(SDL3 REQUIRED COMPONENTS SDL3-shared)
17+
1318
# Options
1419
option(BUILD_STATIC "Build static library" ON)
1520
option(BUILD_CLI "Build command line executable" ON)
1621
option(ENABLE_WERROR "Enable Werror" OFF)
1722
option(ENABLE_INSTALL "Enable installation" OFF)
18-
19-
include("${CMAKE_CURRENT_LIST_DIR}/cmake/PrivateSdlFunctions.cmake")
23+
cmake_dependent_option(BUILD_CLI_STATIC "Link CLI with static libraries" OFF "BUILD_CLI;BUILD_STATIC;TARGET SDL3::SDL3-static" OFF)
2024

2125
sdl_calculate_derived_version_variables(${MAJOR_VERSION} ${MINOR_VERSION} ${MICRO_VERSION})
2226

@@ -35,13 +39,11 @@ set(SOURCE_FILES
3539
# Public Headers
3640
include/SDL_gpu_shadercross.h
3741
# Source Files
38-
src/SDL_gpu_shadercross.c
39-
src/spirv_cross_c.h
40-
src/spirv.h
42+
src/SDL_gpu_shadercross.c
43+
src/spirv_cross_c.h
44+
src/spirv.h
4145
)
4246

43-
find_package(SDL3 REQUIRED COMPONENTS SDL3-shared)
44-
4547
add_library(SDL_gpu_shadercross-shared SHARED ${SOURCE_FILES})
4648
add_library(SDL_gpu_shadercross::SDL_gpu_shadercross ALIAS SDL_gpu_shadercross-shared)
4749

@@ -71,13 +73,13 @@ set_target_properties(SDL_gpu_shadercross-shared PROPERTIES OUTPUT_NAME "SDL_gpu
7173
)
7274

7375
target_link_libraries(SDL_gpu_shadercross-shared PRIVATE
74-
SDL3::SDL3-shared
76+
SDL3::SDL3-shared
7577
)
7678

7779
if(BUILD_STATIC)
7880
find_package(SDL3 REQUIRED COMPONENTS Headers)
7981

80-
add_library(SDL_gpu_shadercross-static STATIC ${SOURCE_FILES})
82+
add_library(SDL_gpu_shadercross-static STATIC ${SOURCE_FILES})
8183
add_library(SDL_gpu_shadercross::SDL_gpu_shadercross-static ALIAS SDL_gpu_shadercross-static)
8284
sdl_add_warning_options(SDL_gpu_shadercross-static WARNING_AS_ERROR ${ENABLE_WERROR})
8385
target_compile_features(SDL_gpu_shadercross-static PRIVATE c_std_99)
@@ -86,12 +88,12 @@ if(BUILD_STATIC)
8688
set_property(TARGET SDL_gpu_shadercross-static PROPERTY OUTPUT_NAME "SDL_gpu_shadercross")
8789
endif()
8890

89-
# SDL_gpu_shadercross folders as includes, for other targets to consume
90-
target_include_directories(SDL_gpu_shadercross-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
91+
# SDL_gpu_shadercross folders as includes, for other targets to consume
92+
target_include_directories(SDL_gpu_shadercross-static PUBLIC $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>)
9193

92-
target_link_libraries(SDL_gpu_shadercross-static PUBLIC
93-
SDL3::Headers
94-
)
94+
target_link_libraries(SDL_gpu_shadercross-static PUBLIC
95+
SDL3::Headers
96+
)
9597
endif()
9698

9799
if(NOT TARGET SDL_gpu_shadercross::SDL_gpu_shadercross)
@@ -103,10 +105,15 @@ if(NOT TARGET SDL_gpu_shadercross::SDL_gpu_shadercross)
103105
endif()
104106

105107
if(BUILD_CLI)
106-
add_executable(shadercross src/cli.c)
108+
add_executable(shadercross src/cli.c)
107109

108-
target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross)
109-
target_link_libraries(shadercross PRIVATE SDL3::SDL3)
110+
if(BUILD_CLI_STATIC)
111+
target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross-static)
112+
target_link_libraries(shadercross PRIVATE SDL3::SDL3-static)
113+
else()
114+
target_link_libraries(shadercross PRIVATE SDL_gpu_shadercross::SDL_gpu_shadercross)
115+
target_link_libraries(shadercross PRIVATE SDL3::SDL3)
116+
endif()
110117
endif()
111118

112119
if(ENABLE_INSTALL)
@@ -186,5 +193,4 @@ if(ENABLE_INSTALL)
186193
DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/licenses/${PROJECT_NAME}"
187194
COMPONENT library
188195
)
189-
190196
endif()

0 commit comments

Comments
 (0)