From 569368ade43f03ad4238845074db9cf844ae1324 Mon Sep 17 00:00:00 2001
From: Anonymous Maarten <[EMAIL REDACTED]>
Date: Mon, 24 Feb 2025 18:38:58 +0100
Subject: [PATCH] cmake: also generate and install sdl2.pc on MSVC
---
CMakeLists.txt | 91 ++++++++++++++++++++++++++------------------------
1 file changed, 48 insertions(+), 43 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d36d82f..eb1d0b6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -558,53 +558,58 @@ if(SDL2COMPAT_INSTALL)
endforeach()
install(FILES "${PROJECT_BINARY_DIR}/include/SDL2/SDL_revision.h" DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/SDL2")
- if(NOT MSVC)
- if(WIN32)
- set(SDL_CFLAGS "")
- set(SDL_RLD_FLAGS "")
- set(SDL_LIBS "-lmingw32 -lSDL2main -lSDL2 -mwindows")
- set(SDL_STATIC_LIBS "-lshell32")
- elseif(APPLE)
- set(SDL_CFLAGS "-D_THREAD_SAFE")
- set(SDL_LIBS "-lSDL2main -lSDL2 -Wl,-framework,Cocoa")
- 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 "-lSDL2")
+ if(MSVC)
+ set(SDL_CFLAGS "")
+ set(SDL_RLD_FLAGS "")
+ set(SDL_LIBS "-lSDL2main -lSDL2")
+ set(SDL_STATIC_LIBS "-lshell32")
+ elseif(MINGW)
+ set(SDL_CFLAGS "")
+ set(SDL_RLD_FLAGS "")
+ set(SDL_LIBS "-lmingw32 -lSDL2main -lSDL2 -mwindows")
+ set(SDL_STATIC_LIBS "-lshell32")
+ elseif(APPLE)
+ set(SDL_CFLAGS "-D_THREAD_SAFE")
+ set(SDL_RLD_FLAGS "") # !!! FIXME: this forces rpath, which we might want?
+ set(SDL_LIBS "-lSDL2main -lSDL2 -Wl,-framework,Cocoa")
+ set(SDL_STATIC_LIBS "")
+ 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 "-lSDL2")
+ set(SDL_STATIC_LIBS "")
+ foreach(lib ${CMAKE_DL_LIBS})
+ set(SDL_STATIC_LIBS "-l${lib}")
+ endforeach()
+ if(NOT SDL2COMPAT_STATIC)
set(SDL_STATIC_LIBS "")
- foreach(lib ${CMAKE_DL_LIBS})
- set(SDL_STATIC_LIBS "-l${lib}")
- endforeach()
- if(NOT SDL2COMPAT_STATIC)
- set(SDL_STATIC_LIBS "")
- endif()
endif()
+ endif()
- # !!! FIXME: do we _want_ static builds?
- if(SDL2COMPAT_STATIC)
- 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 "#")
+ # !!! FIXME: do we _want_ static builds?
+ if(SDL2COMPAT_STATIC)
+ 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 "#")
- configure_file(sdl2_compat.pc.in sdl2_compat.pc @ONLY)
- install(FILES ${CMAKE_BINARY_DIR}/sdl2_compat.pc
- DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
- )
+ configure_file(sdl2_compat.pc.in sdl2_compat.pc @ONLY)
+ install(FILES "${CMAKE_CURRENT_BINARY_DIR}/sdl2_compat.pc"
+ DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
+ )
- configure_file("${CMAKE_SOURCE_DIR}/sdl2-config.in" "${CMAKE_BINARY_DIR}/sdl2-config" @ONLY)
- install(PROGRAMS "${CMAKE_BINARY_DIR}/sdl2-config" DESTINATION "${CMAKE_INSTALL_BINDIR}")
+ configure_file(sdl2-config.in "${CMAKE_CURRENT_BINARY_DIR}/sdl2-config" @ONLY)
+ install(PROGRAMS "${CMAKE_CURRENT_BINARY_DIR}/sdl2-config" DESTINATION "${CMAKE_INSTALL_BINDIR}")
- # uninstall
- configure_file(cmake/cmake_uninstall.cmake.in cmake_uninstall.cmake IMMEDIATE @ONLY)
+ # uninstall
+ if(NOT TARGET uninstall)
+ configure_file(cmake/cmake_uninstall.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY)
add_custom_target(uninstall
- COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
+ COMMAND ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake")
endif()
set(SOEXT ${CMAKE_SHARED_LIBRARY_SUFFIX})
@@ -613,8 +618,8 @@ if(SDL2COMPAT_INSTALL)
install(CODE "
execute_process(COMMAND \"${CMAKE_COMMAND}\" -E create_symlink
\"lib${SONAME}${SOPOSTFIX}${SOEXT}\" \"libSDL2${SOPOSTFIX}${SOEXT}\"
- WORKING_DIRECTORY \"${CMAKE_BINARY_DIR}\")")
- install(FILES ${CMAKE_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
+ WORKING_DIRECTORY \"${CMAKE_CURRENT_BINARY_DIR}\")")
+ install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libSDL2${SOPOSTFIX}${SOEXT} DESTINATION "${CMAKE_INSTALL_LIBDIR}")
endif()
install(FILES "${PROJECT_SOURCE_DIR}/sdl2.m4" DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/aclocal")
@@ -631,7 +636,7 @@ if(SDL2COMPAT_INSTALL)
set(CPACK_PROJECT_CONFIG_FILE "${PROJECT_BINARY_DIR}/CPackProjectConfig.cmake")
# CPACK_SOURCE_PACKAGE_FILE_NAME must end with "-src" (so we can block creating a source archive)
set(CPACK_SOURCE_PACKAGE_FILE_NAME "SDL${PROJECT_VERSION_MAJOR}-${PROJECT_VERSION}-src")
- set(CPACK_PACKAGE_DIRECTORY "${CMAKE_BINARY_DIR}/dist")
+ set(CPACK_PACKAGE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/dist")
include(CPack)
endif()
endif()