diff --git a/cmake_support/OST.cmake b/cmake_support/OST.cmake index 534e9b34b009cdbbd27c2f85ca567b4b501fd6c4..07ba4660230fb440856acf235fd5283f51165ced 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 9c5c890916dd6cefd673103ab40cd147dbefa72b..12abad743846debb764683f191c9c363a6a5ba2a 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")