# ###############################
# CMake build file for Ballerburg
# ###############################
cmake_minimum_required (VERSION 3.3 FATAL_ERROR)
project (ballerburg C)
set(VERSION 1.2.1)
set(CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
include(CheckIncludeFiles)
include(CheckFunctionExists)
include(CheckCCompilerFlag)
include(DistClean)
# Set build type to "Release" if user did not specify any build type yet
# Other possible values: Debug, Release, RelWithDebInfo and MinSizeRel
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif(NOT CMAKE_BUILD_TYPE)
# ####################
# Paths configuration:
# ####################
if(NOT BINDIR)
set(BINDIR bin)
endif()
if(NOT DATADIR)
set(DATADIR share/ballerburg)
endif()
if(NOT BIN2DATADIR)
set(BIN2DATADIR "../share/ballerburg"
CACHE STRING "Relative path from bindir to datadir")
mark_as_advanced(BIN2DATADIR)
endif()
if(NOT LOCALEDIR)
set(LOCALEDIR share/locale)
endif()
if(NOT BIN2LOCALEDIR)
set(BIN2LOCALEDIR "../share/locale"
CACHE STRING "Relative path from bindir to locale directory")
mark_as_advanced(BIN2LOCALEDIR)
endif()
if(NOT MANDIR)
set(MANDIR share/man/man6)
endif()
if(NOT DOCDIR)
set(DOCDIR share/doc/ballerburg)
endif()
# ####################
# Check for libraries:
# ####################
find_package(SDL2)
if(SDL2_FOUND)
set(SDL_INCLUDE_DIR ${SDL2_INCLUDE_DIR})
set(SDL_LIBRARY ${SDL2_LIBRARY})
set(SDLMAIN_LIBRARY ${SDL2MAIN_LIBRARY})
else(SDL2_FOUND)
find_package(SDL REQUIRED)
if(NOT SDL_FOUND)
message(FATAL_ERROR "SDL library not found!")
endif(NOT SDL_FOUND)
endif(SDL2_FOUND)
find_package(Math REQUIRED)
find_package(Gettext)
# ################
# CPP Definitions:
# ################
# Additional CFLAGS suggested by the SDL library:
if(SDL2_FOUND)
add_definitions(-DWITH_SDL2)
execute_process(COMMAND pkg-config --cflags-only-other sdl2
OUTPUT_VARIABLE DETECTED_SDL_CFLAGS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
else(SDL2_FOUND)
execute_process(COMMAND pkg-config --cflags-only-other sdl
OUTPUT_VARIABLE DETECTED_SDL_CFLAGS
ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(SDL2_FOUND)
if(DETECTED_SDL_CFLAGS)
add_definitions(${DETECTED_SDL_CFLAGS})
# message(STATUS "Additional CFLAGS of SDL: ${DETECTED_SDL_CFLAGS}")
endif(DETECTED_SDL_CFLAGS)
# ###########################
# Check for optional headers:
# ###########################
check_include_files(libintl.h HAVE_LIBINTL_H)
# ###############
# Various CFLAGS:
# ###############
if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fsigned-char -Wall")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -Wno-unused-parameter")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wmissing-prototypes -Wstrict-prototypes")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wbad-function-cast")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wformat-security -Wpointer-arith")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wcast-qual -Wshadow")
#set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FORTIFY_SOURCE=2")
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
endif()
# #########################################
# Create config.h and recurse into subdirs:
# #########################################
configure_file(${CMAKE_SOURCE_DIR}/cmake/config-cmake.h
${CMAKE_BINARY_DIR}/config.h)
add_subdirectory(src)
add_subdirectory(doc)
add_subdirectory(po)
add_custom_target(uninstall
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_SOURCE_DIR}/cmake/Uninstall.cmake)