cmake_minimum_required(VERSION 2.6)
project(libam7xxx C)
+include (GNUInstallDirs)
+
set(PROJECT_DESCRIPTION
"Communication library for Actions Micro AM7XXX based USB projectors and DPFs")
set(PROJECT_VER_MAJOR 0)
set(PROJECT_VER_MINOR 1)
-set(PROJECT_VER_PATCH 3)
+set(PROJECT_VER_PATCH 7)
set(PROJECT_VER_EXTRA "")
set(PROJECT_VER
"${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}${PROJECT_VER_EXTRA}")
-Wswitch-enum
-Wundef
-Wunreachable-code
- -Wwrite-strings
- -fstack-protector)
+ -Wwrite-strings)
+
+ include(CheckCCompilerFlag)
+ CHECK_C_COMPILER_FLAG(-fstack-protector-strong COMPILER_SUPPORTS_STACK_PROTECTOR_STRONG)
+ if (COMPILER_SUPPORTS_STACK_PROTECTOR_STRONG)
+ add_flags(CMAKE_C_FLAGS -fstack-protector-strong)
+ else()
+ add_flags(CMAKE_C_FLAGS -fstack-protector)
+ endif()
add_flags(DEBUG_FLAGS
- -ggdb
- -DDEBUG=1)
+ -ggdb)
add_flags(RELEASE_FLAGS
-Wp,-D_FORTIFY_SOURCE=2)
if (STRICT_COMPILATION_CHECKS)
add_flags(STRICT_FLAGS
-Werror
+ # sign conversion warnings can be very noisy for a very little gain
+ #-Wsign-conversion
# NOTE: Vanilla libusb-1.0.8 can't live with -pedantic-errors
-pedantic-errors)
endif()
endif()
-set(CMAKE_C_FLAGS_DEBUG "-O0 ${DEBUG_FLAGS} ${STRICT_FLAGS}")
+if (CMAKE_COMPILER_IS_CLANG)
+ if (STRICT_COMPILATION_CHECKS)
+ add_flags(STRICT_FLAGS
+ -Wshorten-64-to-32)
+ endif()
+endif()
+
+set(CMAKE_C_FLAGS_DEBUG "-O0 -DDEBUG=1 ${DEBUG_FLAGS} ${STRICT_FLAGS}")
set(CMAKE_C_FLAGS_RELEASE "-O2 ${RELEASE_FLAGS} ${STRICT_FLAGS}")
set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 ${RELEASE_FLAGS} ${DEBUG_FLAGS} ${STRICT_FLAGS}")