From 103df6b0eb68d85f9b320bf5d4061c622f1a9eea Mon Sep 17 00:00:00 2001
From: Ozkan Sezer <[EMAIL REDACTED]>
Date: Mon, 14 Jun 2021 06:10:32 +0300
Subject: [PATCH] cmake: allow static builds only with Linux, error out
otherwise.
also don't set SDL_STATIC_LIBS if not building static a lib.
Closes: https://github.com/libsdl-org/sdl12-compat/issues/108
---
CMakeLists.txt | 57 +++++++++++++++++++-------------------------------
1 file changed, 21 insertions(+), 36 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1537841..45d842f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,6 +13,10 @@ option(SDL12TESTS "Enable to build SDL-1.2 test programs" ON)
option(SDL12DEVEL "Enable installing SDL-1.2 development headers" ON)
option(STATICDEVEL "Enable installing static link library" OFF)
+if(STATICDEVEL AND NOT (CMAKE_SYSTEM_NAME MATCHES "Linux"))
+ MESSAGE(FATAL_ERROR "Static builds are only supported on Linux.")
+endif()
+
set(CMAKE_SKIP_RPATH TRUE)
if(APPLE)
@@ -178,27 +182,29 @@ install(TARGETS SDL
if(SDL12DEVEL)
set(SDL_VERSION "${SDL12_COMPAT_VERSION_STR}")
- install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
- )
+ install(DIRECTORY include/ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
if(NOT MSVC)
if(WIN32)
# FIXME: no SDL_main for Windows!
set(SDL_CFLAGS "") # -Dmain=SDL_main
set(SDL_RLD_FLAGS "")
- set(SDL_LIBS "-mwindows -lSDL") # -mwindows -lmingw32 -lSDLmain -lSDL
- set(SDL_STATIC_LIBS "-lkernel32 -luser32") # -mwindows -lmingw32 -lSDLmain -lSDL -lkernel32 -luser32
+ set(SDL_LIBS "-lSDL -mwindows") # -lmingw32 -lSDLmain -lSDL -mwindows
+ set(SDL_STATIC_LIBS "")
elseif(APPLE)
# FIXME: no SDL_main for Mac!
set(SDL_CFLAGS "-D_THREAD_SAFE") # -Dmain=SDL_main
set(SDL_LIBS "-lSDL") # -lSDLmain
- set(SDL_STATIC_LIBS "-Wl,-framework,AppKit -lobjc")
+ set(SDL_STATIC_LIBS "")
set(SDL_RLD_FLAGS "") # !!! FIXME: this forces rpath, which we might want?
else() # unix
set(SDL_CFLAGS "-D_GNU_SOURCE=1 -D_REENTRANT")
set(SDL_RLD_FLAGS "") # !!! FIXME: this forces rpath, which we might want?
set(SDL_LIBS "-lSDL")
set(SDL_STATIC_LIBS "-lm -ldl -lpthread")
+ if(NOT STATICDEVEL)
+ set(SDL_STATIC_LIBS "")
+ endif()
endif()
configure_file(sdl12_compat.pc.in sdl12_compat.pc @ONLY)
@@ -207,8 +213,13 @@ if(SDL12DEVEL)
)
# !!! FIXME: do we _want_ static builds?
- set(ENABLE_STATIC_TRUE "")
- set(ENABLE_STATIC_FALSE "#")
+ if(STATICDEVEL)
+ set(ENABLE_STATIC_TRUE "")
+ set(ENABLE_STATIC_FALSE "#")
+ else()
+ set(ENABLE_STATIC_TRUE "#")
+ set(ENABLE_STATIC_FALSE "")
+ endif()
set(ENABLE_SHARED_TRUE "")
set(ENABLE_SHARED_FALSE "#")
@@ -232,37 +243,11 @@ endif()
if(STATICDEVEL AND SDL12DEVEL)
add_library(SDL-static STATIC ${SDL12COMPAT_SRCS})
target_include_directories(SDL-static PRIVATE ${SDL2_INCLUDE_DIRS})
- if(UNIX AND NOT APPLE)
- set_target_properties(SDL-static PROPERTIES COMPILE_DEFINITIONS "_REENTRANT")
- target_link_libraries(SDL-static PRIVATE dl)
- endif()
- if(APPLE)
- set_target_properties(SDL-static PROPERTIES COMPILE_DEFINITIONS "_THREAD_SAFE")
- target_link_libraries(SDL-static PRIVATE "-framework AppKit")
- set_target_properties(SDL-static PROPERTIES
- MACOSX_RPATH 1
- OUTPUT_NAME "SDL"
- )
- else()
- set_target_properties(SDL-static PROPERTIES
+ set_target_properties(SDL-static PROPERTIES COMPILE_DEFINITIONS "_REENTRANT")
+ target_link_libraries(SDL-static PRIVATE dl)
+ set_target_properties(SDL-static PROPERTIES
VERSION "${SDL12_COMPAT_VERSION_STR}"
OUTPUT_NAME "SDL")
- endif()
-
- if(MINGW)
- set_target_properties(SDL-static PROPERTIES LINK_FLAGS "-nostdlib")
- endif()
- if(MSVC)
- # Don't try to link with the default set of libraries.
- set_target_properties(SDL-static PROPERTIES COMPILE_FLAGS "/GS-")
- set_target_properties(SDL-static PROPERTIES LINK_FLAGS "/NODEFAULTLIB")
- # Make sure /RTC1 is disabled: (from SDL2 CMake)
- foreach(flag_var
- CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE
- CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO)
- string(REGEX REPLACE "/RTC(su|[1su])" "" ${flag_var} "${${flag_var}}")
- endforeach(flag_var)
- endif()
install(TARGETS SDL-static
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}