Merge branch 'libmingw32'

This commit is contained in:
Dmitry Marakasov 2016-01-23 14:31:52 +03:00
commit 1e87f20864
8 changed files with 67 additions and 40 deletions

View File

@ -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
@ -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
- |-

View File

@ -31,12 +31,18 @@ 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(MINGW)
FIND_LIBRARY(MINGW32_LIBRARY NAMES mingw32)
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)
@ -45,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)
@ -54,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)
@ -209,6 +215,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)
@ -234,21 +242,19 @@ 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")
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)
INCLUDE(Join)
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)
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
@ -256,8 +262,6 @@ IF(CMAKE_SOURCE_DIR STREQUAL PROJECT_SOURCE_DIR)
@ONLY
)
# cmake file
SET(CMAKEMODDIR share/cmake/Modules CACHE STRING "directory where to install cmake module")
CONFIGURE_FILE(
FindSDL2PP.cmake.in
FindSDL2PP.cmake
@ -282,7 +286,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)

View File

@ -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)
@ -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_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)

View File

@ -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)

23
cmake/Join.cmake Normal file
View File

@ -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()

View File

@ -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)

View File

@ -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: -L${libdir} -lSDL2pp
Libs: @SDL2PP_EXTRA_LIBRARIES_STR@ -L${libdir} -lSDL2pp
Cflags: -I${includedir}

View File

@ -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)