From b40b82289a167bffd434a6e40ebfedea7e8f8b92 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Thu, 21 Jul 2016 00:02:07 +0200 Subject: [PATCH 01/15] Begin updating CMake to support newest Player features. Remove unnessary code (e.g. Wine) and allow making some options optional (testing). --- CMakeLists.txt | 420 ++++++++++++++++------- builds/cmake/Modules/FindOggVorbis.cmake | 10 + builds/cmake/Modules/FindSndFile.cmake | 29 +- builds/cmake/Modules/Findliblcf.cmake | 10 + builds/cmake/Modules/Findmpg123.cmake | 2 +- builds/cmake/Modules/Findspeexdsp.cmake | 10 + builds/cmake/Modules/Findwildmidi.cmake | 10 + 7 files changed, 341 insertions(+), 150 deletions(-) create mode 100644 builds/cmake/Modules/FindOggVorbis.cmake create mode 100644 builds/cmake/Modules/Findliblcf.cmake create mode 100644 builds/cmake/Modules/Findspeexdsp.cmake create mode 100644 builds/cmake/Modules/Findwildmidi.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 623234e720..512ec97b0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,66 +5,26 @@ set(CMAKE_CXX_STANDARD_REQUIRED on) project(EasyRPG_Player CXX C) -# liblcf -# - ${LIBLCF_PATH} - -set(DEFAULT_LIBLCF_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf") -if(NOT LIBLCF_PATH) - set(LIBLCF_PATH "${DEFAULT_LIBLCF_PATH}") -endif() -find_package(Git REQUIRED) -if(NOT EXISTS ${LIBLCF_PATH}) - execute_process(COMMAND ${GIT_EXECUTABLE} clone "--depth=1" - "https://github.com/EasyRPG/liblcf.git" - "${LIBLCF_PATH}") -endif() -add_subdirectory( - ${LIBLCF_PATH}/builds/cmake - ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/liblcf) -link_directories(${ICU_LIBRARY_DIRS}) - set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) -#link_directories(${LIBRARY_OUTPUT_PATH}) -#cmake_policy(CMP0015 NEW) list(APPEND CMAKE_MODULE_PATH - "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/builds/cmake/Modules" "${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/Modules") +if(CMAKE_BUILD_TYPE MATCHES "Debug") + add_definitions(-D _DEBUG=1) +endif() + add_definitions( ${PNG_DEFINITIONS} -D USE_SDL=1) - + if(CMAKE_GENERATOR MATCHES "Makefile") add_definitions(-fno-rtti) endif() -# wine checking -find_program(WINE_EXECUTABLE wine) -if(EXISTS ${WINE_EXECUTABLE}) - message(STATUS "wine registry enabled") - add_definitions(-DHAVE_WINE=1) -endif() - -# shinonome font -set(SHINONOME_PATH "${CMAKE_CURRENT_SOURCE_DIR}/resources/shinonome") -set(SHINONOME_SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src") -set(SHINONOME_SRCS "${SHINONOME_SRC_PATH}/shinonome_gothic.cpp" - "${SHINONOME_SRC_PATH}/shinonome_mincho.cpp" - "${SHINONOME_SRC_PATH}/shinonome.h") -find_package(Ruby) -if(RUBY_FOUND) - set(SHINONOME_GENERATOR "${SHINONOME_PATH}/generate_cxx_font.rb") - add_custom_command( - OUTPUT ${SHINONOME_SRCS} - COMMAND "${RUBY_EXECUTABLE}" ARGS "${SHINONOME_GENERATOR}" - DEPENDS "${SHINONOME_GENERATOR}" - WORKING_DIRECTORY "${SHINONOME_PATH}") -endif() - -# endianess check +# Endianess check if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) include(TestBigEndian) test_big_endian(WORDS_BIGENDIAN) @@ -73,51 +33,179 @@ if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) endif() endif() -if(CMAKE_BUILD_TYPE MATCHES "Debug") - add_definitions(-D _DEBUG=1) -endif() +# Adds a library to the liblist if COND is true and the lib is found +# When REQ is true the lib is required +function(find_lib LIBNAME COND) + if(${COND}) + list(APPEND EASYRPG_LIB_LIST ${LIBNAME}) + + if(${REQ}) + find_package(${LIBNAME} REQUIRED) + else() + find_package(${LIBNAME}) + endif() + + if(${LIBNAME}_FOUND) + string(TOUPPER ${LIBNAME} LIBNAMEUP) + include_directories(${${LIBNAMEUP}_INCLUDE_DIR} ${${LIBNAMEUP}_INCLUDE_DIRS}) + list(APPEND EASYRPG_PLAYER_LIBRARIES ${${LIBNAMEUP}_LIBRARY} ${${LIBNAMEUP}_LIBRARIES}) + endif() + endif() + + set(RETVAL ${${LIBNAME}_FOUND} PARENT_SCOPE) + # Export _FOUND variable to global scope + set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) +endfunction() -# mpg123 -find_package(libmpg123) -if (libmpg123_FOUND) - include_directories(${MPG123_INCLUDE_DIR}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${MPG123_LIBRARY}) - add_definitions(-DHAVE_MPG123) +# liblcf +option(PLAYER_BUILD_LIBLCF "Instead of detecting liblcf the liblcf repository is cloned into lib/liblcf and built together with the Player. This is convenient for development") +set(PLAYER_BUILD_LIBLCF_GIT "https://github.com/EasyRPG/liblcf.git" CACHE STRING "Git repository of liblcf to clone when building liblcf. Requires PLAYER_BUILD_LIBLCF=ON.") + +if (PLAYER_BUILD_LIBLCF) + # liblcf is built as part of this cmake file + set(LIBLCF_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf") + find_package(Git REQUIRED) + if(NOT EXISTS ${LIBLCF_PATH}) + execute_process(COMMAND ${GIT_EXECUTABLE} clone "--depth=1" + "${PLAYER_BUILD_LIBLCF_GIT}" + "${LIBLCF_PATH}") + endif() + list(APPEND CMAKE_MODULE_PATH + "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/builds/cmake/Modules") + add_subdirectory( + ${LIBLCF_PATH}/builds/cmake + ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/liblcf) + link_directories(${ICU_LIBRARY_DIRS}) +else() + # Use system package + find_package(liblcf REQUIRED) + include_directories(${LIBLCF_INCLUDE_DIR}) + list(APPEND EASYRPG_PLAYER_LIBRARIES ${LIBLCF_LIBRARY}) endif() -# SDL_mixer -find_package(SDL2_mixer) -if(SDL2_MIXER_FOUND) - include_directories(${SDL2_MIXER_INCLUDE_DIR}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${SDL2_MIXER_LIBRARY}) - add_definitions(-D HAVE_SDL_MIXER=1) +# Detect all required libraries +# TODO: Expat Iconv for liblcf compile case +foreach(i Pixman ZLIB PNG SDL2) + find_lib(${i} ON ON) +endforeach() + +# Always enable Wine registry support on non-Windows +if(CMAKE_SYSTEM_NAME MATCHES "Windows") else() - add_definitions(-DNO_SDL_MIXER) + add_definitions(-DHAVE_WINE=1) +endif() + +# Shinonome font +option(PLAYER_BUILD_SHINONOME "Regenerate the shinonome font source files which overwrites the files in the repository. Requires Ruby." OFF) + +if (PLAYER_BUILD_SHINONOME) + set(SHINONOME_PATH "${CMAKE_CURRENT_SOURCE_DIR}/resources/shinonome") + set(SHINONOME_SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src") + set(SHINONOME_SRCS "${SHINONOME_SRC_PATH}/shinonome_gothic.cpp" + "${SHINONOME_SRC_PATH}/shinonome_mincho.cpp" + "${SHINONOME_SRC_PATH}/shinonome.h") + find_package(Ruby REQUIRED) + if(RUBY_FOUND) + set(SHINONOME_GENERATOR "${SHINONOME_PATH}/generate_cxx_font.rb") + add_custom_command( + OUTPUT ${SHINONOME_SRCS} + COMMAND "${RUBY_EXECUTABLE}" ARGS "${SHINONOME_GENERATOR}" + DEPENDS "${SHINONOME_GENERATOR}" + WORKING_DIRECTORY "${SHINONOME_PATH}") + endif() +endif() + +# freetype and harfbuzz +option(PLAYER_WITH_FREETYPE "Support FreeType font rendering" ON) +find_lib("Freetype" PLAYER_WITH_FREETYPE) +if(${RETVAL}) + add_definitions(-DHAVE_FREETYPE) + option(PLAYER_WITH_HARFBUZZ "Enable HarfBuzz text shaping (Requires FreeType)" ON) + find_lib("Harfbuzz" PLAYER_WITH_HARFBUZZ) + if(${RETVAL}) + add_definitions(-DHAVE_HARFBUZZ) + endif() endif() -# OpenAL -find_package(OpenAL) -if(OPENAL_FOUND) - find_package(SndFile REQUIRED) - find_package(FluidSynth REQUIRED) - include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR} ${FLUIDSYNTH_INCLUDE_DIR}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${OPENAL_LIBRARY} ${SNDFILE_LIBRARIES} ${FLUIDSYNTH_LIBRARY}) - add_definitions(-D HAVE_OPENAL=1) +# Sound system to use +set(PLAYER_AUDIO_BACKEND "SDL2_mixer" CACHE STRING "Audio system to use. The SDL2_mixer audio system provides advanced features required by RPG Maker. Options: SDL2_mixer OpenAL OFF") +set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL) + +# Configure Audio backends + +if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") + # SDL2_mixer Audio + find_package(SDL2_mixer REQUIRED) + include_directories(${SDL2_MIXER_INCLUDE_DIR}) + list(APPEND EASYRPG_PLAYER_LIBRARIES ${SDL2_MIXER_LIBRARY}) + add_definitions(-D HAVE_SDL_MIXER=1) + + # speexdsp + option(PLAYER_WITH_SPEEXDSP "Resample audio with speexdsp." ON) + find_lib("speexdsp" PLAYER_WITH_SPEEXDSP) + if(${RETVAL}) + add_definitions(-DHAVE_LIBSPEEXDSP) + endif() + + # mpg123 + option(PLAYER_WITH_MPG123 "Play MP3 audio with libmpg123." ON) + find_lib("mpg123" PLAYER_WITH_MPG123) + if(${RETVAL}) + add_definitions(-DHAVE_MPG123) + endif() + + # libsndfile + option(PLAYER_WITH_LIBSNDFILE "Play WAV audio with libsndfile." ON) + find_lib("SndFile" PLAYER_WITH_LIBSNDFILE) + if(${RETVAL}) + add_definitions(-DHAVE_LIBSNDFILE) + endif() + + # libogg + option(PLAYER_WITH_LIBOGG "Play OGG audio with libogg or tremor." ON) + find_lib("OggVorbis" PLAYER_WITH_SPEEXDSP) + if(${RETVAL}) + add_definitions(-DHAVE_OGGVORBIS) + endif() + + # wildmidi (optional, OFF) + option(PLAYER_WITH_WILDMIDI "Play MIDI audio with wildmidi. (optional)" OFF) + find_lib("wildmidi" PLAYER_WITH_WILDMIDI) + if(${RETVAL}) + add_definitions(-DHAVE_WILDMIDI) + endif() + + # Provide fmmidi options + set(PLAYER_ENABLE_FMMIDI "Fallback" CACHE STRING "Enable internal MIDI sequencer. Fallback (default) mode will use it when the external MIDI library fails. Options: Fallback ON OFF") + set_property(CACHE PLAYER_ENABLE_FMMIDI PROPERTY STRINGS Fallback ON OFF) + if(${PLAYER_ENABLE_FMMIDI} MATCHES "Fallback") + add_definitions(-DWANT_FMMIDI=2) + elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "ON") + add_definitions(-DWAND_FMMIDI=1) + elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "OFF") + # noop + else() + message(FATAL_ERROR "Bad FmMidi setting") + endif() +elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OpenAL") + # OpenAL Audio + add_definitions(-DNO_SDL_MIXER) + find_package(OpenAL REQUIRED) + find_package(SndFile REQUIRED) + find_package(FluidSynth REQUIRED) + include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR} ${FLUIDSYNTH_INCLUDE_DIR}) + list(APPEND EASYRPG_PLAYER_LIBRARIES ${OPENAL_LIBRARY} ${SNDFILE_LIBRARIES} ${FLUIDSYNTH_LIBRARY}) + add_definitions(-D HAVE_OPENAL=1) +elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OFF") + add_definitions(-DNO_SDL_MIXER) +elseif() + message(FATAL_ERROR "Invalid Audio Backend") endif() include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src/generated") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") -foreach(i Expat Freetype Harfbuzz Pixman ZLIB PNG SDL2 Iconv) - find_package(${i} REQUIRED) - - string(TOUPPER ${i} i) - - include_directories(${${i}_INCLUDE_DIR} ${${i}_INCLUDE_DIRS}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${${i}_LIBRARY} ${${i}_LIBRARIES}) -endforeach() - # library set(EASYRPG_PLAYER_LIBRARIES_ALL ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static" liblcf) @@ -139,11 +227,13 @@ add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${MAIN_FILE}) add_executable(${PROJECT_NAME}_com ${MAIN_FILE}) foreach(i ${PROJECT_NAME} ${PROJECT_NAME}_com) target_link_libraries(${i} ${EASYRPG_PLAYER_LIBRARIES_ALL}) - add_dependencies(${i} liblcf ${PROJECT_NAME}_Static) + ### TODO add_dependencies(${i} liblcf ${PROJECT_NAME}_Static) endforeach() install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION bin) # manpage +# Handled as extra target "man" + set(MAN_NAME easyrpg-player.6) find_program(A2X_EXECUTABLE NAMES a2x a2x.py) if(NOT A2X_EXECUTABLE STREQUAL "A2X_EXECUTABLE-NOTFOUND") @@ -179,54 +269,132 @@ set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README) include(CPack) # Doxygen +# Handled as extra target "doc" + find_package(Doxygen) if(DOXYGEN_FOUND) - # fake autotools variables - set(DX_DOCDIR ${CMAKE_CURRENT_BINARY_DIR}/doc) - set(PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) - set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}) - configure_file(resources/Doxyfile.in resources/Doxyfile @ONLY) - unset(DX_DOCDIR) - unset(PACKAGE_VERSION) - unset(srcdir) - - add_custom_target(player_doc - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/resources/Doxyfile - DEPENDS ${SRCS} ${MAIN_FILE} - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources - COMMENT "Generating API documentation with Doxygen" VERBATIM) - add_custom_target(doc) - add_dependencies(doc player_doc liblcf_doc) + # fake autotools variables + set(DX_DOCDIR ${CMAKE_CURRENT_BINARY_DIR}/doc) + set(PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) + set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}) + configure_file(resources/Doxyfile.in resources/Doxyfile @ONLY) + unset(DX_DOCDIR) + unset(PACKAGE_VERSION) + unset(srcdir) + + add_custom_target(player_doc + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/resources/Doxyfile + DEPENDS ${SRCS} ${MAIN_FILE} + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources + COMMENT "Generating API documentation with Doxygen" VERBATIM) + add_custom_target(doc) + add_dependencies(doc player_doc liblcf_doc) endif() # test -enable_testing() - -set(TEST_GAME_REPOSITORY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/TestGame") -if(NOT EXISTS ${TEST_GAME_REPOSITORY_PATH}) - execute_process(COMMAND ${GIT_EXECUTABLE} clone - "https://github.com/EasyRPG/TestGame.git" - "${TEST_GAME_REPOSITORY_PATH}") -endif() -set(TEST_GAME_PATH "${TEST_GAME_REPOSITORY_PATH}/TestGame-2000") - -set(TEST_ENVS "RPG_TEST_GAME_PATH=${TEST_GAME_PATH}") -if(EXISTS $ENV{RPG_RTP_PATH}) - get_filename_component(RPG_RTP_PATH "$ENV{RPG_RTP_PATH}" ABSOLUTE) - message(STATUS "using rtp path ${RPG_RTP_PATH}") - list(APPEND TEST_ENVS "RPG_RTP_PATH=${RPG_RTP_PATH}") -endif() - -file(GLOB TEST_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp) -foreach(i ${TEST_FILES}) - get_filename_component(name "${i}" NAME_WE) - add_executable(test_${name} ${i}) - target_link_libraries(test_${name} ${EASYRPG_PLAYER_LIBRARIES_ALL}) - add_dependencies(test_${name} ${PROJECT_NAME}_Static) - - add_test( - NAME test_${name} WORKING_DIRECTORY ${TEST_GAME_PATH} - COMMAND ${EXECUTABLE_OUTPUT_PATH}/test_${name}) - set_tests_properties(test_${name} - PROPERTIES ENVIRONMENT "${TEST_ENVS}") -endforeach() +option(PLAYER_ENABLE_TESTS "Execute unit tests after compilation finishes" ON) + +if (PLAYER_ENABLE_TESTS) + enable_testing() + + set(TEST_GAME_REPOSITORY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/TestGame") + if(NOT EXISTS ${TEST_GAME_REPOSITORY_PATH}) + execute_process(COMMAND ${GIT_EXECUTABLE} clone + "https://github.com/EasyRPG/TestGame.git" + "${TEST_GAME_REPOSITORY_PATH}") + endif() + set(TEST_GAME_PATH "${TEST_GAME_REPOSITORY_PATH}/TestGame-2000") + + set(TEST_ENVS "RPG_TEST_GAME_PATH=${TEST_GAME_PATH}") + if(EXISTS $ENV{RPG_RTP_PATH}) + get_filename_component(RPG_RTP_PATH "$ENV{RPG_RTP_PATH}" ABSOLUTE) + message(STATUS "using rtp path ${RPG_RTP_PATH}") + list(APPEND TEST_ENVS "RPG_RTP_PATH=${RPG_RTP_PATH}") + endif() + + file(GLOB TEST_FILES ${CMAKE_CURRENT_SOURCE_DIR}/tests/*.cpp) + foreach(i ${TEST_FILES}) + get_filename_component(name "${i}" NAME_WE) + add_executable(test_${name} ${i}) + target_link_libraries(test_${name} ${EASYRPG_PLAYER_LIBRARIES_ALL}) + add_dependencies(test_${name} ${PROJECT_NAME}_Static) + + add_test( + NAME test_${name} WORKING_DIRECTORY ${TEST_GAME_PATH} + COMMAND ${EXECUTABLE_OUTPUT_PATH}/test_${name}) + set_tests_properties(test_${name} + PROPERTIES ENVIRONMENT "${TEST_ENVS}") + endforeach() +endif() + +# Print summary +message(STATUS "") +message(STATUS "Summary:") +message(STATUS "----------") +if(PLAYER_BUILD_LIBLCF) + message(STATUS "liblcf: Built from ${PLAYER_BUILD_LIBLCF_GIT}") + message(STATUS "") +endif() +message(STATUS "Audio backend: ${PLAYER_AUDIO_BACKEND}") +if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") + message(STATUS "") + + if(wildmidi_FOUND) + message(STATUS "MIDI playback: WildMidi") + elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "ON") + message(STATUS "MIDI playback: built-in (FmMidi)") + elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "Fallback") + message(STATUS "MIDI playback: SDL2_mixer. Fallback to built-in (FmMidi)") + elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "OFF") + message(STATUS "MIDI playback: SDL2_mixer.") + endif() + + if(mpg123_FOUND) + message(STATUS "MP3 playback: mpg123") + else() + set(SDL_MIXER_USED ON) + message(STATUS "MP3 playback: SDL2_mixer. Some MP3 files will crash or play noise!") + endif() + + if(OggVorbis_FOUND) + message(STATUS "OGG playback: libogg") + else() + set(SDL_MIXER_USED ON) + message(STATUS "OGG playback: SDL2_mixer") + endif() + + if(SndFile_FOUND) + message(STATUS "WAV playback: libsndfile") + else() + set(SDL_MIXER_USED ON) + message(STATUS "WAV playback: SDL2_mixer. Some WAV formats are unsupported.") + endif() + + if(speexdsp_FOUND) + message(STATUS "Resampler: speexdsp") + else() + set(SDL_MIXER_USED ON) + message(STATUS "Resampler: SDL2. Resampling will not work correctly!") + endif() + + if(SDL_MIXER_USED) + message(STATUS "") + message(STATUS " WARNING:") + message(STATUS " Using SDL2_mixer directly for playback or resampling is not recommended.") + message(STATUS " Some RPG Maker features (e.g. pitch changes) will not work.") + endif() +endif() + +message(STATUS "") + +if(Harfbuzz_FOUND) + message(STATUS "Font rendering: Freetype with Harfbuzz / built-in (Shinonome)") +elseif(FreeType_FOUND) + message(STATUS "Font rendering: Freetype and built-in (Shinonome)") +else() + message(STATUS "Font rendering: built-in (Shinonome)") +endif() + +message(STATUS "----------") +message(STATUS "") + diff --git a/builds/cmake/Modules/FindOggVorbis.cmake b/builds/cmake/Modules/FindOggVorbis.cmake new file mode 100644 index 0000000000..43ab9b7d61 --- /dev/null +++ b/builds/cmake/Modules/FindOggVorbis.cmake @@ -0,0 +1,10 @@ +find_path(OGGVORBIS_INCLUDE_DIR ogg/ogg.h) +find_library(OGGVORBIS_LIBRARY NAMES ogg libogg) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(OggVorbis DEFAULT_MSG OGGVORBIS_INCLUDE_DIR OGGVORBIS_LIBRARY) + +set(OGGVORBIS_INCLUDE_DIRS ${OGGVORBIS_INCLUDE_DIR}) +set(OGGVORBIS_LIBRARIES ${OGGVORBIS_LIBRARY}) + +mark_as_advanced(OGGVORBIS_INCLUDE_DIR OGGVORBIS_LIBRARY) diff --git a/builds/cmake/Modules/FindSndFile.cmake b/builds/cmake/Modules/FindSndFile.cmake index d01ff06535..289847ece0 100644 --- a/builds/cmake/Modules/FindSndFile.cmake +++ b/builds/cmake/Modules/FindSndFile.cmake @@ -1,27 +1,10 @@ -# SNDFILE_LIBRARIES -# SNDFILE_INCLUDE_DIR -# SndFile_FOUND - -include(FindPackageHandleStandardArgs) - -find_library(OGG_LIBRARY ogg) -find_library(FLAC_LIBRARY FLAC) -find_library(VORBIS_LIBRARY vorbis) -find_library(VORBISENC_LIBRARY vorbisenc) - -find_library(SNDFILE_LIBRARY sndfile) find_path(SNDFILE_INCLUDE_DIR sndfile.h) +find_library(SNDFILE_LIBRARY NAMES sndfile libsndfile) -if((EXISTS ${SNDFILE_LIBRARY}) AND (EXISTS ${SNDFILE_INCLUDE_DIR})) - foreach(i OGG_LIBRARY FLAC_LIBRARY VORBIS_LIBRARY VORBISENC_LIBRARY) - if(EXISTS ${${i}}) - list(APPEND SNDFILE_LIBRARIES "${${i}}") - endif() - endforeach() +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(SndFile DEFAULT_MSG SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY) - list(APPEND SNDFILE_LIBRARIES "${SNDFILE_LIBRARY}") - message(STATUS "sndfile dependencies: ${SNDFILE_LIBRARIES}") -endif() +set(SNDFILE_INCLUDE_DIRS ${SNDFILE_INCLUDE_DIR}) +set(SNDFILE_LIBRARIES ${SNDFILE_LIBRARY}) -find_package_handle_standard_args(SndFile - REQUIRED_VARS SNDFILE_INCLUDE_DIR SNDFILE_LIBRARIES) +mark_as_advanced(SNDFILE_INCLUDE_DIR SNDFILE_LIBRARY) diff --git a/builds/cmake/Modules/Findliblcf.cmake b/builds/cmake/Modules/Findliblcf.cmake new file mode 100644 index 0000000000..000d859138 --- /dev/null +++ b/builds/cmake/Modules/Findliblcf.cmake @@ -0,0 +1,10 @@ +find_path(LIBLCF_INCLUDE_DIR liblcf/reader_lcf.h) +find_library(LIBLCF_LIBRARY NAMES lcf liblcf) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(LIBLCF DEFAULT_MSG LIBLCF_INCLUDE_DIR LIBLCF_LIBRARY) + +set(LIBLCF_INCLUDE_DIRS ${LIBLCF_INCLUDE_DIR}) +set(LIBLCF_LIBRARIES ${LIBLCF_LIBRARY}) + +mark_as_advanced(LIBLCF_INCLUDE_DIR LIBLCF_LIBRARY) diff --git a/builds/cmake/Modules/Findmpg123.cmake b/builds/cmake/Modules/Findmpg123.cmake index da4b07106b..850d310875 100644 --- a/builds/cmake/Modules/Findmpg123.cmake +++ b/builds/cmake/Modules/Findmpg123.cmake @@ -2,7 +2,7 @@ find_path(MPG123_INCLUDE_DIR mpg123.h) find_library(MPG123_LIBRARY NAMES mpg123 libmpg123) include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_INCLUDE_DIR MPG123_LIBRARY) +find_package_handle_standard_args(mpg123 DEFAULT_MSG MPG123_INCLUDE_DIR MPG123_LIBRARY) set(MPG123_INCLUDE_DIRS ${MPG123_INCLUDE_DIR}) set(MPG123_LIBRARIES ${MPG123_LIBRARY}) diff --git a/builds/cmake/Modules/Findspeexdsp.cmake b/builds/cmake/Modules/Findspeexdsp.cmake new file mode 100644 index 0000000000..176e417532 --- /dev/null +++ b/builds/cmake/Modules/Findspeexdsp.cmake @@ -0,0 +1,10 @@ +find_path(SPEEXDSP_INCLUDE_DIR speex/speex_resampler.h) +find_library(SPEEXDSP_LIBRARY NAMES speexdsp libspeexdsp) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(speexdsp DEFAULT_MSG SPEEXDSP_INCLUDE_DIR SPEEXDSP_LIBRARY) + +set(SPEEXDSP_INCLUDE_DIRS ${SPEEXDSP_INCLUDE_DIR}) +set(SPEEXDSP_LIBRARIES ${SPEEXDSP_LIBRARY}) + +mark_as_advanced(SPEEXDSP_INCLUDE_DIR SPEEXDSP_LIBRARY) diff --git a/builds/cmake/Modules/Findwildmidi.cmake b/builds/cmake/Modules/Findwildmidi.cmake new file mode 100644 index 0000000000..096e4ed4bf --- /dev/null +++ b/builds/cmake/Modules/Findwildmidi.cmake @@ -0,0 +1,10 @@ +find_path(WILDMIDI_INCLUDE_DIR wildmidi_lib.h) +find_library(WILDMIDI_LIBRARY NAMES wildmidi libwildmidi WildMidi libWildMidi) + +include(FindPackageHandleStandardArgs) +find_package_handle_standard_args(wildmidi DEFAULT_MSG WILDMIDI_INCLUDE_DIR WILDMIDI_LIBRARY) + +set(WILDMIDI_INCLUDE_DIRS ${WILDMIDI_INCLUDE_DIR}) +set(WILDMIDI_LIBRARIES ${WILDMIDI_LIBRARY}) + +mark_as_advanced(WILDMIDI_INCLUDE_DIR WILDMIDI_LIBRARY) From 31600d1e269a4897e13c5c204724e29b8787211f Mon Sep 17 00:00:00 2001 From: Ghabry Date: Mon, 25 Jul 2016 22:11:36 +0200 Subject: [PATCH 02/15] CMake: Simplify code a bit. Remove Shinonome build-step. Consistent white spacing. liblcf building is currently broken, the shared lib must be used. --- CMakeLists.txt | 114 ++++++++++++++++++++++++------------------------- 1 file changed, 55 insertions(+), 59 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 512ec97b0a..c2aedcb19f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -35,7 +35,7 @@ endif() # Adds a library to the liblist if COND is true and the lib is found # When REQ is true the lib is required -function(find_lib LIBNAME COND) +function(find_lib_int LIBNAME COND REQ) if(${COND}) list(APPEND EASYRPG_LIB_LIST ${LIBNAME}) @@ -45,16 +45,30 @@ function(find_lib LIBNAME COND) find_package(${LIBNAME}) endif() - if(${LIBNAME}_FOUND) - string(TOUPPER ${LIBNAME} LIBNAMEUP) - include_directories(${${LIBNAMEUP}_INCLUDE_DIR} ${${LIBNAMEUP}_INCLUDE_DIRS}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${${LIBNAMEUP}_LIBRARY} ${${LIBNAMEUP}_LIBRARIES}) - endif() + string(TOUPPER ${LIBNAME} LIBNAMEUP) + include_directories(${${LIBNAMEUP}_INCLUDE_DIR} ${${LIBNAMEUP}_INCLUDE_DIRS}) + set(NEW_LIBS ${${LIBNAMEUP}_LIBRARY} ${${LIBNAMEUP}_LIBRARIES} PARENT_SCOPE) endif() set(RETVAL ${${LIBNAME}_FOUND} PARENT_SCOPE) - # Export _FOUND variable to global scope + # Export _FOUND variable to parent scope + set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) +endfunction() + +function(find_lib_req LIBNAME COND) + find_lib_int(${LIBNAME} ${COND} ON) + + # Export _FOUND variable to parent scope which is global scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) + set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) +endfunction() + +function(find_lib LIBNAME COND) + find_lib_int(${LIBNAME} ${COND} OFF) + + # Export _FOUND variable to parent scope which is global scope + set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) + set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) endfunction() # liblcf @@ -78,15 +92,12 @@ if (PLAYER_BUILD_LIBLCF) link_directories(${ICU_LIBRARY_DIRS}) else() # Use system package - find_package(liblcf REQUIRED) - include_directories(${LIBLCF_INCLUDE_DIR}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${LIBLCF_LIBRARY}) + find_lib_req(liblcf ON) endif() # Detect all required libraries -# TODO: Expat Iconv for liblcf compile case foreach(i Pixman ZLIB PNG SDL2) - find_lib(${i} ON ON) + find_lib_req(${i} ON) endforeach() # Always enable Wine registry support on non-Windows @@ -95,26 +106,6 @@ else() add_definitions(-DHAVE_WINE=1) endif() -# Shinonome font -option(PLAYER_BUILD_SHINONOME "Regenerate the shinonome font source files which overwrites the files in the repository. Requires Ruby." OFF) - -if (PLAYER_BUILD_SHINONOME) - set(SHINONOME_PATH "${CMAKE_CURRENT_SOURCE_DIR}/resources/shinonome") - set(SHINONOME_SRC_PATH "${CMAKE_CURRENT_SOURCE_DIR}/src") - set(SHINONOME_SRCS "${SHINONOME_SRC_PATH}/shinonome_gothic.cpp" - "${SHINONOME_SRC_PATH}/shinonome_mincho.cpp" - "${SHINONOME_SRC_PATH}/shinonome.h") - find_package(Ruby REQUIRED) - if(RUBY_FOUND) - set(SHINONOME_GENERATOR "${SHINONOME_PATH}/generate_cxx_font.rb") - add_custom_command( - OUTPUT ${SHINONOME_SRCS} - COMMAND "${RUBY_EXECUTABLE}" ARGS "${SHINONOME_GENERATOR}" - DEPENDS "${SHINONOME_GENERATOR}" - WORKING_DIRECTORY "${SHINONOME_PATH}") - endif() -endif() - # freetype and harfbuzz option(PLAYER_WITH_FREETYPE "Support FreeType font rendering" ON) find_lib("Freetype" PLAYER_WITH_FREETYPE) @@ -135,9 +126,7 @@ set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL) if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # SDL2_mixer Audio - find_package(SDL2_mixer REQUIRED) - include_directories(${SDL2_MIXER_INCLUDE_DIR}) - list(APPEND EASYRPG_PLAYER_LIBRARIES ${SDL2_MIXER_LIBRARY}) + find_lib_req(SDL2_mixer ON) add_definitions(-D HAVE_SDL_MIXER=1) # speexdsp @@ -202,13 +191,17 @@ elseif() message(FATAL_ERROR "Invalid Audio Backend") endif() -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src/generated") -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") +if(PLAYER_BUILD_LIBLCF) + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src/generated") + include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") +endif() # library -set(EASYRPG_PLAYER_LIBRARIES_ALL - ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static" liblcf) +set(EASYRPG_PLAYER_LIBRARIES_ALL ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static") +if(PLAYER_BUILD_LIBLCF) + list(APPEND EASYRPG_PLAYER_LIBRARIES liblcf) +endif() # entry point set(MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") @@ -218,7 +211,7 @@ aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRCS) list(REMOVE_ITEM SRCS ${MAIN_FILE}) list(APPEND SRCS ${SHINONOME_SRCS}) if(CMAKE_SYSTEM_NAME MATCHES "Windows") - list(APPEND SRCS "${CMAKE_CURRENT_SOURCE_DIR}/resources/player.rc") + list(APPEND SRCS "${CMAKE_CURRENT_SOURCE_DIR}/resources/player.rc") endif() add_library(${PROJECT_NAME}_Static STATIC ${SRCS}) @@ -226,8 +219,11 @@ add_library(${PROJECT_NAME}_Static STATIC ${SRCS}) add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${MAIN_FILE}) add_executable(${PROJECT_NAME}_com ${MAIN_FILE}) foreach(i ${PROJECT_NAME} ${PROJECT_NAME}_com) - target_link_libraries(${i} ${EASYRPG_PLAYER_LIBRARIES_ALL}) - ### TODO add_dependencies(${i} liblcf ${PROJECT_NAME}_Static) + target_link_libraries(${i} ${EASYRPG_PLAYER_LIBRARIES_ALL}) + add_dependencies(${i} ${PROJECT_NAME}_Static) + if(PLAYER_BUILD_LIBLCF) + add_dependencies(${i} liblcf) + endif() endforeach() install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION bin) @@ -237,28 +233,28 @@ install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION bin) set(MAN_NAME easyrpg-player.6) find_program(A2X_EXECUTABLE NAMES a2x a2x.py) if(NOT A2X_EXECUTABLE STREQUAL "A2X_EXECUTABLE-NOTFOUND") - add_custom_command(OUTPUT resources/${MAN_NAME} - COMMAND ${A2X_EXECUTABLE} -a player_version="0.4.1" -f manpage -D ${CMAKE_CURRENT_BINARY_DIR}/resources ${CMAKE_CURRENT_SOURCE_DIR}/resources/${MAN_NAME}.adoc - DEPENDS resources/${MAN_NAME}.adoc - COMMENT "(Re-)building manpage ${MAN_NAME}" - VERBATIM) - if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") - add_custom_target(man ALL DEPENDS resources/${MAN_NAME}) - install(FILES resources/${MAN_NAME} DESTINATION share/man/man6) - else() - add_custom_target(man DEPENDS resources/${MAN_NAME}) - endif() + add_custom_command(OUTPUT resources/${MAN_NAME} + COMMAND ${A2X_EXECUTABLE} -a player_version="0.4.1" -f manpage -D ${CMAKE_CURRENT_BINARY_DIR}/resources ${CMAKE_CURRENT_SOURCE_DIR}/resources/${MAN_NAME}.adoc + DEPENDS resources/${MAN_NAME}.adoc + COMMENT "(Re-)building manpage ${MAN_NAME}" + VERBATIM) + if(${CMAKE_SYSTEM_NAME} MATCHES "Linux") + add_custom_target(man ALL DEPENDS resources/${MAN_NAME}) + install(FILES resources/${MAN_NAME} DESTINATION share/man/man6) + else() + add_custom_target(man DEPENDS resources/${MAN_NAME}) + endif() else() - # no a2x, distribution archive? - if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/resources/${MAN_NAME}) - install(FILES resources/${MAN_NAME} DESTINATION share/man/man6) - endif() + # no a2x, distribution archive? + if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/resources/${MAN_NAME}) + install(FILES resources/${MAN_NAME} DESTINATION share/man/man6) + endif() endif() # CPack set(CPACK_GENERATOR "ZIP" "TGZ") if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - list(APPEND CPACK_GENERATOR "NSIS") + list(APPEND CPACK_GENERATOR "NSIS") endif() set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) From c2a25ac5b88b0b6c919d631232d53983dec19719 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Wed, 27 Jul 2016 01:14:30 +0200 Subject: [PATCH 03/15] CMake: Set USE_AUDIO_RESAMPLER macro. Fix setting of RETVAL. Fix liblcf include dir. --- CMakeLists.txt | 3 +++ builds/cmake/Modules/Findliblcf.cmake | 5 ++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c2aedcb19f..1118d36580 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -61,6 +61,7 @@ function(find_lib_req LIBNAME COND) # Export _FOUND variable to parent scope which is global scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) + set(RETVAL ${RETVAL} PARENT_SCOPE) endfunction() function(find_lib LIBNAME COND) @@ -69,6 +70,7 @@ function(find_lib LIBNAME COND) # Export _FOUND variable to parent scope which is global scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) + set(RETVAL ${RETVAL} PARENT_SCOPE) endfunction() # liblcf @@ -134,6 +136,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") find_lib("speexdsp" PLAYER_WITH_SPEEXDSP) if(${RETVAL}) add_definitions(-DHAVE_LIBSPEEXDSP) + add_definitions(-DUSE_AUDIO_RESAMPLER) endif() # mpg123 diff --git a/builds/cmake/Modules/Findliblcf.cmake b/builds/cmake/Modules/Findliblcf.cmake index 000d859138..d78fa500c0 100644 --- a/builds/cmake/Modules/Findliblcf.cmake +++ b/builds/cmake/Modules/Findliblcf.cmake @@ -1,5 +1,8 @@ -find_path(LIBLCF_INCLUDE_DIR liblcf/reader_lcf.h) +find_path(LIBLCF_INCLUDE_DIR_INTERNAL liblcf/reader_lcf.h) find_library(LIBLCF_LIBRARY NAMES lcf liblcf) +if(EXISTS "${LIBLCF_INCLUDE_DIR_INTERNAL}") + set(LIBLCF_INCLUDE_DIR "${LIBLCF_INCLUDE_DIR_INTERNAL}/liblcf") +endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(LIBLCF DEFAULT_MSG LIBLCF_INCLUDE_DIR LIBLCF_LIBRARY) From abe704c1bccf1341ca042bcc7f0f3e61d833cc4e Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 18:10:35 +0200 Subject: [PATCH 04/15] CMake: Fix style issues --- CMakeLists.txt | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1118d36580..eecaef5d6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,25 +12,25 @@ list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/Modules") if(CMAKE_BUILD_TYPE MATCHES "Debug") - add_definitions(-D _DEBUG=1) + add_definitions(-D_DEBUG=1) endif() add_definitions( ${PNG_DEFINITIONS} - -D USE_SDL=1) - + -DUSE_SDL=1) + if(CMAKE_GENERATOR MATCHES "Makefile") - add_definitions(-fno-rtti) + add_definitions(-fno-rtti) endif() # Endianess check if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) - include(TestBigEndian) - test_big_endian(WORDS_BIGENDIAN) - if(WORDS_BIGENDIAN) - add_definitions(-D WORDS_BIGENDIAN=1) - endif() + include(TestBigEndian) + test_big_endian(WORDS_BIGENDIAN) + if(WORDS_BIGENDIAN) + add_definitions(-DWORDS_BIGENDIAN=1) + endif() endif() # Adds a library to the liblist if COND is true and the lib is found @@ -129,7 +129,7 @@ set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL) if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # SDL2_mixer Audio find_lib_req(SDL2_mixer ON) - add_definitions(-D HAVE_SDL_MIXER=1) + add_definitions(-DHAVE_SDL_MIXER=1) # speexdsp option(PLAYER_WITH_SPEEXDSP "Resample audio with speexdsp." ON) @@ -173,7 +173,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") if(${PLAYER_ENABLE_FMMIDI} MATCHES "Fallback") add_definitions(-DWANT_FMMIDI=2) elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "ON") - add_definitions(-DWAND_FMMIDI=1) + add_definitions(-DWANT_FMMIDI=1) elseif(${PLAYER_ENABLE_FMMIDI} MATCHES "OFF") # noop else() @@ -187,10 +187,10 @@ elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OpenAL") find_package(FluidSynth REQUIRED) include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR} ${FLUIDSYNTH_INCLUDE_DIR}) list(APPEND EASYRPG_PLAYER_LIBRARIES ${OPENAL_LIBRARY} ${SNDFILE_LIBRARIES} ${FLUIDSYNTH_LIBRARY}) - add_definitions(-D HAVE_OPENAL=1) + add_definitions(-DHAVE_OPENAL=1) elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OFF") add_definitions(-DNO_SDL_MIXER) -elseif() +else() message(FATAL_ERROR "Invalid Audio Backend") endif() From 1de0290de8eb8823dc4b189d6b1e57331e30ef26 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 18:11:05 +0200 Subject: [PATCH 05/15] CMake: Remove CPack support --- CMakeLists.txt | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index eecaef5d6c..47c9ef78a4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,19 +254,6 @@ else() endif() endif() -# CPack -set(CPACK_GENERATOR "ZIP" "TGZ") -if(${CMAKE_SYSTEM_NAME} MATCHES "Windows") - list(APPEND CPACK_GENERATOR "NSIS") -endif() - -set(CPACK_PACKAGE_NAME ${PROJECT_NAME}) -set(CPACK_PACKAGE_VERSION "0.4.1") -set(CPACK_PACKAGE_ICON "${CMAKE_CURRENT_SOURCE_DIR}/resources/player.ico") -set(CPACK_RESOURCE_FILE_README ${CMAKE_CURRENT_SOURCE_DIR}/README) - -include(CPack) - # Doxygen # Handled as extra target "doc" @@ -274,7 +261,6 @@ find_package(Doxygen) if(DOXYGEN_FOUND) # fake autotools variables set(DX_DOCDIR ${CMAKE_CURRENT_BINARY_DIR}/doc) - set(PACKAGE_VERSION ${CPACK_PACKAGE_VERSION}) set(srcdir ${CMAKE_CURRENT_SOURCE_DIR}) configure_file(resources/Doxyfile.in resources/Doxyfile @ONLY) unset(DX_DOCDIR) From a3aa1b4c66e406d2062c06d006b7e9f67e614bf5 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 18:17:49 +0200 Subject: [PATCH 06/15] CMake: Fix FindOggVorbis (searches now for vorbisfile). Rename wildmidi to WildMidi. --- CMakeLists.txt | 6 ++---- builds/cmake/Modules/FindOggVorbis.cmake | 4 ++-- .../Modules/{Findwildmidi.cmake => FindWildMidi.cmake} | 0 3 files changed, 4 insertions(+), 6 deletions(-) rename builds/cmake/Modules/{Findwildmidi.cmake => FindWildMidi.cmake} (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 47c9ef78a4..27a5edb030 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -136,7 +136,6 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") find_lib("speexdsp" PLAYER_WITH_SPEEXDSP) if(${RETVAL}) add_definitions(-DHAVE_LIBSPEEXDSP) - add_definitions(-DUSE_AUDIO_RESAMPLER) endif() # mpg123 @@ -154,7 +153,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") endif() # libogg - option(PLAYER_WITH_LIBOGG "Play OGG audio with libogg or tremor." ON) + option(PLAYER_WITH_LIBOGG "Play OGG audio with libogg." ON) find_lib("OggVorbis" PLAYER_WITH_SPEEXDSP) if(${RETVAL}) add_definitions(-DHAVE_OGGVORBIS) @@ -162,7 +161,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # wildmidi (optional, OFF) option(PLAYER_WITH_WILDMIDI "Play MIDI audio with wildmidi. (optional)" OFF) - find_lib("wildmidi" PLAYER_WITH_WILDMIDI) + find_lib("WildMidi" PLAYER_WITH_WILDMIDI) if(${RETVAL}) add_definitions(-DHAVE_WILDMIDI) endif() @@ -382,4 +381,3 @@ endif() message(STATUS "----------") message(STATUS "") - diff --git a/builds/cmake/Modules/FindOggVorbis.cmake b/builds/cmake/Modules/FindOggVorbis.cmake index 43ab9b7d61..43a444bb40 100644 --- a/builds/cmake/Modules/FindOggVorbis.cmake +++ b/builds/cmake/Modules/FindOggVorbis.cmake @@ -1,5 +1,5 @@ -find_path(OGGVORBIS_INCLUDE_DIR ogg/ogg.h) -find_library(OGGVORBIS_LIBRARY NAMES ogg libogg) +find_path(OGGVORBIS_INCLUDE_DIR vorbis/vorbisfile.h) +find_library(OGGVORBIS_LIBRARY NAMES vorbisfile libvorbisfile) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(OggVorbis DEFAULT_MSG OGGVORBIS_INCLUDE_DIR OGGVORBIS_LIBRARY) diff --git a/builds/cmake/Modules/Findwildmidi.cmake b/builds/cmake/Modules/FindWildMidi.cmake similarity index 100% rename from builds/cmake/Modules/Findwildmidi.cmake rename to builds/cmake/Modules/FindWildMidi.cmake From 4e9ba1ad6db5e1dfe07ec2268da2c9013348fb81 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 18:32:19 +0200 Subject: [PATCH 07/15] CMake: Fix linker errors in tests --- CMakeLists.txt | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 27a5edb030..f0de6a4be6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -77,7 +77,7 @@ endfunction() option(PLAYER_BUILD_LIBLCF "Instead of detecting liblcf the liblcf repository is cloned into lib/liblcf and built together with the Player. This is convenient for development") set(PLAYER_BUILD_LIBLCF_GIT "https://github.com/EasyRPG/liblcf.git" CACHE STRING "Git repository of liblcf to clone when building liblcf. Requires PLAYER_BUILD_LIBLCF=ON.") -if (PLAYER_BUILD_LIBLCF) +if(PLAYER_BUILD_LIBLCF) # liblcf is built as part of this cmake file set(LIBLCF_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf") find_package(Git REQUIRED) @@ -196,9 +196,10 @@ endif() if(PLAYER_BUILD_LIBLCF) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src/generated") - include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") endif() +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") + # library set(EASYRPG_PLAYER_LIBRARIES_ALL ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static") if(PLAYER_BUILD_LIBLCF) @@ -272,13 +273,16 @@ if(DOXYGEN_FOUND) WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources COMMENT "Generating API documentation with Doxygen" VERBATIM) add_custom_target(doc) - add_dependencies(doc player_doc liblcf_doc) + add_dependencies(doc player_doc) + if(PLAYER_BUILD_LIBLCF) + add_dependencies(doc liblcf_doc) + endif() endif() # test option(PLAYER_ENABLE_TESTS "Execute unit tests after compilation finishes" ON) -if (PLAYER_ENABLE_TESTS) +if(PLAYER_ENABLE_TESTS) enable_testing() set(TEST_GAME_REPOSITORY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/TestGame") From 6d6360acfcb9e4f838dcf7b9d4d33855993534a6 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 18:51:37 +0200 Subject: [PATCH 08/15] CMake: Fix liblcf when directly built (PLAYER_BUILD_LIBLCF=ON) --- CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index f0de6a4be6..1323eb8955 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -91,7 +91,6 @@ if(PLAYER_BUILD_LIBLCF) add_subdirectory( ${LIBLCF_PATH}/builds/cmake ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/liblcf) - link_directories(${ICU_LIBRARY_DIRS}) else() # Use system package find_lib_req(liblcf ON) @@ -203,7 +202,7 @@ include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") # library set(EASYRPG_PLAYER_LIBRARIES_ALL ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static") if(PLAYER_BUILD_LIBLCF) - list(APPEND EASYRPG_PLAYER_LIBRARIES liblcf) + list(APPEND EASYRPG_PLAYER_LIBRARIES_ALL liblcf) endif() # entry point From 3f9610188d0ee3503f7fc77d69ee4d30bc40f7b1 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 19:17:10 +0200 Subject: [PATCH 09/15] Fix compilation of OpenAL and No Audio backends --- CMakeLists.txt | 7 ++----- src/audio_al.h | 2 +- src/sdl_ui.cpp | 2 ++ src/sdl_ui.h | 2 ++ src/system.h | 9 +++++---- 5 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 1323eb8955..45d172e802 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,10 +15,7 @@ if(CMAKE_BUILD_TYPE MATCHES "Debug") add_definitions(-D_DEBUG=1) endif() -add_definitions( - ${PNG_DEFINITIONS} - - -DUSE_SDL=1) +add_definitions(-DUSE_SDL=1) if(CMAKE_GENERATOR MATCHES "Makefile") add_definitions(-fno-rtti) @@ -185,7 +182,7 @@ elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OpenAL") find_package(FluidSynth REQUIRED) include_directories(${OPENAL_INCLUDE_DIR} ${SNDFILE_INCLUDE_DIR} ${FLUIDSYNTH_INCLUDE_DIR}) list(APPEND EASYRPG_PLAYER_LIBRARIES ${OPENAL_LIBRARY} ${SNDFILE_LIBRARIES} ${FLUIDSYNTH_LIBRARY}) - add_definitions(-DHAVE_OPENAL=1) + add_definitions(-DHAVE_OPENAL) elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OFF") add_definitions(-DNO_SDL_MIXER) else() diff --git a/src/audio_al.h b/src/audio_al.h index a1580bcc8f..9fb67d32d4 100644 --- a/src/audio_al.h +++ b/src/audio_al.h @@ -42,7 +42,7 @@ struct ALAudio : public AudioInterface { void BGM_Stop() override; bool BGM_PlayedOnce() const override; bool BGM_IsPlaying() const override; - unsigned BGM_GetTicks() override; + unsigned BGM_GetTicks() const override; void BGM_Fade(int) override; void BGM_Volume(int) override; void BGM_Pitch(int) override; diff --git a/src/sdl_ui.cpp b/src/sdl_ui.cpp index ae1ed7626a..6836a20539 100644 --- a/src/sdl_ui.cpp +++ b/src/sdl_ui.cpp @@ -65,9 +65,11 @@ # include "audio_al.h" #endif +#ifdef SUPPORT_AUDIO AudioInterface& SdlUi::GetAudio() { return *audio_; } +#endif // SDL 1.2 compatibility #if SDL_MAJOR_VERSION==1 diff --git a/src/sdl_ui.h b/src/sdl_ui.h index cc091dfaf4..0b7b9a9058 100644 --- a/src/sdl_ui.h +++ b/src/sdl_ui.h @@ -78,7 +78,9 @@ class SdlUi : public BaseUi { uint32_t GetTicks() const override; void Sleep(uint32_t time_milli) override; +#ifdef SUPPORT_AUDIO AudioInterface& GetAudio() override; +#endif /** @} */ diff --git a/src/system.h b/src/system.h index c47dcb83e7..f8bcce6a36 100644 --- a/src/system.h +++ b/src/system.h @@ -65,7 +65,8 @@ #ifdef USE_SDL # define USE_SDL_MIXER - +# define SUPPORT_AUDIO +# # ifdef PSP # undef USE_SDL_MIXER # define NO_SDL_MIXER @@ -97,9 +98,9 @@ # endif # ifdef NO_SDL_MIXER -# undef SUPPORT_AUDIO -# else -# define SUPPORT_AUDIO +# if !defined(HAVE_OPENAL) +# undef SUPPORT_AUDIO +# endif # endif # ifdef WANT_FMMIDI From d05d02997c69794efc9bd3d6bd9cad6ef6a81d48 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sat, 6 Aug 2016 19:44:39 +0200 Subject: [PATCH 10/15] Fix FileFinder test --- tests/filefinder.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/tests/filefinder.cpp b/tests/filefinder.cpp index 89310b9e90..3c18b3d9b4 100644 --- a/tests/filefinder.cpp +++ b/tests/filefinder.cpp @@ -6,33 +6,33 @@ #include "main_data.h" namespace { -/* void CheckIsRPG2kProject() { - EASYRPG_SHARED_PTR const - tree = FileFinder::CreateProjectTree("."); + std::shared_ptr const + tree = FileFinder::CreateDirectoryTree("."); assert(FileFinder::IsRPG2kProject(*tree)); + FileFinder::SetDirectoryTree(tree); } -*/ + void CheckIsDirectory() { assert(FileFinder::IsDirectory(".")); } void CheckEnglishFilename() { - assert(!FileFinder::FindImage("Backdrop", "castle").empty()); + assert(!FileFinder::FindImage("CharSet", "Chara1").empty()); } - } int main(int, char**) { Main_Data::Init(); + + CheckIsDirectory(); + CheckIsRPG2kProject(); + Player::GetEncoding(); Player::escape_symbol = ReaderUtil::Recode("\\", Player::encoding); Player::engine = Player::EngineRpg2k; -// FileFinder::Init(); FileFinder::InitRtpPaths(); - CheckIsDirectory(); -// CheckIsRPG2kProject(); CheckEnglishFilename(); FileFinder::Quit(); From e866e7bc6d0c41ea9d083622f6c29aa3d158810c Mon Sep 17 00:00:00 2001 From: Ghabry Date: Tue, 16 Aug 2016 02:34:54 +0200 Subject: [PATCH 11/15] Cmake: Fix version detection of SDL2 mixer --- CMakeLists.txt | 4 ++-- builds/cmake/Modules/FindSDL2_mixer.cmake | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 45d172e802..0428e8db16 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -149,8 +149,8 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") endif() # libogg - option(PLAYER_WITH_LIBOGG "Play OGG audio with libogg." ON) - find_lib("OggVorbis" PLAYER_WITH_SPEEXDSP) + option(PLAYER_WITH_OGGVORBIS "Play OGG audio with libogg." ON) + find_lib("OggVorbis" PLAYER_WITH_OGGVORBIS) if(${RETVAL}) add_definitions(-DHAVE_OGGVORBIS) endif() diff --git a/builds/cmake/Modules/FindSDL2_mixer.cmake b/builds/cmake/Modules/FindSDL2_mixer.cmake index 1c314950d8..2b6291783c 100644 --- a/builds/cmake/Modules/FindSDL2_mixer.cmake +++ b/builds/cmake/Modules/FindSDL2_mixer.cmake @@ -108,12 +108,12 @@ find_library(SDL2_MIXER_LIBRARY ) if(SDL2_MIXER_INCLUDE_DIR AND EXISTS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h") - file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+[0-9]+$") - file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+[0-9]+$") - file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+[0-9]+$") - string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}") - string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}") - string(REGEX REPLACE "^#define[ \t]+SDL2_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}") + file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MAJOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_MINOR_LINE REGEX "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+[0-9]+$") + file(STRINGS "${SDL2_MIXER_INCLUDE_DIR}/SDL_mixer.h" SDL2_MIXER_VERSION_PATCH_LINE REGEX "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+[0-9]+$") + string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MAJOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MAJOR "${SDL2_MIXER_VERSION_MAJOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_MINOR_VERSION[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_MINOR "${SDL2_MIXER_VERSION_MINOR_LINE}") + string(REGEX REPLACE "^#define[ \t]+SDL_MIXER_PATCHLEVEL[ \t]+([0-9]+)$" "\\1" SDL2_MIXER_VERSION_PATCH "${SDL2_MIXER_VERSION_PATCH_LINE}") set(SDL2_MIXER_VERSION_STRING ${SDL2_MIXER_VERSION_MAJOR}.${SDL2_MIXER_VERSION_MINOR}.${SDL2_MIXER_VERSION_PATCH}) unset(SDL2_MIXER_VERSION_MAJOR_LINE) unset(SDL2_MIXER_VERSION_MINOR_LINE) From 616585423ab61cf3321ba1e5bfa0ee92b323e719 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Tue, 23 Aug 2016 01:38:35 +0200 Subject: [PATCH 12/15] CMake: Script cleanup --- CMakeLists.txt | 67 ++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 35 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 0428e8db16..796e761bb9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,24 +2,27 @@ cmake_minimum_required(VERSION 3.1) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED on) +include(CMakeDependentOption) project(EasyRPG_Player CXX C) -set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) -set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) +# Include directories +include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") +# Extra FindModule files list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/builds/cmake/Modules") +# Add compile flags +if(CMAKE_GENERATOR MATCHES "Makefile") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti") +endif() + if(CMAKE_BUILD_TYPE MATCHES "Debug") add_definitions(-D_DEBUG=1) endif() - -add_definitions(-DUSE_SDL=1) -if(CMAKE_GENERATOR MATCHES "Makefile") - add_definitions(-fno-rtti) -endif() +add_definitions(-DUSE_SDL=1) # Endianess check if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) @@ -47,7 +50,6 @@ function(find_lib_int LIBNAME COND REQ) set(NEW_LIBS ${${LIBNAMEUP}_LIBRARY} ${${LIBNAMEUP}_LIBRARIES} PARENT_SCOPE) endif() - set(RETVAL ${${LIBNAME}_FOUND} PARENT_SCOPE) # Export _FOUND variable to parent scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) endfunction() @@ -58,7 +60,6 @@ function(find_lib_req LIBNAME COND) # Export _FOUND variable to parent scope which is global scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) - set(RETVAL ${RETVAL} PARENT_SCOPE) endfunction() function(find_lib LIBNAME COND) @@ -67,7 +68,6 @@ function(find_lib LIBNAME COND) # Export _FOUND variable to parent scope which is global scope set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) - set(RETVAL ${RETVAL} PARENT_SCOPE) endfunction() # liblcf @@ -79,7 +79,7 @@ if(PLAYER_BUILD_LIBLCF) set(LIBLCF_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf") find_package(Git REQUIRED) if(NOT EXISTS ${LIBLCF_PATH}) - execute_process(COMMAND ${GIT_EXECUTABLE} clone "--depth=1" + execute_process(COMMAND ${GIT_EXECUTABLE} clone "--depth=1" "${PLAYER_BUILD_LIBLCF_GIT}" "${LIBLCF_PATH}") endif() @@ -99,29 +99,27 @@ foreach(i Pixman ZLIB PNG SDL2) endforeach() # Always enable Wine registry support on non-Windows -if(CMAKE_SYSTEM_NAME MATCHES "Windows") -else() +if(NOT CMAKE_SYSTEM_NAME MATCHES "Windows") add_definitions(-DHAVE_WINE=1) endif() # freetype and harfbuzz option(PLAYER_WITH_FREETYPE "Support FreeType font rendering" ON) +CMAKE_DEPENDENT_OPTION(PLAYER_WITH_HARFBUZZ "Enable HarfBuzz text shaping (Requires FreeType)" ON "PLAYER_WITH_FREETYPE" OFF) find_lib("Freetype" PLAYER_WITH_FREETYPE) -if(${RETVAL}) +if(Freetype_FOUND) add_definitions(-DHAVE_FREETYPE) - option(PLAYER_WITH_HARFBUZZ "Enable HarfBuzz text shaping (Requires FreeType)" ON) find_lib("Harfbuzz" PLAYER_WITH_HARFBUZZ) - if(${RETVAL}) + if(Harfbuzz_FOUND) add_definitions(-DHAVE_HARFBUZZ) endif() endif() # Sound system to use set(PLAYER_AUDIO_BACKEND "SDL2_mixer" CACHE STRING "Audio system to use. The SDL2_mixer audio system provides advanced features required by RPG Maker. Options: SDL2_mixer OpenAL OFF") -set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL) +set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL OFF) # Configure Audio backends - if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # SDL2_mixer Audio find_lib_req(SDL2_mixer ON) @@ -130,35 +128,35 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # speexdsp option(PLAYER_WITH_SPEEXDSP "Resample audio with speexdsp." ON) find_lib("speexdsp" PLAYER_WITH_SPEEXDSP) - if(${RETVAL}) + if(speexdsp_FOUND) add_definitions(-DHAVE_LIBSPEEXDSP) endif() # mpg123 option(PLAYER_WITH_MPG123 "Play MP3 audio with libmpg123." ON) find_lib("mpg123" PLAYER_WITH_MPG123) - if(${RETVAL}) + if(mpg123_FOUND) add_definitions(-DHAVE_MPG123) endif() # libsndfile option(PLAYER_WITH_LIBSNDFILE "Play WAV audio with libsndfile." ON) find_lib("SndFile" PLAYER_WITH_LIBSNDFILE) - if(${RETVAL}) + if(SndFile_FOUND) add_definitions(-DHAVE_LIBSNDFILE) endif() # libogg option(PLAYER_WITH_OGGVORBIS "Play OGG audio with libogg." ON) find_lib("OggVorbis" PLAYER_WITH_OGGVORBIS) - if(${RETVAL}) + if(OggVorbis_FOUND) add_definitions(-DHAVE_OGGVORBIS) endif() # wildmidi (optional, OFF) option(PLAYER_WITH_WILDMIDI "Play MIDI audio with wildmidi. (optional)" OFF) find_lib("WildMidi" PLAYER_WITH_WILDMIDI) - if(${RETVAL}) + if(WildMidi_FOUND) add_definitions(-DHAVE_WILDMIDI) endif() @@ -189,19 +187,22 @@ else() message(FATAL_ERROR "Invalid Audio Backend") endif() +# Additional include directories if(PLAYER_BUILD_LIBLCF) include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src") include_directories("${CMAKE_CURRENT_SOURCE_DIR}/lib/liblcf/src/generated") endif() -include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") - -# library +# Libraries set(EASYRPG_PLAYER_LIBRARIES_ALL ${EASYRPG_PLAYER_LIBRARIES} "${PROJECT_NAME}_Static") if(PLAYER_BUILD_LIBLCF) list(APPEND EASYRPG_PLAYER_LIBRARIES_ALL liblcf) endif() +# Output path +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) +set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) + # entry point set(MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") @@ -216,8 +217,7 @@ add_library(${PROJECT_NAME}_Static STATIC ${SRCS}) # executable add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${MAIN_FILE}) -add_executable(${PROJECT_NAME}_com ${MAIN_FILE}) -foreach(i ${PROJECT_NAME} ${PROJECT_NAME}_com) +foreach(i ${PROJECT_NAME} ${PROJECT_NAME}) target_link_libraries(${i} ${EASYRPG_PLAYER_LIBRARIES_ALL}) add_dependencies(${i} ${PROJECT_NAME}_Static) if(PLAYER_BUILD_LIBLCF) @@ -283,7 +283,7 @@ if(PLAYER_ENABLE_TESTS) set(TEST_GAME_REPOSITORY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/lib/TestGame") if(NOT EXISTS ${TEST_GAME_REPOSITORY_PATH}) - execute_process(COMMAND ${GIT_EXECUTABLE} clone + execute_process(COMMAND ${GIT_EXECUTABLE} clone "--depth=1" "https://github.com/EasyRPG/TestGame.git" "${TEST_GAME_REPOSITORY_PATH}") endif() @@ -313,8 +313,6 @@ endif() # Print summary message(STATUS "") -message(STATUS "Summary:") -message(STATUS "----------") if(PLAYER_BUILD_LIBLCF) message(STATUS "liblcf: Built from ${PLAYER_BUILD_LIBLCF_GIT}") message(STATUS "") @@ -337,7 +335,7 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") message(STATUS "MP3 playback: mpg123") else() set(SDL_MIXER_USED ON) - message(STATUS "MP3 playback: SDL2_mixer. Some MP3 files will crash or play noise!") + message(STATUS "MP3 playback: SDL2_mixer. Some MP3 files will crash or play noise.") endif() if(OggVorbis_FOUND) @@ -351,14 +349,14 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") message(STATUS "WAV playback: libsndfile") else() set(SDL_MIXER_USED ON) - message(STATUS "WAV playback: SDL2_mixer. Some WAV formats are unsupported.") + message(STATUS "WAV playback: SDL2_mixer") endif() if(speexdsp_FOUND) message(STATUS "Resampler: speexdsp") else() set(SDL_MIXER_USED ON) - message(STATUS "Resampler: SDL2. Resampling will not work correctly!") + message(STATUS "Resampler: SDL2") endif() if(SDL_MIXER_USED) @@ -379,5 +377,4 @@ else() message(STATUS "Font rendering: built-in (Shinonome)") endif() -message(STATUS "----------") message(STATUS "") From 23f1564706d319c2b4115cd15489e36af2e707a1 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sun, 11 Sep 2016 01:32:20 +0200 Subject: [PATCH 13/15] CMake: Add XMP --- CMakeLists.txt | 29 ++++++++++++++++++++++------- builds/cmake/Modules/FindXMP.cmake | 19 +++++++++++++++++++ 2 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 builds/cmake/Modules/FindXMP.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 796e761bb9..328e88171d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -171,7 +171,15 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # noop else() message(FATAL_ERROR "Bad FmMidi setting") - endif() + endif() + + # xmp (lite) + option(PLAYER_WITH_XMP "Play MOD audio with libxmp." ON) + find_lib("XMP" PLAYER_WITH_XMP) + if(XMP_FOUND) + add_definitions(-DHAVE_XMP) + endif() + elseif(${PLAYER_AUDIO_BACKEND} MATCHES "OpenAL") # OpenAL Audio add_definitions(-DNO_SDL_MIXER) @@ -320,6 +328,13 @@ endif() message(STATUS "Audio backend: ${PLAYER_AUDIO_BACKEND}") if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") message(STATUS "") + + if(SndFile_FOUND) + message(STATUS "WAV playback: libsndfile") + else() + set(SDL_MIXER_USED ON) + message(STATUS "WAV playback: SDL2_mixer") + endif() if(wildmidi_FOUND) message(STATUS "MIDI playback: WildMidi") @@ -345,11 +360,11 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") message(STATUS "OGG playback: SDL2_mixer") endif() - if(SndFile_FOUND) - message(STATUS "WAV playback: libsndfile") + if(XMP_FOUND) + message(STATUS "MOD playback: libxmp") else() set(SDL_MIXER_USED ON) - message(STATUS "WAV playback: SDL2_mixer") + message(STATUS "MOD playback: SDL2_mixer") endif() if(speexdsp_FOUND) @@ -361,9 +376,9 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") if(SDL_MIXER_USED) message(STATUS "") - message(STATUS " WARNING:") - message(STATUS " Using SDL2_mixer directly for playback or resampling is not recommended.") - message(STATUS " Some RPG Maker features (e.g. pitch changes) will not work.") + message(STATUS "WARNING:") + message(STATUS "Using SDL2_mixer directly for playback or resampling is not recommended.") + message(STATUS "Some RPG Maker features (e.g. pitch changes) will not work.") endif() endif() diff --git a/builds/cmake/Modules/FindXMP.cmake b/builds/cmake/Modules/FindXMP.cmake new file mode 100644 index 0000000000..7776e4fe37 --- /dev/null +++ b/builds/cmake/Modules/FindXMP.cmake @@ -0,0 +1,19 @@ +include(FindPackageHandleStandardArgs) + +find_path(XMP_INCLUDE_DIR_INTERNAL xmp.h) +find_library(XMP_LIBRARY xmp libxmp xmp-lite libxmp-lite) +if(EXISTS "${XMP_INCLUDE_DIR_INTERNAL}") + set(XMP_INCLUDE_DIR "${XMP_INCLUDE_DIR_INTERNAL}") +else() + find_path(XMP_INCLUDE_DIR_INTERNAL libxmp/xmp.h) + if(EXISTS "${XMP_INCLUDE_DIR_INTERNAL}") + set(XMP_INCLUDE_DIR "${XMP_INCLUDE_DIR_INTERNAL}/libxmp") + else() + find_path(XMP_INCLUDE_DIR_INTERNAL libxmp-lite/xmp.h) + if(EXISTS "${XMP_INCLUDE_DIR_INTERNAL}") + set(XMP_INCLUDE_DIR "${XMP_INCLUDE_DIR_INTERNAL}/libxmp-lite") + endif() + endif() +endif() + +find_package_handle_standard_args(XMP REQUIRED_VARS XMP_INCLUDE_DIR XMP_LIBRARY) From 82fd3e83c196f42e129aaf038112b9d62dad1890 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Sun, 11 Sep 2016 01:54:44 +0200 Subject: [PATCH 14/15] CMake: Hardcode src files instead of aux-ing them --- CMakeLists.txt | 196 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 181 insertions(+), 15 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 328e88171d..e25050ef7a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,158 @@ include(CMakeDependentOption) project(EasyRPG_Player CXX C) +# Source Files +set(PLAYER_SRCS + src/async_handler.cpp + src/audio_al.cpp + src/audio.cpp + src/audio_decoder.cpp + src/audio_resampler.cpp + src/audio_sdl.cpp + src/audio_secache.cpp + src/background.cpp + src/baseui.cpp + src/battle_animation.cpp + src/bitmap.cpp + src/cache.cpp + src/color.cpp + src/decoder_fmmidi.cpp + src/decoder_libsndfile.cpp + src/decoder_mpg123.cpp + src/decoder_oggvorbis.cpp + src/decoder_wav.cpp + src/decoder_wildmidi.cpp + src/decoder_xmp.cpp + src/effects.cpp + src/filefinder.cpp + src/font.cpp + src/frame.cpp + src/game_actor.cpp + src/game_actors.cpp + src/game_battlealgorithm.cpp + src/game_battle.cpp + src/game_battler.cpp + src/game_character.cpp + src/game_commonevent.cpp + src/game_enemy.cpp + src/game_enemyparty.cpp + src/game_event.cpp + src/game_interpreter_battle.cpp + src/game_interpreter.cpp + src/game_interpreter_map.cpp + src/game_map.cpp + src/game_message.cpp + src/game_party_base.cpp + src/game_party.cpp + src/game_picture.cpp + src/game_player.cpp + src/game_screen.cpp + src/game_switches.cpp + src/game_system.cpp + src/game_targets.cpp + src/game_temp.cpp + src/game_variables.cpp + src/game_vehicle.cpp + src/graphics.cpp + src/hslrgb.cpp + src/image_bmp.cpp + src/image_png.cpp + src/image_xyz.cpp + src/input_buttons_desktop.cpp + src/input_buttons_gekko.cpp + src/input_buttons_opendingux.cpp + src/input_buttons_psp.cpp + src/input.cpp + src/main_data.cpp + src/message_overlay.cpp + src/output.cpp + src/plane.cpp + src/player.cpp + src/rect.cpp + src/registry.cpp + src/registry_wine.cpp + src/rtp_table.cpp + src/scene_actortarget.cpp + src/scene_battle.cpp + src/scene_battle_rpg2k3.cpp + src/scene_battle_rpg2k.cpp + src/scene.cpp + src/scene_debug.cpp + src/scene_end.cpp + src/scene_equip.cpp + src/scene_file.cpp + src/scene_gamebrowser.cpp + src/scene_gameover.cpp + src/scene_item.cpp + src/scene_load.cpp + src/scene_logo.cpp + src/scene_map.cpp + src/scene_menu.cpp + src/scene_name.cpp + src/scene_order.cpp + src/scene_save.cpp + src/scene_shop.cpp + src/scene_skill.cpp + src/scene_status.cpp + src/scene_teleport.cpp + src/scene_title.cpp + src/screen.cpp + src/sdl_ui.cpp + src/shinonome_gothic.cpp + src/shinonome_mincho.cpp + src/sprite_airshipshadow.cpp + src/sprite_battler.cpp + src/sprite_character.cpp + src/sprite.cpp + src/spriteset_battle.cpp + src/spriteset_map.cpp + src/sprite_timer.cpp + src/text.cpp + src/tilemap.cpp + src/tilemap_layer.cpp + src/tone.cpp + src/utils.cpp + src/util_win.cpp + src/weather.cpp + src/window_about.cpp + src/window_actorinfo.cpp + src/window_actorstatus.cpp + src/window_actortarget.cpp + src/window_base.cpp + src/window_battlecommand.cpp + src/window_battlemessage.cpp + src/window_battleoption.cpp + src/window_battlestatus.cpp + src/window_command.cpp + src/window.cpp + src/window_equip.cpp + src/window_equipitem.cpp + src/window_equipstatus.cpp + src/window_face.cpp + src/window_gamelist.cpp + src/window_gold.cpp + src/window_help.cpp + src/window_item.cpp + src/window_keyboard.cpp + src/window_menustatus.cpp + src/window_message.cpp + src/window_name.cpp + src/window_numberinput.cpp + src/window_savefile.cpp + src/window_selectable.cpp + src/window_shopbuy.cpp + src/window_shop.cpp + src/window_shopnumber.cpp + src/window_shopparty.cpp + src/window_shopsell.cpp + src/window_shopstatus.cpp + src/window_skill.cpp + src/window_skillstatus.cpp + src/window_targetstatus.cpp + src/window_teleport.cpp + src/window_varlist.cpp +) + # Include directories include_directories("${CMAKE_CURRENT_SOURCE_DIR}/src") @@ -71,7 +223,7 @@ function(find_lib LIBNAME COND) endfunction() # liblcf -option(PLAYER_BUILD_LIBLCF "Instead of detecting liblcf the liblcf repository is cloned into lib/liblcf and built together with the Player. This is convenient for development") +option(PLAYER_BUILD_LIBLCF "Instead of detecting liblcf the liblcf repository is cloned into lib/liblcf and built together with the Player. This is convenient for development" OFF) set(PLAYER_BUILD_LIBLCF_GIT "https://github.com/EasyRPG/liblcf.git" CACHE STRING "Git repository of liblcf to clone when building liblcf. Requires PLAYER_BUILD_LIBLCF=ON.") if(PLAYER_BUILD_LIBLCF) @@ -173,6 +325,13 @@ if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") message(FATAL_ERROR "Bad FmMidi setting") endif() + if(NOT ${PLAYER_ENABLE_FMMIDI} MATCHES "OFF") + list(APPEND PLAYER_SRCS + src/midisequencer.cpp + src/midisynth.cpp + ) + endif() + # xmp (lite) option(PLAYER_WITH_XMP "Play MOD audio with libxmp." ON) find_lib("XMP" PLAYER_WITH_XMP) @@ -211,20 +370,29 @@ endif() set(EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/bin) set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) -# entry point -set(MAIN_FILE "${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp") +# Entry point +set(EXE_FILES "src/main.cpp") + +# Add prefix (CMAKE_CURRENT_SOURCE_DIR) to list elements +FUNCTION(PREPEND var prefix) + SET(listVar "") + FOREACH(f ${ARGN}) + LIST(APPEND listVar "${prefix}/${f}") + ENDFOREACH(f) + SET(${var} "${listVar}" PARENT_SCOPE) +ENDFUNCTION(PREPEND) -# static library -aux_source_directory(${CMAKE_CURRENT_SOURCE_DIR}/src SRCS) -list(REMOVE_ITEM SRCS ${MAIN_FILE}) -list(APPEND SRCS ${SHINONOME_SRCS}) +PREPEND(PLAYER_SRCS ${CMAKE_CURRENT_SOURCE_DIR} ${PLAYER_SRCS}) +PREPEND(EXE_FILES ${CMAKE_CURRENT_SOURCE_DIR} ${EXE_FILES}) + +# Static library if(CMAKE_SYSTEM_NAME MATCHES "Windows") - list(APPEND SRCS "${CMAKE_CURRENT_SOURCE_DIR}/resources/player.rc") + list(APPEND PLAYER_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/resources/player.rc") endif() -add_library(${PROJECT_NAME}_Static STATIC ${SRCS}) +add_library(${PROJECT_NAME}_Static STATIC ${PLAYER_SRCS}) -# executable -add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${MAIN_FILE}) +# Executable +add_executable(${PROJECT_NAME} MACOSX_BUNDLE ${EXE_FILES}) foreach(i ${PROJECT_NAME} ${PROJECT_NAME}) target_link_libraries(${i} ${EASYRPG_PLAYER_LIBRARIES_ALL}) add_dependencies(${i} ${PROJECT_NAME}_Static) @@ -236,7 +404,6 @@ install(TARGETS ${PROJECT_NAME} EXPORT ${PROJECT_NAME} DESTINATION bin) # manpage # Handled as extra target "man" - set(MAN_NAME easyrpg-player.6) find_program(A2X_EXECUTABLE NAMES a2x a2x.py) if(NOT A2X_EXECUTABLE STREQUAL "A2X_EXECUTABLE-NOTFOUND") @@ -260,7 +427,6 @@ endif() # Doxygen # Handled as extra target "doc" - find_package(Doxygen) if(DOXYGEN_FOUND) # fake autotools variables @@ -273,7 +439,7 @@ if(DOXYGEN_FOUND) add_custom_target(player_doc ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/resources/Doxyfile - DEPENDS ${SRCS} ${MAIN_FILE} + DEPENDS ${PLAYER_SRCS} ${EXE_FILES} WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/resources COMMENT "Generating API documentation with Doxygen" VERBATIM) add_custom_target(doc) @@ -283,7 +449,7 @@ if(DOXYGEN_FOUND) endif() endif() -# test +# Unit tests option(PLAYER_ENABLE_TESTS "Execute unit tests after compilation finishes" ON) if(PLAYER_ENABLE_TESTS) From 93c0955d743202e144803cdda74e60945f029cd9 Mon Sep 17 00:00:00 2001 From: Ghabry Date: Thu, 15 Sep 2016 16:38:08 +0200 Subject: [PATCH 15/15] CMake: Fix build error when an optional lib was not found. Fix problems in CMake Module files. --- CMakeLists.txt | 47 +++++++++-------------- builds/cmake/Modules/FindFluidSynth.cmake | 5 +++ builds/cmake/Modules/FindHarfbuzz.cmake | 5 +++ builds/cmake/Modules/FindPixman.cmake | 5 +++ builds/cmake/Modules/FindSDL2.cmake | 5 +++ builds/cmake/Modules/FindXMP.cmake | 5 +++ builds/cmake/Modules/Findliblcf.cmake | 2 +- 7 files changed, 44 insertions(+), 30 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e25050ef7a..b3dcda0c5c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -186,40 +186,29 @@ if(NOT DEFINED CMAKE_TOOLCHAIN_FILE) endif() # Adds a library to the liblist if COND is true and the lib is found -# When REQ is true the lib is required -function(find_lib_int LIBNAME COND REQ) +# When COND is REQUIRED the lib is required +function(find_lib LIBNAME COND) + set(REQ OFF) + if(${COND} MATCHES "REQUIRED") + set(COND ON) + set(REQ ON) + endif() + if(${COND}) - list(APPEND EASYRPG_LIB_LIST ${LIBNAME}) - if(${REQ}) find_package(${LIBNAME} REQUIRED) else() find_package(${LIBNAME}) endif() - string(TOUPPER ${LIBNAME} LIBNAMEUP) - include_directories(${${LIBNAMEUP}_INCLUDE_DIR} ${${LIBNAMEUP}_INCLUDE_DIRS}) - set(NEW_LIBS ${${LIBNAMEUP}_LIBRARY} ${${LIBNAMEUP}_LIBRARIES} PARENT_SCOPE) - endif() - - # Export _FOUND variable to parent scope - set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) -endfunction() - -function(find_lib_req LIBNAME COND) - find_lib_int(${LIBNAME} ${COND} ON) - - # Export _FOUND variable to parent scope which is global scope - set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) - set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) -endfunction() + if(${${LIBNAME}_FOUND}) + string(TOUPPER ${LIBNAME} LIBNAMEUP) + include_directories(${${LIBNAMEUP}_INCLUDE_DIRS}) + set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${${LIBNAMEUP}_LIBRARIES} PARENT_SCOPE) + endif() -function(find_lib LIBNAME COND) - find_lib_int(${LIBNAME} ${COND} OFF) - - # Export _FOUND variable to parent scope which is global scope - set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) - set(EASYRPG_PLAYER_LIBRARIES ${EASYRPG_PLAYER_LIBRARIES} ${NEW_LIBS} PARENT_SCOPE) + set(${LIBNAME}_FOUND ${${LIBNAME}_FOUND} PARENT_SCOPE) + endif() endfunction() # liblcf @@ -242,12 +231,12 @@ if(PLAYER_BUILD_LIBLCF) ${CMAKE_CURRENT_BINARY_DIR}/CMakeFiles/liblcf) else() # Use system package - find_lib_req(liblcf ON) + find_lib(liblcf REQUIRED) endif() # Detect all required libraries foreach(i Pixman ZLIB PNG SDL2) - find_lib_req(${i} ON) + find_lib(${i} REQUIRED) endforeach() # Always enable Wine registry support on non-Windows @@ -274,7 +263,7 @@ set_property(CACHE PLAYER_AUDIO_BACKEND PROPERTY STRINGS SDL2 OpenAL OFF) # Configure Audio backends if(${PLAYER_AUDIO_BACKEND} MATCHES "SDL2_mixer") # SDL2_mixer Audio - find_lib_req(SDL2_mixer ON) + find_lib(SDL2_mixer REQUIRED) add_definitions(-DHAVE_SDL_MIXER=1) # speexdsp diff --git a/builds/cmake/Modules/FindFluidSynth.cmake b/builds/cmake/Modules/FindFluidSynth.cmake index b65bb2e5d4..1dda99749f 100644 --- a/builds/cmake/Modules/FindFluidSynth.cmake +++ b/builds/cmake/Modules/FindFluidSynth.cmake @@ -3,3 +3,8 @@ find_path(FLUIDSYNTH_INCLUDE_DIR "fluidsynth.h") include(FindPackageHandleStandardArgs) find_package_handle_standard_args(FluidSynth DEFAULT_MSG FLUIDSYNTH_LIBRARY FLUIDSYNTH_INCLUDE_DIR) + +set(FLUIDSYNTH_INCLUDE_DIRS ${FLUIDSYNTH_INCLUDE_DIR}) +set(FLUIDSYNTH_LIBRARIES ${FLUIDSYNTH_LIBRARY}) + +mark_as_advanced(FLUIDSYNTH_INCLUDE_DIR FLUIDSYNTH_LIBRARY) diff --git a/builds/cmake/Modules/FindHarfbuzz.cmake b/builds/cmake/Modules/FindHarfbuzz.cmake index 4d4aed49ed..45956c80e6 100644 --- a/builds/cmake/Modules/FindHarfbuzz.cmake +++ b/builds/cmake/Modules/FindHarfbuzz.cmake @@ -12,3 +12,8 @@ endif() find_package_handle_standard_args(Harfbuzz REQUIRED_VARS HARFBUZZ_INCLUDE_DIR HARFBUZZ_LIBRARY) + +set(HARFBUZZ_INCLUDE_DIRS ${HARFBUZZ_INCLUDE_DIR}) +set(HARFBUZZ_LIBRARIES ${HARFBUZZ_LIBRARY}) + +mark_as_advanced(HARFBUZZ_INCLUDE_DIR HARFBUZZ_LIBRARY) diff --git a/builds/cmake/Modules/FindPixman.cmake b/builds/cmake/Modules/FindPixman.cmake index d07390fdf8..f6bc031063 100644 --- a/builds/cmake/Modules/FindPixman.cmake +++ b/builds/cmake/Modules/FindPixman.cmake @@ -12,3 +12,8 @@ endif() find_package_handle_standard_args(Pixman REQUIRED_VARS PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY) + +set(PIXMAN_INCLUDE_DIRS ${PIXMAN_INCLUDE_DIR}) +set(PIXMAN_LIBRARIES ${PIXMAN_LIBRARY}) + +mark_as_advanced(PIXMAN_INCLUDE_DIR PIXMAN_LIBRARY) diff --git a/builds/cmake/Modules/FindSDL2.cmake b/builds/cmake/Modules/FindSDL2.cmake index 7f52d0448d..66bdd339b6 100644 --- a/builds/cmake/Modules/FindSDL2.cmake +++ b/builds/cmake/Modules/FindSDL2.cmake @@ -228,3 +228,8 @@ include(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(SDL2 REQUIRED_VARS SDL2_LIBRARY SDL2_INCLUDE_DIR VERSION_VAR SDL2_VERSION_STRING) + +set(SDL2_INCLUDE_DIRS ${SDL2_INCLUDE_DIR}) +set(SDL2_LIBRARIES ${SDL2_LIBRARY}) + +mark_as_advanced(SDL2_INCLUDE_DIR SDL2_LIBRARY) diff --git a/builds/cmake/Modules/FindXMP.cmake b/builds/cmake/Modules/FindXMP.cmake index 7776e4fe37..5e4127e02c 100644 --- a/builds/cmake/Modules/FindXMP.cmake +++ b/builds/cmake/Modules/FindXMP.cmake @@ -17,3 +17,8 @@ else() endif() find_package_handle_standard_args(XMP REQUIRED_VARS XMP_INCLUDE_DIR XMP_LIBRARY) + +set(XMP_INCLUDE_DIRS ${XMP_INCLUDE_DIR}) +set(XMP_LIBRARIES ${XMP_LIBRARY}) + +mark_as_advanced(XMP_INCLUDE_DIR XMP_LIBRARY) diff --git a/builds/cmake/Modules/Findliblcf.cmake b/builds/cmake/Modules/Findliblcf.cmake index d78fa500c0..8932c9ae1e 100644 --- a/builds/cmake/Modules/Findliblcf.cmake +++ b/builds/cmake/Modules/Findliblcf.cmake @@ -5,7 +5,7 @@ if(EXISTS "${LIBLCF_INCLUDE_DIR_INTERNAL}") endif() include(FindPackageHandleStandardArgs) -find_package_handle_standard_args(LIBLCF DEFAULT_MSG LIBLCF_INCLUDE_DIR LIBLCF_LIBRARY) +find_package_handle_standard_args(liblcf DEFAULT_MSG LIBLCF_INCLUDE_DIR LIBLCF_LIBRARY) set(LIBLCF_INCLUDE_DIRS ${LIBLCF_INCLUDE_DIR}) set(LIBLCF_LIBRARIES ${LIBLCF_LIBRARY})