commit d7a1b73e44b404b868f45f6272964ee250427eec
parent 2a687ccc31b0d190d87c7bee5c80a4923a42f594
Author: vaplv <vaplv@free.fr>
Date: Sat, 15 Feb 2014 14:43:40 +0100
Rely on RCMake to manage the cmake project files
Diffstat:
7 files changed, 55 insertions(+), 149 deletions(-)
diff --git a/.gitignore b/.gitignore
@@ -4,11 +4,10 @@ CMakeFiles
Makefile
tmp
[Bb]uild
-*.swp
+*.sw[po]
*.[ao]
*~
tags
-cmake_build
rsys_version.h
RSysConfig.cmake
RSysConfigVersion.cmake
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
@@ -1,42 +1,14 @@
cmake_minimum_required(VERSION 2.6)
project(rsys C)
+cmake_policy(SET CMP0011 NEW)
enable_testing()
-if(NOT CMAKE_COMPILER_IS_GNUCC)
- message(FATAL_ERROR "Unsupported compiler")
-endif(NOT CMAKE_COMPILER_IS_GNUCC)
-
-################################################################################
-# Some cmake variable
-################################################################################
set(CMAKE_CURRENT_SOURCE_DIR ${PROJECT_SOURCE_DIR}/../src)
-set(CMAKE_DEBUG_POSTFIX "-dbg")
-
-################################################################################
-# Setup compile flags/parameters
-################################################################################
-if(NOT MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8)
- set(BUILD_32-BIT OFF CACHE BOOL "Force code generation for 32-bit environment")
-endif(NOT MINGW AND CMAKE_SIZEOF_VOID_P EQUAL 8)
-
-set(C_FLAGS "-pedantic -std=c89 -fvisibility=hidden -fstrict-aliasing")
-set(C_FLAGS_WARN "-Wall -Wextra -Wcast-align -Wmissing-declarations -Wmissing-prototypes -Wconversion")
-set(C_FLAGS_LINK "-Wl,--no-undefined")
-
-if(NOT MINGW)
- set(C_FLAGS_UNIX "-fPIC")
- if(BUILD_32-BIT)
- set(C_FLAGS "${C_FLAGS} -m32")
- endif(BUILD_32-BIT)
-endif(NOT MINGW)
-
-set(CMAKE_C_FLAGS "${C_FLAGS} ${C_FLAGS_UNIX} ${C_FLAGS_WARN} ${C_FLAGS_LINK}")
-set(CMAKE_C_FLAGS_DEBUG "-g -DDEBUG")
-set(CMAKE_C_FLAGS_RELEASE "-O2 -DNDEBUG")
################################################################################
# Check dependencies
################################################################################
+find_package(RCMake REQUIRED)
find_package(Threads REQUIRED)
find_package(OpenMP)
@@ -44,21 +16,35 @@ if(CMAKE_USE_PTHREADS_INIT)
add_definitions(-DRSYS_USE_PTHREADS)
endif(CMAKE_USE_PTHREADS_INIT)
+set(CMAKE_MODULE_PATH ${RCMAKE_SOURCE_DIR})
+include(rcmake)
+
+################################################################################
+# Generatio the module configuration file
+################################################################################
+set(RCMAKE_MODULE_PREFIX RSys)
+set(RCMAKE_MODULE_HEADER rsys/rsys.h)
+set(RCMAKE_MODULE_LIBRARY rsys)
+configure_file(${RCMAKE_SOURCE_DIR}/config.cmake.in
+ ${PROJECT_SOURCE_DIR}/RsysConfig.cmake)
+
+set(RCMAKE_MODULE_VERSION_MAJOR 0)
+set(RCMAKE_MODULE_VERSION_MINOR 0)
+set(RCMAKE_MODULE_VERSION_PATCH 0)
+configure_file(${RCMAKE_SOURCE_DIR}/config_version.cmake.in
+ ${PROJECT_SOURCE_DIR}/RSysConfigVersion.cmake)
+
################################################################################
# Configure and define targets
################################################################################
-set(VERSION_MAJOR 0)
-set(VERSION_MINOR 0)
-set(VERSION_PATCH 0)
+set(VERSION_MAJOR ${RCMAKE_MODULE_VERSION_MAJOR})
+set(VERSION_MINOR ${RCMAKE_MODULE_VERSION_MINOR})
+set(VERSION_PATCH ${RCMAKE_MODULE_VERSION_PATCH})
set(RSYS_VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH})
-message(STATUS "Current library version: ${RSYS_VERSION}")
+message(STATUS "Current ${PROJECT_NAME} version: ${RSYS_VERSION}")
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/rsys_version.h.in
${CMAKE_CURRENT_SOURCE_DIR}/rsys_version.h @ONLY)
-configure_file(${PROJECT_SOURCE_DIR}/config/RSysConfig.cmake.in
- ${PROJECT_SOURCE_DIR}/config/RSysConfig.cmake @ONLY)
-configure_file(${PROJECT_SOURCE_DIR}/config/RSysConfigVersion.cmake.in
- ${PROJECT_SOURCE_DIR}/config/RSysConfigVersion.cmake @ONLY)
set(RSYS_FILES_CMAKE
RSysConfig.cmake
@@ -85,17 +71,10 @@ set(RSYS_FILES_INC_EDIT ${RSYS_FILES_INC_COMMON} rsys_version.h.in)
set(RSYS_FILES_INC_INSTALL ${RSYS_FILES_INC_COMMON} rsys_version.h)
# Prepend each file in the `_files' list by `_path'
-macro(prepend_path _files _path)
- unset(_tmp)
- foreach(f ${${_files}})
- list(APPEND _tmp ${_path}/${f})
- endforeach(f)
- set(${_files} ${_tmp})
-endmacro(prepend_path)
-prepend_path(RSYS_FILES_CMAKE ${PROJECT_SOURCE_DIR}/config)
-prepend_path(RSYS_FILES_SRC ${CMAKE_CURRENT_SOURCE_DIR})
-prepend_path(RSYS_FILES_INC_EDIT ${CMAKE_CURRENT_SOURCE_DIR})
-prepend_path(RSYS_FILES_INC_INSTALL ${CMAKE_CURRENT_SOURCE_DIR})
+rcmake_prepend_path(RSYS_FILES_CMAKE ${PROJECT_SOURCE_DIR})
+rcmake_prepend_path(RSYS_FILES_SRC ${CMAKE_CURRENT_SOURCE_DIR})
+rcmake_prepend_path(RSYS_FILES_INC_EDIT ${CMAKE_CURRENT_SOURCE_DIR})
+rcmake_prepend_path(RSYS_FILES_INC_INSTALL ${CMAKE_CURRENT_SOURCE_DIR})
add_library(rsys SHARED ${RSYS_FILES_SRC} ${RSYS_FILES_INC})
target_link_libraries(rsys ${CMAKE_THREAD_LIBS_INIT})
diff --git a/cmake/RsysConfig.cmake b/cmake/RsysConfig.cmake
@@ -0,0 +1,26 @@
+cmake_minimum_required(VERSION 2.6)
+# Try to find the RSys devel. Once done this will define:
+# - RSys_FOUND: system has RSys
+# - RSys_INCLUDE_DIR: the RSys include directory
+# - RSys_LIBRARY[_DEBUG]: Link these to use rsys
+find_path(RSys_INCLUDE_DIR rsys/rsys.h)
+
+find_library(RSys_LIBRARY
+ rsys
+ PATHS bin Bin BIN)
+
+find_library(RSys_LIBRARY_DEBUG
+ rsys-dbg
+ PATHS bin Bin BIN)
+
+if(NOT RSys_LIBRARY_DEBUG)
+ unset(RSys_LIBRARY_DEBUG CACHE)
+ set(RSys_LIBRARY_DEBUG
+ CACHE PATH "Path to a library")
+endif(NOT RSys_LIBRARY_DEBUG)
+
+include(FindPackageHandleStandardArgs)
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(RSys DEFAULT_MSG
+ RSys_INCLUDE_DIR
+ RSys_LIBRARY
+ RSys_LIBRARY_DEBUG)
diff --git a/cmake/config/RSysConfig.cmake.in b/cmake/config/RSysConfig.cmake.in
@@ -1,32 +0,0 @@
-# Try to find the rsys devel. Once done this will define:
-# - RSYS_FOUND - system has rsys
-# - RSYS_INCLUDE_DIRS - the rsys include directory
-# - RSYS_LIBRARIES - Link these to use rsys
-# - RSYS_LIBRARIES_DEBUG - Link these to use rsys in debug
-include(FindPackageHandleStandardArgs)
-
-find_path(RSYS_INCLUDE_DIRS rsys/rsys.h)
-find_library(RSYS_LIBRARIES rsys PATHS bin)
-find_library(RSYS_LIBRARIES_DEBUG rsys@CMAKE_DEBUG_POSTFIX@ PATHS bin)
-
-if(RSYS_FIND_COMPONENTS)
- set(_rsys RSYS)
-elseif(Rsys_FIND_COMPONENTS)
- set(_rsys Rsys)
-elseif(RSys_FIND_COMPONENTS)
- set(_rsys RSys)
-else(RSYS_FIND_COMPONENTS)
- set(_rsys rsys)
-endif(RSYS_FIND_COMPONENTS)
-
-foreach(_cmp ${${_rsys}_FIND_COMPONENTS})
- if(${_rsys}_FIND_REQUIRED_${_cmp})
- list(APPEND _rsys_required_components ${_cmp})
- endif(${_rsys}_FIND_REQUIRED_${_cmp})
-endforeach(_cmp)
-
-if(NOT _rsys_required_components)
- list(APPEND _rsys_required_components RSYS_LIBRARIES RSYS_INCLUDE_DIRS)
-endif(NOT _rsys_required_components)
-
-FIND_PACKAGE_HANDLE_STANDARD_ARGS(${_rsys} DEFAULT_MSG ${_rsys_required_components})
diff --git a/cmake/config/RSysConfigVersion.cmake.in b/cmake/config/RSysConfigVersion.cmake.in
@@ -1,40 +0,0 @@
-set(VERSION_MAJOR @VERSION_MAJOR@)
-set(VERSION_MINOR @VERSION_MINOR@)
-set(VERSION_PATCH @VERSION_PATCH@)
-set(PACKAGE_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
-
-if(NOT PACKAGE_FIND_VERSION
- OR PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION)
- set(PACKAGE_VERSION_COMPATIBLE TRUE)
- set(PACKAGE_VERSION_EXACT TRUE)
- set(PACKAGE_VERSION_UNSUITABLE FALSE)
- return()
-endif(NOT PACKAGE_FIND_VERSION
- OR PACKAGE_VERSION VERSION_EQUAL PACKAGE_FIND_VERSION)
-
-if(NOT VERSION_MAJOR VERSION_EQUAL PACKAGE_FIND_VERSION_MAJOR)
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
- set(PACKAGE_VERSION_EXACT FALSE)
- set(PACKAGE_VERSION_UNSUITABLE TRUE)
- return()
-endif(NOT VERSION_MAJOR VERSION_EQUAL PACKAGE_FIND_VERSION_MAJOR)
-
-if(VERSION_MINOR VERSION_LESS PACKAGE_FIND_VERSION_MINOR)
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
- set(PACKAGE_VERSION_EXACT FALSE)
- set(PACKAGE_VERSION_UNSUITABLE TRUE)
- return()
-endif(VERSION_MINOR VERSION_LESS PACKAGE_FIND_VERSION_MINOR)
-
-if(VERSION_MINOR VERSION_EQUAL PACKAGE_FIND_VERSION_MINOR )
- if(VERSION_PATCH VERSION_LESS PACKAGE_FIND_VERSION_PATCH)
- set(PACKAGE_VERSION_COMPATIBLE FALSE)
- set(PACKAGE_VERSION_EXACT FALSE)
- set(PACKAGE_VERSION_UNSUITABLE TRUE)
- return()
- endif()
-endif()
-
-set(PACKAGE_VERSION_COMPATIBLE TRUE)
-set(PACKAGE_VERSION_EXACT FALSE)
-set(PACKAGE_VERSION_UNSUITABLE FALSE)
diff --git a/cmake/toolchain/i686-pc-mingw32-toolchain.cmake b/cmake/toolchain/i686-pc-mingw32-toolchain.cmake
@@ -1,13 +0,0 @@
-set(CMAKE_SYSTEM_NAME Windows)
-set(CMAKE_C_COMPILER i686-pc-mingw32-gcc)
-set(CMAKE_RC_COMPILER i686-pc-mingw32-windres)
-
-# Here is the target environment located
-set(CMAKE_FIND_ROOT_PATH /usr/i686-pc-mingw32/sys-root/mingw)
-
-# Adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search
-# programs in the host environment
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/cmake/toolchain/x86_64-w64-mingw32-toolchain.cmake b/cmake/toolchain/x86_64-w64-mingw32-toolchain.cmake
@@ -1,13 +0,0 @@
-set(CMAKE_SYSTEM_NAME Windows)
-set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
-set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
-
-# Here is the target environment located
-set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32/sys-root/mingw)
-
-# Adjust the default behaviour of the FIND_XXX() commands:
-# search headers and libraries in the target environment, search
-# programs in the host environment
-set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
-set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
-set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)