Skip to content

Commit

Permalink
CMake: Fix build error when an optional lib was not found. Fix proble…
Browse files Browse the repository at this point in the history
…ms in CMake Module files.
  • Loading branch information
Ghabry committed Sep 18, 2016
1 parent 82fd3e8 commit 93c0955
Show file tree
Hide file tree
Showing 7 changed files with 44 additions and 30 deletions.
47 changes: 18 additions & 29 deletions CMakeLists.txt
Expand Up @@ -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
Expand All @@ -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
Expand All @@ -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
Expand Down
5 changes: 5 additions & 0 deletions builds/cmake/Modules/FindFluidSynth.cmake
Expand Up @@ -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)
5 changes: 5 additions & 0 deletions builds/cmake/Modules/FindHarfbuzz.cmake
Expand Up @@ -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)
5 changes: 5 additions & 0 deletions builds/cmake/Modules/FindPixman.cmake
Expand Up @@ -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)
5 changes: 5 additions & 0 deletions builds/cmake/Modules/FindSDL2.cmake
Expand Up @@ -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)
5 changes: 5 additions & 0 deletions builds/cmake/Modules/FindXMP.cmake
Expand Up @@ -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)
2 changes: 1 addition & 1 deletion builds/cmake/Modules/Findliblcf.cmake
Expand Up @@ -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})
Expand Down

0 comments on commit 93c0955

Please sign in to comment.