Skip to content

Commit f543faf

Browse files
committed
Allow in-tree build
1 parent 6647345 commit f543faf

File tree

3 files changed

+24
-16
lines changed

3 files changed

+24
-16
lines changed

.gitignore

+15-3
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,27 @@ __pycache__
2929
*.rej
3030

3131
# for CMake
32+
.cmake
3233
CMakeFiles/
3334
CMakeCache.txt
3435
cmake_install.cmake
3536
cmake_uninstall.cmake
36-
SDL3ConfigVersion.cmake
37-
.ninja_*
38-
*.ninja
37+
install_manifest.txt
38+
*Targets.cmake
39+
*Config.cmake
40+
*ConfigVersion.cmake
41+
CTestTestfile.cmake
42+
Testing
3943
compile_commands.json
4044
.cache/
45+
/include-config-*
46+
/include-revision
47+
/Makefile
48+
.ninja_*
49+
*.ninja
50+
*.pc
51+
test/*.test
52+
wayland-generated-protocols
4153

4254
# for CLion
4355
.idea

CMakeLists.txt

+7-11
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,5 @@
11
cmake_minimum_required(VERSION 3.16)
22

3-
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR)
4-
message(FATAL_ERROR "Prevented in-tree build. Please create a build directory outside of the SDL source code and run \"cmake -S ${CMAKE_SOURCE_DIR} -B .\" from there")
5-
endif()
6-
73
# See docs/release_checklist.md
84
project(SDL3 LANGUAGES C VERSION "3.1.5")
95

@@ -456,7 +452,7 @@ sdl_compile_definitions(PRIVATE "USING_GENERATED_CONFIG_H")
456452
sdl_include_directories(
457453
PRIVATE
458454
"${SDL3_BINARY_DIR}/include-config-$<LOWER_CASE:$<CONFIG>>/build_config"
459-
"${SDL3_BINARY_DIR}/include"
455+
"${SDL3_BINARY_DIR}/include-revision"
460456
"${SDL3_SOURCE_DIR}/include"
461457
)
462458
# Note: The clang toolset for Visual Studio does not support the '-idirafter' option.
@@ -3050,11 +3046,11 @@ endif()
30503046
# config variables may contain generator expression, so we need to generate SDL_build_config.h in 2 steps:
30513047
# 1. replace all `#cmakedefine`'s and `@abc@`
30523048
configure_file("${SDL3_SOURCE_DIR}/include/build_config/SDL_build_config.h.cmake"
3053-
"${SDL3_BINARY_DIR}/SDL_build_config.h.intermediate")
3049+
"${SDL3_BINARY_DIR}/CMakeFiles/SDL_build_config.h.intermediate")
30543050
# 2. generate SDL_build_config.h in an build_type-dependent folder (which should be first in the include search path)
30553051
file(GENERATE
30563052
OUTPUT "${SDL3_BINARY_DIR}/include-config-$<LOWER_CASE:$<CONFIG>>/build_config/SDL_build_config.h"
3057-
INPUT "${SDL3_BINARY_DIR}/SDL_build_config.h.intermediate"
3053+
INPUT "${SDL3_BINARY_DIR}/CMakeFiles/SDL_build_config.h.intermediate"
30583054
)
30593055

30603056
file(GLOB SDL3_INCLUDE_FILES "${SDL3_SOURCE_DIR}/include/SDL3/*.h")
@@ -3078,9 +3074,9 @@ if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/REVISION.txt")
30783074
set(SDL_REVISION "SDL3-${SDL_REVISION_CENTER}")
30793075
endif()
30803076

3081-
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${SDL3_BINARY_DIR}/include/SDL3")
3082-
configure_file(include/build_config/SDL_revision.h.cmake include/SDL3/SDL_revision.h @ONLY)
3083-
list(APPEND SDL3_INCLUDE_FILES "${SDL3_BINARY_DIR}/include/SDL3/SDL_revision.h")
3077+
execute_process(COMMAND "${CMAKE_COMMAND}" -E make_directory "${SDL3_BINARY_DIR}/include-revision/SDL3")
3078+
configure_file(include/build_config/SDL_revision.h.cmake include-revision/SDL3/SDL_revision.h @ONLY)
3079+
list(APPEND SDL3_INCLUDE_FILES "${SDL3_BINARY_DIR}/include-revision/SDL3/SDL_revision.h")
30843080

30853081
if(SDL_FRAMEWORK)
30863082
# With Apple frameworks, headers in the PUBLIC_HEADER property also need to be added as sources
@@ -3277,7 +3273,7 @@ add_library(SDL3::Headers ALIAS SDL3_Headers)
32773273
set_property(TARGET SDL3_Headers PROPERTY EXPORT_NAME "Headers")
32783274
target_include_directories(SDL3_Headers
32793275
INTERFACE
3280-
"$<BUILD_INTERFACE:${SDL3_BINARY_DIR}/include>"
3276+
"$<BUILD_INTERFACE:${SDL3_BINARY_DIR}/include-revision>"
32813277
"$<BUILD_INTERFACE:${SDL3_SOURCE_DIR}/include>"
32823278
)
32833279
if(SDL_FRAMEWORK)

cmake/macros.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -299,8 +299,8 @@ function(check_linker_supports_version_file VAR)
299299
set(LINKER_SUPPORTS_VERSION_SCRIPT FALSE)
300300
else()
301301
cmake_push_check_state(RESET)
302-
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/dummy.sym" "n_0 {\n global:\n func;\n local: *;\n};\n")
303-
list(APPEND CMAKE_REQUIRED_LINK_OPTIONS "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/dummy.sym")
302+
file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/dummy.sym" "n_0 {\n global:\n func;\n local: *;\n};\n")
303+
list(APPEND CMAKE_REQUIRED_LINK_OPTIONS "-Wl,--version-script=${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/dummy.sym")
304304
check_c_source_compiles("int func(void) {return 0;} int main(int argc,char*argv[]){(void)argc;(void)argv;return func();}" LINKER_SUPPORTS_VERSION_SCRIPT FAIL_REGEX "(unsupported|syntax error|unrecognized option)")
305305
cmake_pop_check_state()
306306
endif()

0 commit comments

Comments
 (0)