1 cmake_minimum_required(VERSION 2.6)
 
   4 set(PROJECT_DESCRIPTION
 
   5   "Communication library for Actions Micro AM7XXX based USB projectors and DPFs")
 
   7 set(PROJECT_VER_MAJOR 0)
 
   8 set(PROJECT_VER_MINOR 1)
 
   9 set(PROJECT_VER_PATCH 2)
 
  10 set(PROJECT_VER_EXTRA "")
 
  12   "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}${PROJECT_VER_EXTRA}")
 
  14   "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}")
 
  17   ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/")
 
  19 OPTION(STRICT_COMPILATION_CHECKS "Enable stricter compilation checks" OFF)
 
  21 include (MaintenanceTools)
 
  23 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
 
  24 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib)
 
  25 set(DOC_OUTPUT_PATH ${CMAKE_BINARY_DIR}/doc)
 
  27 # Because cmake cannot deal sanely with multiline strings. SRSLY?
 
  28 # See http://www.vtkedge.org/Bug/view.php?id=8362&nbn=8
 
  30   string(REPLACE ";" " " _flags "${ARGN}")
 
  31   set(${var} "${${var}} ${_flags}")
 
  34 if (CMAKE_COMPILER_IS_GNUCC)
 
  35   add_definitions(-Wall)
 
  37   # let CFLAGS env override this
 
  38   if(CMAKE_C_FLAGS STREQUAL "")
 
  39     set(CMAKE_C_FLAGS "-std=c99 -pedantic -Wall -Wextra")
 
  42   add_flags(CMAKE_C_FLAGS
 
  51     -Wp,-D_FORTIFY_SOURCE=2
 
  54     -Wmissing-declarations
 
  55     -Wmissing-format-attribute
 
  59     -Wold-style-definition
 
  67     -Wunsafe-loop-optimizations
 
  70     --param=ssp-buffer-size=4)
 
  73 set(CMAKE_C_FLAGS_DEBUG "-O0 -ggdb -DDEBUG=1")
 
  74 set(CMAKE_C_FLAGS_RELEASE "-O2")
 
  75 set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g")
 
  77 if (CMAKE_COMPILER_IS_GNUCC)
 
  78   if (STRICT_COMPILATION_CHECKS)
 
  79     add_flags(STRICT_FLAGS
 
  81       # NOTE: Vanilla libusb-1.0.8 can't live with -pedantic-errors
 
  83       # NOTE: GCC >= 4.6 is needed for -Wunused-but-set-variable
 
  84       -Wunused-but-set-variable)
 
  86     add_flags(CMAKE_C_FLAGS_DEBUG ${STRICT_FLAGS})
 
  87     add_flags(CMAKE_C_FLAGS_RELEASE ${STRICT_FLAGS})
 
  88     add_flags(CMAKE_C_FLAGS_RELWITHDEBINFO ${STRICT_FLAGS})
 
  94 add_subdirectory(examples)