From 7f76079f80659b722c3470c6390cf50ce5915eda Mon Sep 17 00:00:00 2001 From: Hugues Delorme Date: Thu, 21 Feb 2013 14:37:42 +0100 Subject: [PATCH] Add cmake build script --- CMakeLists.txt | 55 ++++++++++++++++++++++++++++++++++++++++++++ src/c/config.h.cmake | 10 ++++++++ src/c/global.h | 4 +++- 3 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 CMakeLists.txt create mode 100644 src/c/config.h.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..879712e --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,55 @@ +cmake_minimum_required(VERSION 2.6) +include(CheckIncludeFiles) + +project(foug_dataex C) + +# Allow the user to build a static library +option(BUILD_SHARED_LIBS "Build shared libraries (DLL)" ON) + +# Declare fougstl-c library +file(GLOB_RECURSE ALL_SRC_FILES src/c/*) +add_library(fougstl-c ${ALL_SRC_FILES}) + +# Have ? +check_include_files(stdint.h HAVE_STDINT_H) +configure_file(src/c/config.h.cmake config.h @ONLY) +include_directories(${CMAKE_BINARY_DIR}) # For generated "config.h" + +# Specific flags for gcc +if(CMAKE_COMPILER_IS_GNUCC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ansi -pedantic-errors") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wextra -fstrict-aliasing -Wstrict-aliasing -Wcast-align -Wlogical-op -Wfloat-equal") +endif() + +# Specific flags for Visual C++ +if(MSVC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -TC") +endif() + +if(BUILD_SHARED_LIBS) + add_definitions(-DFOUG_LIB_DLL + -DFOUG_LIB_MAKE_DLL + -DFOUG_DATAEX_LIBSTL_DLL + -DFOUG_DATAEX_LIBSTL_MAKE_DLL) +endif() + +# Declare installs +install(FILES ${CMAKE_BINARY_DIR}/config.h DESTINATION include/dataex/c) + +file(GLOB C_GLOBAL_HEADERS src/c/*.h) +install(FILES ${C_GLOBAL_HEADERS} DESTINATION include/dataex/c) + +file(GLOB C_LIBSTL_HEADERS src/c/libstl/*.h) +install(FILES ${C_LIBSTL_HEADERS} DESTINATION include/dataex/c/libstl) + +install(TARGETS fougstl-c + RUNTIME DESTINATION lib + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + + +# Examples: +# cmake ../.. -DCMAKE_INSTALL_PREFIX=../../gcc-linux64 -DCMAKE_BUILD_TYPE=Debug -DCMAKE_DEBUG_POSTFIX=.debug +# cmake ../.. -DCMAKE_INSTALL_PREFIX=../../gcc-linux64 -DCMAKE_BUILD_TYPE=Release -DCMAKE_RELEASE_POSTFIX=.release +# make VERBOSE=1 or cmake -DCMAKE_VERBOSE_MAKEFILE=TRUE diff --git a/src/c/config.h.cmake b/src/c/config.h.cmake new file mode 100644 index 0000000..603aa19 --- /dev/null +++ b/src/c/config.h.cmake @@ -0,0 +1,10 @@ +/* Generated by CMake */ + +#ifndef FOUG_CONFIG_H_CMAKE +#define FOUG_CONFIG_H_CMAKE + +#ifndef HAVE_STDINT_H +#cmakedefine HAVE_STDINT_H +#endif /* HAVE_STDINT_H */ + +#endif /* FOUG_CONFIG_H_CMAKE */ diff --git a/src/c/global.h b/src/c/global.h index 2204419..e9f0650 100644 --- a/src/c/global.h +++ b/src/c/global.h @@ -20,7 +20,9 @@ # define FOUG_LIB_EXPORT #endif /* FOUG_LIB_DLL */ -#ifdef FOUG_USE_STDINT_H +#include "config.h" /* Generated by build system */ + +#ifdef HAVE_STDINT_H # include #else typedef char int8_t;