X-Git-Url: https://git.ao2.it/libam7xxx.git/blobdiff_plain/98446344ce24a7fee8f1609d4d4e655b136b7fbf..3339bee3f62dbfa3586cc4db5201f7fc704ab037:/CMakeLists.txt?ds=sidebyside diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..199bc80 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,103 @@ +cmake_minimum_required(VERSION 2.6) +project(libam7xxx C) + +set(PROJECT_DESCRIPTION + "Communication library for Actions Micro AM7XXX based USB projectors and DPFs") + +set(PROJECT_VER_MAJOR 0) +set(PROJECT_VER_MINOR 0) +set(PROJECT_VER_PATCH 1) +set(PROJECT_VER_EXTRA "") +set(PROJECT_VER + "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}.${PROJECT_VER_PATCH}${PROJECT_VER_EXTRA}") +set(PROJECT_APIVER + "${PROJECT_VER_MAJOR}.${PROJECT_VER_MINOR}") + +set(CMAKE_MODULE_PATH + ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake_modules/") + +set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin) +set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib) +set(DOC_OUTPUT_PATH ${CMAKE_BINARY_DIR}/doc) + +# Because cmake cannot deal sanely with multiline strings. SRSLY? +# See http://www.vtkedge.org/Bug/view.php?id=8362&nbn=8 +macro(add_flags var) + string(REPLACE ";" " " _flags "${ARGN}") + set(${var} "${${var}} ${_flags}") +endmacro(add_flags) + +if (CMAKE_COMPILER_IS_GNUCC) + add_definitions(-Wall) + + # let CFLAGS env override this + if(CMAKE_C_FLAGS STREQUAL "") + set(CMAKE_C_FLAGS "-std=c99 -pedantic -Wall -Wextra -O2") + endif() + + # Don't make pedantic checks errors, + # as vanilla libusb-1.0.8 can't live with that + #add_flags(CMAKE_C_FLAGS -pedantic-errors) + + # GCC >= 4.6 + #add_flags(CMAKE_C_FLAGS -Wunused-but-set-variable) + + add_flags(CMAKE_C_FLAGS + -fno-common + -Wall + -Wextra + -Wformat=2 + -Winit-self + -Winline + -Wpacked + -Wp,-D_FORTIFY_SOURCE=2 + -Wpointer-arith + -Wlarger-than-65500 + -Wmissing-declarations + -Wmissing-format-attribute + -Wmissing-noreturn + -Wmissing-prototypes + -Wnested-externs + -Wold-style-definition + -Wredundant-decls + -Wsign-compare + -Wstrict-aliasing=2 + -Wstrict-prototypes + -Wswitch-enum + -Wundef + -Wunreachable-code + -Wunsafe-loop-optimizations + -Wwrite-strings + ) +endif() + +set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG=1") +set(CMAKE_C_FLAGS_RELEASE "-O2") +set(CMAKE_C_FLAGS_RELWITHDEBINFO "-O2 -g") + +# Use git for some maintainance tasks +find_package(Git) +if(GIT_FOUND) + set(ARCHIVE_PREFIX ${CMAKE_PROJECT_NAME}-${PROJECT_VER}) + find_program(DATE_EXECUTABLE date DOC "date command line program") + if (DATE_EXECUTABLE) + message(STATUS "Found date: " ${DATE_EXECUTABLE}) + message(STATUS "Generator is: " ${CMAKE_GENERATOR}) + + # XXX: using $(shell CMD) works only with Unix Makefile + if (CMAKE_GENERATOR STREQUAL "Unix Makefiles") + message(STATUS " - \"git archive\" will use the date too!") + set(ARCHIVE_PREFIX ${ARCHIVE_PREFIX}-$\(shell ${DATE_EXECUTABLE} +%Y%m%d%H%M\)) + endif() + endif() + add_custom_target(archive + COMMAND ${GIT_EXECUTABLE} archive -o \"${ARCHIVE_PREFIX}.tar.gz\" --prefix=\"${ARCHIVE_PREFIX}/\" HEAD + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) + + add_custom_target(changelog + COMMAND ${GIT_EXECUTABLE} log --pretty=\"format:%ai %aN <%aE>%n%n%x09* %s%d%n\" > ChangeLog + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}) +endif(GIT_FOUND) + +# Add library project +add_subdirectory(src)