From c77a1b1b1d8b2ec99e0e171d25f133026e083de2 Mon Sep 17 00:00:00 2001 From: Jean-Paul Chaput Date: Thu, 18 Mar 2010 15:32:59 +0000 Subject: [PATCH] * All Tools: - Change: New structure for the installation & CMake system. * Tools are now grouped in "projects". There are three projects: 1. - IO: Standalones parsers/drivers (IO_USER_TOP, IO_TOP). 2. - Coriolis: Base & digital tools (CORIOLIS_USER_TOP, CORIOLIS_TOP). 3. - Chams: Analogic tools (CHAMS_USER_TOP, CHAMS_TOP). Each *project* has a two "TOP" environement variables, for example: IO_TOP and IO_USER_TOP. Thoses variables are the only ones useds to locate the tool (CMake modules, headers & libraries). The local path always takes precedence over the global one. The localisation process occurs in each tool top CMakeLists.txt where the macro SETUP_PROJECT_PATH is to be defined. There is no way to put it in a shared includes file as it's the macro precisely used to locates the includes... You have to call the macro once for each project you wants to uses: SETUP_PROJECT_PATHS(IO) SETUP_PROJECT_PATHS(CORIOLIS) * In FindTOOL.cmake, supress the _DIR_SEARCH and uses the _DIR_SEARCH instead (example: CORIOLIS_DIR_SEARCH). * buildCoriolis.py modificated according to the new "TOP" scheme. --- equinox/CMakeLists.txt | 28 +++++++++++++++++++++++-- equinox/cmake_modules/FindEQUINOX.cmake | 14 ++----------- 2 files changed, 28 insertions(+), 14 deletions(-) diff --git a/equinox/CMakeLists.txt b/equinox/CMakeLists.txt index ab24ad7e..1510aadc 100644 --- a/equinox/CMakeLists.txt +++ b/equinox/CMakeLists.txt @@ -5,6 +5,32 @@ IF(COMMAND CMAKE_POLICY) CMAKE_POLICY(SET CMP0003 NEW) ENDIF(COMMAND CMAKE_POLICY) +# This macro has to be included in all the tools CMakeLists.txt as it's +# the sole means of localizing other tools/projects. +MACRO(SETUP_PROJECT_PATHS project) + IF( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") ) + MESSAGE("-- ${project}_USER_TOP is set to $ENV{${project}_USER_TOP}") + SET(${project}_DIR_SEARCH "$ENV{${project}_USER_TOP}") + SET(PROJECT_MODULE_PATH "$ENV{${project}_USER_TOP}/share/cmake_modules/") + LIST(FIND CMAKE_MODULE_PATH "${PROJECT_MODULE_PATH}" DIR_INDEX) + IF( DIR_INDEX LESS 0) + LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_MODULE_PATH}") + ENDIF( DIR_INDEX LESS 0) + ENDIF( NOT("$ENV{${project}_USER_TOP}" STREQUAL "") ) + + IF( NOT("$ENV{${project}_TOP}" STREQUAL "") ) + MESSAGE("-- ${project}_TOP is set to $ENV{${project}_TOP}") + LIST(APPEND ${project}_DIR_SEARCH "$ENV{${project}_TOP}") + SET(PROJECT_MODULE_PATH "$ENV{${project}_TOP}/share/cmake_modules/") + LIST(FIND CMAKE_MODULE_PATH "${PROJECT_MODULE_PATH}" DIR_INDEX) + IF( DIR_INDEX LESS 0) + LIST(APPEND CMAKE_MODULE_PATH "${PROJECT_MODULE_PATH}") + ENDIF( DIR_INDEX LESS 0) + ENDIF( NOT("$ENV{${project}_TOP}" STREQUAL "") ) +ENDMACRO(SETUP_PROJECT_PATHS project) + +SETUP_PROJECT_PATHS(IO) +SETUP_PROJECT_PATHS(CORIOLIS) SET(CMAKE_C_FLAGS_DEBUG "-g -Wall" CACHE STRING "Debug options." FORCE) SET(CMAKE_CXX_FLAGS_DEBUG "-Winline -g -Wall" CACHE STRING "Debug options." FORCE) SET(CMAKE_LINKER_FLAGS_DEBUG "-Winline -pg" CACHE STRING "Debug options." FORCE) @@ -12,8 +38,6 @@ SET(CMAKE_SHARED_LINKER_FLAGS_DEBUG "-Winline -pg" CACHE STRING "Debug opti SET(CMAKE_MODULE_LINKER_FLAGS_DEBUG "-Winline -pg" CACHE STRING "Debug options." FORCE) SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "-Winline -pg" CACHE STRING "Debug options." FORCE) -SET(CMAKE_MODULE_PATH "$ENV{HURRICANE_TOP}/share/cmake_modules/") - SET(QT_USE_QTXML "true") FIND_PACKAGE(Qt4 REQUIRED) # find and setup Qt4 for this project diff --git a/equinox/cmake_modules/FindEQUINOX.cmake b/equinox/cmake_modules/FindEQUINOX.cmake index f02ead4e..1a3c55a8 100644 --- a/equinox/cmake_modules/FindEQUINOX.cmake +++ b/equinox/cmake_modules/FindEQUINOX.cmake @@ -12,14 +12,12 @@ SET(EQUINOX_DIR_MESSAGE "Set the EQUINOX_INCLUDE_DIR cmake cache entry to the ${ # don't even bother under WIN32 IF(UNIX) - - SET(EQUINOX_DIR_SEARCH $ENV{CORIOLIS_TOP} $ENV{HURRICANE_TOP}) # # Look for an installation. # FIND_PATH(EQUINOX_INCLUDE_PATH NAMES equinox/Equi.h PATHS # Look in other places. - ${EQUINOX_DIR_SEARCH} + ${CORIOLIS_DIR_SEARCH} PATH_SUFFIXES include/coriolis # Help the user find it if we cannot. DOC "The ${EQUINOX_INCLUDE_PATH_DESCRIPTION}" @@ -27,15 +25,7 @@ IF(UNIX) FIND_LIBRARY(EQUINOX_LIBRARY_PATH NAMES equinox - PATHS ${EQUINOX_DIR_SEARCH} - PATH_SUFFIXES lib - # Help the user find it if we cannot. - DOC "The ${EQUINOX_INCLUDE_PATH_DESCRIPTION}" - ) - - FIND_LIBRARY(EQUINOX_STATIC_LIBRARY_PATH - NAMES equinox-static - PATHS ${EQUINOX_DIR_SEARCH} + PATHS ${CORIOLIS_DIR_SEARCH} PATH_SUFFIXES lib # Help the user find it if we cannot. DOC "The ${EQUINOX_INCLUDE_PATH_DESCRIPTION}"