From 40673641e39e5fb67a42f22c612159780327325d Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Fri, 22 Jan 2016 23:49:15 +0300 Subject: [PATCH 1/6] Remove obsolete pkgconfig-related code --- CMakeLists.txt | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 23f9deb..20eb1c6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -240,16 +240,6 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) SET(PKGCONFIGDIR libdata/pkgconfig) ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly") - SET(SDL2_PKGCONFIG_CFLAGS "") - FOREACH(INCDIR IN LISTS SDL2_ALL_INCLUDE_DIRS) - SET(SDL2_PKGCONFIG_CFLAGS "${SDL2_PKGCONFIG_CFLAGS} -I${INCDIR}") - ENDFOREACH(INCDIR IN SDL2_ALL_INCLUDE_DIRS) - - SET(SDL2_PKGCONFIG_LIBS "${CMAKE_INSTALL_PREFIX}/lib/${CMAKE_SHARED_LIBRARY_PREFIX}SDL2pp${CMAKE_SHARED_LIBRARY_SUFFIX}") - FOREACH(LIB IN LISTS SDL2_ALL_LIBRARIES) - SET(SDL2_PKGCONFIG_LIBS "${SDL2_PKGCONFIG_LIBS} ${LIB}") - ENDFOREACH(LIB IN SDL2_LIBRARIES) - CONFIGURE_FILE( sdl2pp.pc.in sdl2pp.pc From 69bb914040ef97b22f89609f6f75b98ea18c8483 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Thu, 21 Jan 2016 20:56:58 +0300 Subject: [PATCH 2/6] Improve SDL2Main library handling --- CMakeLists.txt | 5 ++++- FindSDL2PP.cmake.in | 2 +- cmake/FindSDL2.cmake | 4 +--- examples/CMakeLists.txt | 24 ++++++++++++------------ sdl2pp.pc.in | 2 +- tests/CMakeLists.txt | 6 +++--- 6 files changed, 22 insertions(+), 21 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 20eb1c6..e32fdd9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -31,6 +31,7 @@ FIND_PACKAGE(SDL2 REQUIRED) SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) SET(SDL2_ALL_LIBRARIES ${SDL2_LIBRARY}) SET(SDL2_ALL_PKGCONFIG_MODULES sdl2) +SET(SDL2PP_EXTRA_LIBRARIES ${SDL2MAIN_LIBRARY}) IF(SDL2PP_WITH_IMAGE) FIND_PACKAGE(SDL2_image REQUIRED) @@ -209,6 +210,8 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) TARGET_LINK_LIBRARIES(SDL2pp ${SDL2_ALL_LIBRARIES}) SET_TARGET_PROPERTIES(SDL2pp PROPERTIES VERSION 7.0.0 SOVERSION 7) + SET(SDL2PP_LIBRARIES ${SDL2PP_EXTRA_LIBRARIES} SDL2pp ${SDL2_ALL_LIBRARIES}) + # examples and tests OPTION(SDL2PP_WITH_EXAMPLES "Build examples" ON) OPTION(SDL2PP_WITH_TESTS "Build tests" ON) @@ -272,7 +275,7 @@ ELSE(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # provide variables to parent SET(SDL2PP_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${SDL2_ALL_INCLUDE_DIRS} PARENT_SCOPE) - SET(SDL2PP_LIBRARIES SDL2pp ${SDL2_ALL_LIBRARIES} PARENT_SCOPE) + SET(SDL2PP_LIBRARIES ${SDL2PP_EXTRA_LIBRARIES} SDL2pp ${SDL2_ALL_LIBRARIES} PARENT_SCOPE) MESSAGE(STATUS "libSDL2pp ${SDL2PP_VERSION} bundled build") ENDIF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) diff --git a/FindSDL2PP.cmake.in b/FindSDL2PP.cmake.in index 2fda34d..8baa353 100644 --- a/FindSDL2PP.cmake.in +++ b/FindSDL2PP.cmake.in @@ -24,5 +24,5 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2PP IF(SDL2PP_FOUND) SET(SDL2PP_INCLUDE_DIRS ${SDL2PP_INCLUDE_DIR} @SDL2_ALL_INCLUDE_DIRS@) - SET(SDL2PP_LIBRARIES ${SDL2PP_LIBRARY} @SDL2_ALL_LIBRARIES@) + SET(SDL2PP_LIBRARIES @SDL2PP_EXTRA_LIBRARIES@ ${SDL2PP_LIBRARY} @SDL2_ALL_LIBRARIES@) ENDIF(SDL2PP_FOUND) diff --git a/cmake/FindSDL2.cmake b/cmake/FindSDL2.cmake index 58456fe..7514f34 100644 --- a/cmake/FindSDL2.cmake +++ b/cmake/FindSDL2.cmake @@ -11,10 +11,8 @@ FIND_PATH(SDL2_INCLUDE_DIR NAMES SDL2/SDL.h) FIND_LIBRARY(SDL2_LIBRARY NAMES SDL2) FIND_LIBRARY(SDL2MAIN_LIBRARY NAMES SDL2main) -SET(SDL2_LIBRARY ${SDL2MAIN_LIBRARY} ${SDL2_LIBRARY}) - INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_INCLUDE_DIR SDL2_LIBRARY) -MARK_AS_ADVANCED(SDL2_INCLUDE_DIR SDL2_LIBRARY) +MARK_AS_ADVANCED(SDL2_INCLUDE_DIR SDL2_LIBRARY SDL2MAIN_LIBRARY) diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 12b1dfb..824e2de 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,43 +1,43 @@ ADD_DEFINITIONS(-DTESTDATA_DIR="${PROJECT_SOURCE_DIR}/testdata") ADD_EXECUTABLE(sprites sprites.cc) -TARGET_LINK_LIBRARIES(sprites SDL2pp) +TARGET_LINK_LIBRARIES(sprites ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(lines lines.cc) -TARGET_LINK_LIBRARIES(lines SDL2pp) +TARGET_LINK_LIBRARIES(lines ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(rendertarget rendertarget.cc) -TARGET_LINK_LIBRARIES(rendertarget SDL2pp) +TARGET_LINK_LIBRARIES(rendertarget ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(audio_sine audio_sine.cc) -TARGET_LINK_LIBRARIES(audio_sine SDL2pp) +TARGET_LINK_LIBRARIES(audio_sine ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(audio_wav audio_wav.cc) -TARGET_LINK_LIBRARIES(audio_wav SDL2pp) +TARGET_LINK_LIBRARIES(audio_wav ${SDL2PP_LIBRARIES}) IF(SDL2PP_WITH_IMAGE) ADD_EXECUTABLE(image image.cc) - TARGET_LINK_LIBRARIES(image SDL2pp) + TARGET_LINK_LIBRARIES(image ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(fill fill.cc) - TARGET_LINK_LIBRARIES(fill SDL2pp) + TARGET_LINK_LIBRARIES(fill ${SDL2PP_LIBRARIES}) ENDIF(SDL2PP_WITH_IMAGE) IF(SDL2PP_WITH_TTF) ADD_EXECUTABLE(ttf ttf.cc) - TARGET_LINK_LIBRARIES(ttf SDL2pp) + TARGET_LINK_LIBRARIES(ttf ${SDL2PP_LIBRARIES}) ENDIF(SDL2PP_WITH_TTF) IF(SDL2PP_WITH_MIXER) ADD_EXECUTABLE(mixer mixer.cc) - TARGET_LINK_LIBRARIES(mixer SDL2pp) + TARGET_LINK_LIBRARIES(mixer ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(mixer_music mixer_music.cc) - TARGET_LINK_LIBRARIES(mixer_music SDL2pp) + TARGET_LINK_LIBRARIES(mixer_music ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(mixer_music_sine mixer_music_sine.cc) - TARGET_LINK_LIBRARIES(mixer_music_sine SDL2pp) + TARGET_LINK_LIBRARIES(mixer_music_sine ${SDL2PP_LIBRARIES}) ADD_EXECUTABLE(mixer_effects mixer_effects.cc) - TARGET_LINK_LIBRARIES(mixer_effects SDL2pp) + TARGET_LINK_LIBRARIES(mixer_effects ${SDL2PP_LIBRARIES}) ENDIF(SDL2PP_WITH_MIXER) diff --git a/sdl2pp.pc.in b/sdl2pp.pc.in index 1915aa4..02e2e20 100644 --- a/sdl2pp.pc.in +++ b/sdl2pp.pc.in @@ -8,5 +8,5 @@ Description: C++11 bindings/wrappers for SDL2 Version: @SDL2PP_VERSION@ Requires: @SDL2_ALL_PKGCONFIG_MODULES@ Conflicts: -Libs: -L${libdir} -lSDL2pp +Libs: @SDL2PP_EXTRA_LIBRARIES@ -L${libdir} -lSDL2pp Cflags: -I${includedir} diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 7424787..e69b257 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -29,18 +29,18 @@ FOREACH(HEADER ${LIBRARY_HEADERS}) STRING(REGEX REPLACE [^a-zA-Z0-9] _ HEADER_NORMALIZED ${HEADER}) CONFIGURE_FILE(header_test.cc.in ${HEADER_NORMALIZED}_test.cc) ADD_EXECUTABLE(${HEADER_NORMALIZED}_test ${HEADER_NORMALIZED}_test.cc) - TARGET_LINK_LIBRARIES(${HEADER_NORMALIZED}_test SDL2pp) + TARGET_LINK_LIBRARIES(${HEADER_NORMALIZED}_test ${SDL2PP_LIBRARIES}) ENDFOREACH(HEADER ${TESTS}) FOREACH(TEST ${CLI_TESTS}) ADD_EXECUTABLE(${TEST} ${TEST}.cc) - TARGET_LINK_LIBRARIES(${TEST} SDL2pp) + TARGET_LINK_LIBRARIES(${TEST} ${SDL2PP_LIBRARIES}) ADD_TEST(${TEST} ${TEST}) ENDFOREACH(TEST ${TESTS}) FOREACH(TEST ${LIVE_TESTS}) ADD_EXECUTABLE(${TEST} ${TEST}.cc) - TARGET_LINK_LIBRARIES(${TEST} SDL2pp) + TARGET_LINK_LIBRARIES(${TEST} ${SDL2PP_LIBRARIES}) IF(SDL2PP_ENABLE_LIVE_TESTS) ADD_TEST(${TEST} ${TEST}) ENDIF(SDL2PP_ENABLE_LIVE_TESTS) From e103c6b9f9fd5d09a7ecfad7a75daa524ae91a3a Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Thu, 21 Jan 2016 20:57:05 +0300 Subject: [PATCH 3/6] Add libmingw32 to SDL2pp library list on MINGW Without it, SDL2pp using apps won't compile with mingw, with undefined reference to WinMain. More investigation is needed on what happens here, so for now just link the library. To be noted, it's the same as FindSDL bundled with CMake does. See also issue #66 and http://forums.libsdl.org/viewtopic.php?p=49618 --- .appveyor.yml | 2 +- CMakeLists.txt | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.appveyor.yml b/.appveyor.yml index f66a3d4..06c3260 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -13,7 +13,7 @@ environment: PREFIX: c:\usr_msvc MSVC: MINGW32: rem - - CMAKE_ARGS: -DCMAKE_C_COMPILER=mingw32-cc -DCMAKE_CXX_COMPILER=mingw32-c++ -DCMAKE_MAKE_PROGRAM=mingw32-make.exe -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_EXE_LINKER_FLAGS="-lmingw32" -DSDL2PP_ENABLE_LIVE_TESTS=OFF -G "MinGW Makefiles" + - CMAKE_ARGS: -DCMAKE_C_COMPILER=mingw32-cc -DCMAKE_CXX_COMPILER=mingw32-c++ -DCMAKE_MAKE_PROGRAM=mingw32-make.exe -DCMAKE_VERBOSE_MAKEFILE=ON -DSDL2PP_ENABLE_LIVE_TESTS=OFF -G "MinGW Makefiles" PREFIX: c:\usr_mingw32 MINGW32: MSVC: rem diff --git a/CMakeLists.txt b/CMakeLists.txt index e32fdd9..146dafa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -33,6 +33,11 @@ SET(SDL2_ALL_LIBRARIES ${SDL2_LIBRARY}) SET(SDL2_ALL_PKGCONFIG_MODULES sdl2) SET(SDL2PP_EXTRA_LIBRARIES ${SDL2MAIN_LIBRARY}) +IF(MINGW) + FIND_LIBRARY(MINGW32_LIBRARY NAMES mingw32) + SET(SDL2PP_EXTRA_LIBRARIES "${SDL2PP_EXTRA_LIBRARIES} ${MINGW32_LIBRARY}") +ENDIF(MINGW) + IF(SDL2PP_WITH_IMAGE) FIND_PACKAGE(SDL2_image REQUIRED) SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIR}) From 095caa7a9fa45db3d89cc97ac542a4532c67aa99 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Sat, 23 Jan 2016 00:16:50 +0300 Subject: [PATCH 4/6] Show generated files in appveyor as well --- .appveyor.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.appveyor.yml b/.appveyor.yml index 06c3260..9459972 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -103,6 +103,8 @@ build_script: cmake -DCMAKE_PREFIX_PATH=%PREFIX% %CMAKE_ARGS% %MSVC% msbuild "libSDL2pp.sln" /verbosity:normal /logger:"C:\Program Files\AppVeyor\BuildAgent\Appveyor.MSBuildLogger.dll" %MINGW32% mingw32-make + %MINGW32% type FindSDL2PP.cmake + %MINGW32% type sdl2pp.pc # tests; PATH here lists library search paths - |- From 856dce3c671efa4b8f9bc114cc83b6e9b4581c92 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Sat, 23 Jan 2016 00:35:38 +0300 Subject: [PATCH 5/6] Sort out list vs. string handling --- CMakeLists.txt | 21 ++++++++++++++------- FindSDL2PP.cmake.in | 4 ++-- sdl2pp.pc.in | 4 ++-- 3 files changed, 18 insertions(+), 11 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 146dafa..68df2dd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,14 +35,14 @@ SET(SDL2PP_EXTRA_LIBRARIES ${SDL2MAIN_LIBRARY}) IF(MINGW) FIND_LIBRARY(MINGW32_LIBRARY NAMES mingw32) - SET(SDL2PP_EXTRA_LIBRARIES "${SDL2PP_EXTRA_LIBRARIES} ${MINGW32_LIBRARY}") + SET(SDL2PP_EXTRA_LIBRARIES ${MINGW32_LIBRARY} ${SDL2PP_EXTRA_LIBRARIES}) ENDIF(MINGW) IF(SDL2PP_WITH_IMAGE) FIND_PACKAGE(SDL2_image REQUIRED) SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_IMAGE_INCLUDE_DIR}) SET(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_IMAGE_LIBRARY}) - SET(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_image") + SET(SDL2_ALL_PKGCONFIG_MODULES ${SDL2_ALL_PKGCONFIG_MODULES} SDL2_image) ELSE(SDL2PP_WITH_IMAGE) MESSAGE(STATUS "SDL2_image support disabled") ENDIF(SDL2PP_WITH_IMAGE) @@ -51,7 +51,7 @@ IF(SDL2PP_WITH_TTF) FIND_PACKAGE(SDL2_ttf REQUIRED) SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_TTF_INCLUDE_DIR}) SET(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_TTF_LIBRARY}) - SET(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_ttf") + SET(SDL2_ALL_PKGCONFIG_MODULES ${SDL2_ALL_PKGCONFIG_MODULES} SDL2_ttf) ELSE(SDL2PP_WITH_TTF) MESSAGE(STATUS "SDL2_ttf support disabled") ENDIF(SDL2PP_WITH_TTF) @@ -60,7 +60,7 @@ IF(SDL2PP_WITH_MIXER) FIND_PACKAGE(SDL2_mixer REQUIRED) SET(SDL2_ALL_INCLUDE_DIRS ${SDL2_ALL_INCLUDE_DIRS} ${SDL2_MIXER_INCLUDE_DIR}) SET(SDL2_ALL_LIBRARIES ${SDL2_ALL_LIBRARIES} ${SDL2_MIXER_LIBRARY}) - SET(SDL2_ALL_PKGCONFIG_MODULES "${SDL2_ALL_PKGCONFIG_MODULES} SDL2_mixer") + SET(SDL2_ALL_PKGCONFIG_MODULES ${SDL2_ALL_PKGCONFIG_MODULES} SDL2_mixer) ELSE(SDL2PP_WITH_MIXER) MESSAGE(STATUS "SDL2_mixer support disabled") ENDIF(SDL2PP_WITH_MIXER) @@ -208,6 +208,11 @@ IF(SDL2PP_WITH_MIXER) ) ENDIF(SDL2PP_WITH_MIXER) +FUNCTION(JOIN VALUES OUTPUT) + STRING(REPLACE ";" " " _TMP "${VALUES}") + SET(${OUTPUT} "${_TMP}" PARENT_SCOPE) +ENDFUNCTION(JOIN) + # targets IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # library @@ -242,20 +247,22 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) ) ENDIF(DOXYGEN_FOUND) - # pkgconfig + # pkgconfig and cmake modules + SET(CMAKEMODDIR share/cmake/Modules CACHE STRING "directory where to install cmake module") SET(PKGCONFIGDIR lib/pkgconfig CACHE STRING "directory where to install pkg-config files") IF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly") SET(PKGCONFIGDIR libdata/pkgconfig) ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly") + JOIN("${SDL2PP_EXTRA_LIBRARIES}" SDL2PP_EXTRA_LIBRARIES_STR) + JOIN("${SDL2_ALL_PKGCONFIG_MODULES}" SDL2_ALL_PKGCONFIG_MODULES_STR) + CONFIGURE_FILE( sdl2pp.pc.in sdl2pp.pc @ONLY ) - # cmake file - SET(CMAKEMODDIR share/cmake/Modules CACHE STRING "directory where to install cmake module") CONFIGURE_FILE( FindSDL2PP.cmake.in FindSDL2PP.cmake diff --git a/FindSDL2PP.cmake.in b/FindSDL2PP.cmake.in index 8baa353..87f9786 100644 --- a/FindSDL2PP.cmake.in +++ b/FindSDL2PP.cmake.in @@ -11,9 +11,9 @@ IF(SDL2PP_INCLUDE_DIR AND SDL2PP_LIBRARY) SET(SDL2PP_FIND_QUIETLY TRUE) ENDIF(SDL2PP_INCLUDE_DIR AND SDL2PP_LIBRARY) -FIND_PATH(SDL2PP_INCLUDE_DIR SDL2pp/SDL2pp.hh HINTS @CMAKE_INSTALL_PREFIX@/include) +FIND_PATH(SDL2PP_INCLUDE_DIR SDL2pp/SDL2pp.hh HINTS "@CMAKE_INSTALL_PREFIX@/include") -FIND_LIBRARY(SDL2PP_LIBRARY NAMES SDL2pp HINTS @CMAKE_INSTALL_PREFIX@/lib) +FIND_LIBRARY(SDL2PP_LIBRARY NAMES SDL2pp HINTS "@CMAKE_INSTALL_PREFIX@/lib") MARK_AS_ADVANCED(SDL2PP_INCLUDE_DIR SDL2PP_LIBRARY) diff --git a/sdl2pp.pc.in b/sdl2pp.pc.in index 02e2e20..a00040c 100644 --- a/sdl2pp.pc.in +++ b/sdl2pp.pc.in @@ -6,7 +6,7 @@ includedir=${prefix}/include Name: sdl2pp Description: C++11 bindings/wrappers for SDL2 Version: @SDL2PP_VERSION@ -Requires: @SDL2_ALL_PKGCONFIG_MODULES@ +Requires: @SDL2_ALL_PKGCONFIG_MODULES_STR@ Conflicts: -Libs: @SDL2PP_EXTRA_LIBRARIES@ -L${libdir} -lSDL2pp +Libs: @SDL2PP_EXTRA_LIBRARIES_STR@ -L${libdir} -lSDL2pp Cflags: -I${includedir} From 06436476578ee425128251202b0a59ce507e6718 Mon Sep 17 00:00:00 2001 From: Dmitry Marakasov Date: Sat, 23 Jan 2016 13:58:56 +0300 Subject: [PATCH 6/6] Improve joined set handling --- CMakeLists.txt | 13 ++++++------- FindSDL2PP.cmake.in | 4 ++-- cmake/Join.cmake | 23 +++++++++++++++++++++++ 3 files changed, 31 insertions(+), 9 deletions(-) create mode 100644 cmake/Join.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 68df2dd..45c17bc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -208,11 +208,6 @@ IF(SDL2PP_WITH_MIXER) ) ENDIF(SDL2PP_WITH_MIXER) -FUNCTION(JOIN VALUES OUTPUT) - STRING(REPLACE ";" " " _TMP "${VALUES}") - SET(${OUTPUT} "${_TMP}" PARENT_SCOPE) -ENDFUNCTION(JOIN) - # targets IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) # library @@ -254,8 +249,12 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR) SET(PKGCONFIGDIR libdata/pkgconfig) ENDIF(CMAKE_SYSTEM_NAME MATCHES "FreeBSD" OR CMAKE_SYSTEM_NAME MATCHES "DragonFly") - JOIN("${SDL2PP_EXTRA_LIBRARIES}" SDL2PP_EXTRA_LIBRARIES_STR) - JOIN("${SDL2_ALL_PKGCONFIG_MODULES}" SDL2_ALL_PKGCONFIG_MODULES_STR) + INCLUDE(Join) + + JOIN_QUOTED("${SDL2PP_EXTRA_LIBRARIES}" SDL2PP_EXTRA_LIBRARIES_STR) + JOIN_QUOTED("${SDL2_ALL_LIBRARIES}" SDL2_ALL_LIBRARIES_STR) + JOIN_QUOTED("${SDL2_ALL_INCLUDE_DIRS}" SDL2_ALL_INCLUDE_DIRS_STR) + JOIN_SIMPLE("${SDL2_ALL_PKGCONFIG_MODULES}" SDL2_ALL_PKGCONFIG_MODULES_STR) CONFIGURE_FILE( sdl2pp.pc.in diff --git a/FindSDL2PP.cmake.in b/FindSDL2PP.cmake.in index 87f9786..344d2b2 100644 --- a/FindSDL2PP.cmake.in +++ b/FindSDL2PP.cmake.in @@ -23,6 +23,6 @@ FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2PP ) IF(SDL2PP_FOUND) - SET(SDL2PP_INCLUDE_DIRS ${SDL2PP_INCLUDE_DIR} @SDL2_ALL_INCLUDE_DIRS@) - SET(SDL2PP_LIBRARIES @SDL2PP_EXTRA_LIBRARIES@ ${SDL2PP_LIBRARY} @SDL2_ALL_LIBRARIES@) + SET(SDL2PP_INCLUDE_DIRS ${SDL2PP_INCLUDE_DIR} @SDL2_ALL_INCLUDE_DIRS_STR@) + SET(SDL2PP_LIBRARIES @SDL2PP_EXTRA_LIBRARIES_STR@ ${SDL2PP_LIBRARY} @SDL2_ALL_LIBRARIES_STR@) ENDIF(SDL2PP_FOUND) diff --git a/cmake/Join.cmake b/cmake/Join.cmake new file mode 100644 index 0000000..a809557 --- /dev/null +++ b/cmake/Join.cmake @@ -0,0 +1,23 @@ +FUNCTION(JOIN_SIMPLE VALUES OUTPUT) + FOREACH(_VAL ${VALUES}) + IF(DEFINED _TMP) + SET(_TMP "${_TMP} ${_VAL}") + ELSE(DEFINED _TMP) + SET(_TMP "${_VAL}") + ENDIF(DEFINED _TMP) + ENDFOREACH(_VAL) + SET(${OUTPUT} "${_TMP}" PARENT_SCOPE) +ENDFUNCTION() + +FUNCTION(JOIN_QUOTED VALUES OUTPUT) + FOREACH(_VAL ${VALUES}) + STRING(REPLACE "\\" "\\\\" _VAL "${_VAL}") + STRING(REPLACE "\"" "\\\"" _VAL "${_VAL}") + IF(DEFINED _TMP) + SET(_TMP "${_TMP} \"${_VAL}\"") + ELSE(DEFINED _TMP) + SET(_TMP "\"${_VAL}\"") + ENDIF(DEFINED _TMP) + ENDFOREACH(_VAL) + SET(${OUTPUT} "${_TMP}" PARENT_SCOPE) +ENDFUNCTION()