From 61bd333790266be12ee387de1694f4f3592e7abd Mon Sep 17 00:00:00 2001
From: marco <marco@5a81b35b-ba03-0410-adc8-b2c5c5119f08>
Date: Tue, 6 Apr 2010 13:31:29 +0000
Subject: [PATCH] add PREFIX option to configure to prefix of libraries.

The prefix controls the default output directory for headers,
python modules and the prefix of libraries. By default, the
prefix is set to ost.


git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1929 5a81b35b-ba03-0410-adc8-b2c5c5119f08
---
 cmake_support/OST.cmake       | 51 ++++++++++++++++++++++++-----------
 modules/config/CMakeLists.txt |  2 +-
 2 files changed, 37 insertions(+), 16 deletions(-)

diff --git a/cmake_support/OST.cmake b/cmake_support/OST.cmake
index 534e9b34b..07ba46602 100644
--- a/cmake_support/OST.cmake
+++ b/cmake_support/OST.cmake
@@ -104,7 +104,7 @@ macro(stage_headers HEADERS HEADER_INSTALL_DIR TARGET SUB)
   # introduce a helper target to make sure the headers are staged before
   # building the library
   string(REPLACE "/" "_" _SUB_NO_SLASH "${SUB}")
-  string(REPLACE "ost_" "" _TARGET "${TARGET}")
+  string(REPLACE "${PREFIX}_" "" _TARGET "${TARGET}")
   #message("target before: ${TARGET} after: ${_TARGET}")
   set(_TARGET_NAME ${_TARGET}_${_SUB_NO_SLASH}_headers)
   set(_SUB ${SUB})
@@ -133,19 +133,30 @@ endmacro()
 macro(module)
   #-----------------------------------------------------------------------------
   # deal with arguments
-  #-----------------------------------------------------------------------------  
-  parse_argument_list(_ARG 
-                      "NAME;SOURCES;HEADERS;DEPENDS_ON;LINK;HEADER_OUTPUT_DIR" 
-                      "" ${ARGN})  
+  #-----------------------------------------------------------------------------
+  set(_ARGS "NAME;SOURCES;HEADERS;DEPENDS_ON;LINK;HEADER_OUTPUT_DIR;PREFIX")
+  set(_ARG_PREFIX ost)  
+  parse_argument_list(_ARG "${_ARGS}" "" ${ARGN})  
   if (NOT _ARG_NAME)
-    message(FATAL_ERROR "invalid use of module(): a module name must be provided")
+    message(FATAL_ERROR 
+            "invalid use of module(): a module name must be provided")
   endif()
-  
-  set(_HEADER_OUTPUT_DIR ost/${_ARG_NAME})
+
+
   if (_ARG_HEADER_OUTPUT_DIR)
     set(_HEADER_OUTPUT_DIR ${_ARG_HEADER_OUTPUT_DIR})
+  else()
+    if (_ARG_PREFIX)
+      set(_HEADER_OUTPUT_DIR "${_ARG_PREFIX}/${_ARG_NAME}")
+    else()
+      set(_HEADER_OUTPUT_DIR "${_ARG_NAME}")
+    endif()
+  endif()
+  if (_ARG_PREFIX)
+    set(_LIB_NAME ${_ARG_PREFIX}_${_ARG_NAME})
+  else()
+    set(_LIB_NAME ${_ARG_NAME})
   endif()
-  set(_LIB_NAME ost_${_ARG_NAME})
   string(TOUPPER ${_LIB_NAME} _UPPER_LIB_NAME)  
   #-----------------------------------------------------------------------------
   # create library  
@@ -343,15 +354,20 @@ macro(pymod)
   #-----------------------------------------------------------------------------
   # deal with arguments
   #-----------------------------------------------------------------------------
+  set(_ARG_PREFIX ost)
   parse_argument_list(_ARG 
-                      "NAME;CPP;PY;LINK;OUTPUT_DIR" "" ${ARGN})
+                      "NAME;CPP;PY;LINK;OUTPUT_DIR;PREFIX" "" ${ARGN})
   if (NOT _ARG_NAME)
     message(FATAL_ERROR "invalid use of pymod(): a name must be provided")
   endif()
   if (_ARG_OUTPUT_DIR)
     set(PYMOD_DIR "openstructure/${_ARG_OUTPUT_DIR}")
   else()
-    set(PYMOD_DIR "openstructure/ost/${_ARG_NAME}")
+    if (_ARG_PREFIX)
+        set(PYMOD_DIR "openstructure/${_ARG_PREFIX}/${_ARG_NAME}")
+    else()
+      set(PYMOD_DIR "openstructure/${_ARG_NAME}")
+    endif()
   endif()
   set(PYMOD_STAGE_DIR "${LIB_STAGE_PATH}/${PYMOD_DIR}")
   file(MAKE_DIRECTORY ${PYMOD_STAGE_DIR})
@@ -363,9 +379,14 @@ macro(pymod)
     set_target_properties("_${_ARG_NAME}"
                           PROPERTIES ECHO_STRING
                           "Building Python Module ${_ARG_NAME}")
-    get_target_property(_CUSTOM_CHECK "ost_${_ARG_NAME}" HEADER_ONLY)
+    if (_ARG_PREFIX)
+      set(_PARENT_NAME "${_ARG_PREFIX}_${_ARG_NAME}")
+    else()
+      set(_PARENT_NAME "${_ARG_NAME}")
+    endif()
+    get_target_property(_CUSTOM_CHECK "${_PARENT_NAME}" HEADER_ONLY)
     if (NOT _CUSTOM_CHECK)
-      set(_PARENT_LIB_NAME "ost_${_ARG_NAME}")
+      set(_PARENT_LIB_NAME "${_PARENT_NAME}")
     endif()
     target_link_libraries("_${_ARG_NAME}" ${_PARENT_LIB_NAME} 
                           ${PYTHON_LIBRARIES} ${BOOST_PYTHON_LIBRARIES})
@@ -429,8 +450,8 @@ macro(pymod)
       include_directories(${PYTHON_INCLUDE_PATH})
       install(FILES ${_PY_FILES} DESTINATION "${LIB_DIR}/${PYMOD_DIR}")
       endif()
-  endif()
-  get_target_property(_MOD_DEPS "ost_${_ARG_NAME}" MODULE_DEPS)
+  endif()  
+  get_target_property(_MOD_DEPS "${_PARENT_NAME}" MODULE_DEPS)
   if(_MOD_DEPS)
     foreach(dep ${_MOD_DEPS})
        add_dependencies("_${_ARG_NAME}" "_${dep}")
diff --git a/modules/config/CMakeLists.txt b/modules/config/CMakeLists.txt
index 9c5c89091..12abad743 100644
--- a/modules/config/CMakeLists.txt
+++ b/modules/config/CMakeLists.txt
@@ -49,4 +49,4 @@ set(CONFIG_HH_FILE "${CMAKE_CURRENT_SOURCE_DIR}/config.hh")
 configure_file(config.hh.in ${CONFIG_HH_FILE})
 add_custom_target(ost_config)
 stage_headers("${OST_CONFIG_HEADERS}" "ost" 
-              "ost_config" "")
+              "ost_config" "" "ost")
-- 
GitLab