summaryrefslogtreecommitdiff
path: root/CMakeLists.txt
diff options
context:
space:
mode:
Diffstat (limited to 'CMakeLists.txt')
-rw-r--r--CMakeLists.txt112
1 files changed, 38 insertions, 74 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 853c01fe..b022feb9 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,6 @@
# Project definition.
PROJECT (tome2)
-CMAKE_MINIMUM_REQUIRED (VERSION 2.8)
+CMAKE_MINIMUM_REQUIRED (VERSION 3.1)
# We want a readable feature summary.
INCLUDE(FeatureSummary)
@@ -11,53 +11,54 @@ INCLUDE(FindPkgConfig)
#
# Basic common compiler flags.
#
-SET(COMMON_COMPILER_FLAGS "-pipe -Wall -Wno-unused-value -fsanitize=undefined -fsanitize=address")
+SET(COMMON_COMPILER_FLAGS "-pipe -Wall -Wextra -Wno-unused-value -Wno-unused-parameter")
#
-# GCC/G++ flags
+# Sanitizer flags for debugging
+#
+SET(SANITIZER_FLAGS "-fsanitize=undefined -fsanitize=address")
+
+#
+# C Compiler Flags
+#
+SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
+SET(CMAKE_C_FLAGS_RELEASE "-O2")
+SET(CMAKE_C_FLAGS_DEBUG "-O0 -g ${SANITIZER_FLAGS}")
+
+#
+# C++ Compiler Flags
+#
+SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} --std=c++14")
+SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
+SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g ${SANITIZER_FLAGS} -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
+
+#
+# GCC Flags
#
IF(CMAKE_COMPILER_IS_GNUCC)
- # Let's set sensible options.
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
- SET(CMAKE_C_FLAGS_RELEASE "-O2")
- SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} --std=c++11 -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
- SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
- SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+ # Nothing for now
ENDIF()
#
# Clang flags
#
-IF("${CMAKE_C_COMPILER_ID}" STREQUAL "Clang")
- SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_COMPILER_FLAGS}")
- SET(CMAKE_C_FLAGS_RELEASE "-O2")
- SET(CMAKE_C_FLAGS_DEBUG "-O0 -g")
-ENDIF()
IF("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
- SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_COMPILER_FLAGS} --std=c++11 -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC")
- SET(CMAKE_CXX_FLAGS_RELEASE "-O2")
- SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g")
+ # Nothing for now
ENDIF()
-# Add standard math library
-SET(LIBS ${LIBS} m)
-
#
-# JSON support
+# fmt
#
-PKG_CHECK_MODULES(JANSSON REQUIRED jansson)
-IF(JANSSON_FOUND)
- ADD_DEFINITIONS(${JANSSON_CFLAGS})
- INCLUDE_DIRECTORIES(${JANSSON_INCLUDE_DIRS})
- LINK_DIRECTORIES(${JANSSON_LIBRARY_DIRS})
- SET(LIBS ${LIBS} ${JANSSON_LIBRARIES})
-ENDIF()
+ADD_DEFINITIONS(-DFMT_HEADER_ONLY)
+
+# Add standard math library
+SET(LIBS ${LIBS} m)
#
# BOOST
#
-FIND_PACKAGE(Boost 1.54.0 REQUIRED COMPONENTS system filesystem)
+FIND_PACKAGE(Boost 1.54.0 COMPONENTS system filesystem)
+SET_PACKAGE_PROPERTIES(Boost PROPERTIES TYPE REQUIRED)
IF(Boost_FOUND)
ADD_DEFINITIONS(-DBOOST_FILESYSTEM_NO_DEPRECATED)
@@ -69,74 +70,37 @@ ENDIF()
# X11 support (OPTIONAL)
#
FIND_PACKAGE(X11)
-IF(X11_FOUND)
- # Add X11 flags/options
- ADD_DEFINITIONS(-DUSE_X11)
- INCLUDE_DIRECTORIES(${X11_INCLUDE_DIR})
- SET(LIBS ${LIBS} ${X11_LIBRARIES})
-ENDIF()
#
# GTK2 support (OPTIONAL)
#
FIND_PACKAGE(GTK2)
-IF(GTK2_FOUND)
- # Add GTK flags/options
- ADD_DEFINITIONS(-DUSE_GTK2)
- INCLUDE_DIRECTORIES(${GTK2_INCLUDE_DIRS})
- SET(LIBS ${LIBS} ${GTK2_LIBRARIES})
-ENDIF()
#
# SDL support (OPTIONAL)
#
FIND_PACKAGE(SDL)
IF(SDL_FOUND)
- # This is a bit roundabout, but we're working around
- # the FindSDL_* scripts not respecting the REQUIRED
- # flag.
- #
- # the SDL port also requires SDL_image and SDL_ttf
+ # We assume that if we want to compile for SDL that
+ # any required dependencies should be installed.
FIND_PACKAGE(SDL_image)
FIND_PACKAGE(SDL_ttf)
- IF(SDLIMAGE_FOUND AND SDLTTF_FOUND)
- # Add SDL flags/options
- ADD_DEFINITIONS(-DUSE_SDL)
- INCLUDE_DIRECTORIES(${SDL_INCLUDE_DIR} ${SDLIMAGE_INCLUDE_DIR} ${SDLTTF_INCLUDE_DIR})
- SET(LIBS ${LIBS} ${SDLIMAGE_LIBRARY} ${SDLTTF_LIBRARY} ${SDL_LIBRARY} m)
- ELSE()
- # Let user know that (and why) we haven't enabled SDL.
- IF(SDLIMAGE_FOUND)
- MESSAGE(STATUS "Found SDL and SDL_image, but not SDL_ttf!")
- ELSEIF(SDLTTF_FOUND)
- MESSAGE(STATUS "Found SDL and SDL_ttf, but not SDL_image!")
- ELSE()
- MESSAGE(STATUS "Found SDL, but not SDL_image nor SDL_ttf!")
- ENDIF()
- # add info about finding but not enabling SDL
- SET_FEATURE_INFO(SDL "not enabled")
- ENDIF()
+ SET_PACKAGE_PROPERTIES(SDL_image PROPERTIES TYPE REQUIRED)
+ SET_PACKAGE_PROPERTIES(SDL_ttf PROPERTIES TYPE REQUIRED)
ENDIF()
#
# Curses support (OPTIONAL)
#
FIND_PACKAGE(Curses)
-IF(CURSES_FOUND)
- # Add Curses flags/options
- ADD_DEFINITIONS(-DUSE_GCU)
- INCLUDE_DIRECTORIES(${CURSES_INCLUDE_DIR})
- SET(LIBS ${LIBS} ${CURSES_LIBRARIES})
-ENDIF()
#
# Windows support
#
if(WIN32)
- # Add Windows flags/options
+ # This definition is required for more than just the main-win file,
+ # so we need to have it here.
ADD_DEFINITIONS(-DWINDOWS)
- SET(EXECUTABLE_OPTIONS WIN32)
- SET(LIBS ${LIBS} winmm wsock32)
endif(WIN32)
#
@@ -150,7 +114,7 @@ ENDIF()
ADD_DEFINITIONS(-DDEFAULT_PATH="${DEFAULT_PATH}")
# Print out a summary of features.
-PRINT_ENABLED_FEATURES()
+FEATURE_SUMMARY(FATAL_ON_MISSING_REQUIRED_PACKAGES WHAT PACKAGES_FOUND PACKAGES_NOT_FOUND)
# Add the source subdirectory.
ADD_SUBDIRECTORY (src)