blob: b0f4793598b250bb4b83876b3fa4d952609630d8 [file] [log] [blame]
#################################################################################
# Copyright (c) 2011, 2016 Profactor GmbH, fortiss GmbH
#
# This program and the accompanying materials are made available under the
# terms of the Eclipse Public License 2.0 which is available at
# http://www.eclipse.org/legal/epl-2.0.
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
# Michael Hofmann - initial API and implementation and/or initial documentation
# Alois Zoitl - added support for externam modules directory
#################################################################################
#First find all the internal forte modules
FOREACH(FORTE_MODULE_DIR ${FORTE_MODULE_LIST})
string(COMPARE EQUAL "${FORTE_MODULE_DIR}" external _isExternal)
if(_isExternal AND EXISTS ${FORTE_EXTERNAL_MODULES_DIRECTORY})
set(FORTE_MODULE_PATH ${FORTE_EXTERNAL_MODULES_DIRECTORY}/)
elseif(_isExternal AND NOT EXISTS ${FORTE_EXTERNAL_MODULES_DIRECTORY})
continue()
else()
SET(FORTE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${FORTE_MODULE_DIR}/)
endif()
FILE(GLOB_RECURSE FILES_FOUND "${FORTE_MODULE_PATH}/*CMakeLists.txt")
message(STATUS "FORTE_MODULE_DIR: " ${FORTE_MODULE_PATH})
FOREACH(FILE ${FILES_FOUND})
STRING(REPLACE "${FORTE_MODULE_PATH}" "" MODULE_NAME ${FILE})
STRING(REGEX MATCH "^/([^/]*)/CMakeLists.txt$" MODULE_NAME ${MODULE_NAME})
IF(MODULE_NAME)
string(REPLACE "/CMakeLists.txt" "" MODULE_NAME "${MODULE_NAME}")
string(REPLACE "/" "" MODULE_NAME "${MODULE_NAME}")
LIST(APPEND MODULE_LIST ${MODULE_NAME})
ENDIF(MODULE_NAME)
ENDFOREACH(FILE)
SET(WRITE_FILE "")
FOREACH(MODULE ${MODULE_LIST})
SET(WRITE_FILE "${WRITE_FILE}SET(SOURCE_GROUP_BACKUP \"\${SOURCE_GROUP}\")\n")
SET(WRITE_FILE "${WRITE_FILE}SET(SOURCE_GROUP \"\${SOURCE_GROUP}/${MODULE}\")\n")
if(_isExternal)
SET(WRITE_FILE "${WRITE_FILE}ADD_SUBDIRECTORY(\"\${FORTE_EXTERNAL_MODULES_DIRECTORY}/${MODULE}\" \"\${CMAKE_CURRENT_BINARY_DIR}/external/${MODULE}\")\n")
else()
SET(WRITE_FILE "${WRITE_FILE}ADD_SUBDIRECTORY(\"\${FORTE_MODULE_PATH}${MODULE}\")\n")
endif()
SET(WRITE_FILE "${WRITE_FILE}SET(SOURCE_GROUP \"\${SOURCE_GROUP_BACKUP}\")\n")
ENDFOREACH(MODULE)
set(MODULE_LIST )
file(WRITE ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists_new.txt ${WRITE_FILE})
ENDFOREACH(FORTE_MODULE_DIR)
foreach(FORTE_MODULE_DIR ${FORTE_MODULE_LIST})
string(COMPARE EQUAL "${FORTE_MODULE_DIR}" external _isExternal)
if (_isExternal AND NOT EXISTS ${FORTE_EXTERNAL_MODULES_DIRECTORY})
continue()
endif()
execute_process( COMMAND ${CMAKE_COMMAND} -E compare_files ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists_new.txt ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists.txt RESULT_VARIABLE test_not_successful OUTPUT_QUIET ERROR_QUIET )
if(test_not_successful)
file(REMOVE ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists.txt)
file(RENAME ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists_new.txt ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists.txt)
ENDIF( test_not_successful)
file(REMOVE ${CMAKE_BINARY_DIR}/src/${FORTE_MODULE_DIR}/CMakeLists_new.txt)
endforeach(FORTE_MODULE_DIR)