Sort results of file(GLOB ...) to make build deterministic

Patch from Joachim Reichel <reichel@debian.org>, adapted from the flat
layout to the Git layout.

Fix #1048.
This commit is contained in:
Laurent Rineau 2016-05-06 16:47:05 +02:00
parent 35431e469f
commit a96ec65c54
4 changed files with 11 additions and 0 deletions

View File

@ -53,6 +53,7 @@ set(RESOURCE_FILES "")
foreach (package ${CGAL_CONFIGURED_PACKAGES} )
file(GLOB PACKAGE_QTMOC_FILES "${package}/src/CGAL_Qt5/*.qtmoc.cmake")
list(SORT PACKAGE_QTMOC_FILES)
foreach(package_qtmoc_file ${PACKAGE_QTMOC_FILES})
# includes 'moccing' for sources/headers in package + collects lists of moc-files for dependency (to properly build the lib)
include(${package_qtmoc_file})

View File

@ -44,6 +44,7 @@ if ( CGAL_BRANCH_BUILD )
# list packages
file(GLOB CGAL_CONFIGURED_PACKAGES RELATIVE ${CMAKE_SOURCE_DIR} "${CMAKE_SOURCE_DIR}/*")
list(SORT CGAL_CONFIGURED_PACKAGES)
list(REMOVE_ITEM CGAL_CONFIGURED_PACKAGES copyright CMakeLists.txt .svn .git)
# detect and remove not existing package-directories
@ -188,6 +189,7 @@ if ( CGAL_BRANCH_BUILD )
foreach (package ${CGAL_CONFIGURED_PACKAGES})
file(GLOB_RECURSE CGAL_PACKAGE_HEADER_FILES FOLLOW_SYMLINKS ${package}/*.h)
list(SORT CGAL_PACKAGE_HEADER_FILES)
foreach (file ${CGAL_PACKAGE_HEADER_FILES})
string(REPLACE "${package}/" "" pure_file ${file})
if (NOT ${pure_file} MATCHES ".*CMakeFiles.*")
@ -196,6 +198,7 @@ if ( CGAL_BRANCH_BUILD )
endforeach()
file(GLOB_RECURSE CGAL_PACKAGE_CPP_FILES FOLLOW_SYMLINKS ${package}/*.cpp)
list(SORT CGAL_PACKAGE_CPP_FILES)
foreach (file ${CGAL_PACKAGE_CPP_FILES})
string(REPLACE "${package}/" "" pure_file ${file})
if (NOT ${pure_file} MATCHES ".*CMakeFiles.*")
@ -778,6 +781,7 @@ if (CGAL_BRANCH_BUILD AND CGAL_REPORT_DUPLICATE_FILES )
message(STATUS " File '${hfile}' multiply found in ")
foreach (package ${CGAL_CONFIGURED_PACKAGES})
file(GLOB_RECURSE CGAL_PACKAGE_HEADER_FILES FOLLOW_SYMLINKS ${package}/*.h)
list(SORT CGAL_PACKAGE_HEADER_FILES)
foreach (file ${CGAL_PACKAGE_HEADER_FILES})
string(REPLACE "${package}/" "" pure_file ${file})
if ("${pure_file}" STREQUAL "${hfile}")
@ -794,6 +798,7 @@ if (CGAL_BRANCH_BUILD AND CGAL_REPORT_DUPLICATE_FILES )
message(STATUS " File '${cfile}' multiply found in ")
foreach (package ${CGAL_CONFIGURED_PACKAGES})
file(GLOB_RECURSE CGAL_PACKAGE_CPP_FILES FOLLOW_SYMLINKS ${package}/*.cpp)
list(SORT CGAL_PACKAGE_CPP_FILES)
foreach (file ${CGAL_PACKAGE_CPP_FILES})
string(REPLACE "${package}/" "" pure_file ${file})
if ("${pure_file}" STREQUAL "${cfile}")
@ -831,6 +836,7 @@ endforeach()
install(DIRECTORY ${CMAKE_BINARY_DIR}/include/CGAL DESTINATION ${CGAL_INSTALL_INC_DIR} PATTERN ".svn" EXCLUDE)
file(GLOB scripts "scripts/*")
list(SORT scripts)
list(REMOVE_ITEM scripts
${CMAKE_CURRENT_SOURCE_DIR}/scripts/cgal_create_assertions.sh
${CMAKE_CURRENT_SOURCE_DIR}/scripts/cgal_create_cmake_script_with_options)
@ -1011,6 +1017,7 @@ You must disable CGAL_ENABLE_CHECK_HEADERS.")
file(GLOB ${package}_HEADERS
RELATIVE "${CMAKE_CURRENT_SOURCE_DIR}/../${package}/include"
"${CMAKE_CURRENT_SOURCE_DIR}/../${package}/include/CGAL/*.h")
list(SORT ${package}_HEADERS)
foreach(header ${${package}_HEADERS})
string(REPLACE "/" "__" header2 "${header}")
string(REPLACE "." "_" header2 "${header2}")

View File

@ -61,6 +61,7 @@ endif()
# Check for possible config files of our libraries and include them.
file(GLOB CGAL_CONFIG_FILES LIST_DIRECTORIES false
RELATIVE "${CGAL_CONFIG_DIR}" "${CGAL_CONFIG_DIR}/*LibConfig.cmake")
list(SORT CGAL_CONFIG_FILES)
foreach(configfile ${CGAL_CONFIG_FILES})
include("${CGAL_CONFIG_DIR}/${configfile}")
endforeach()

View File

@ -7,6 +7,7 @@ function (collect_cgal_library LIBRARY_NAME ADDITIONAL_FILES)
# THEN collect *.cpp
foreach (package ${CGAL_CONFIGURED_PACKAGES} )
file(GLOB CGAL_LIBRARY_SOURCE_FILES_TMP ${package}/src/${LIBRARY_NAME}/*.cpp)
list(SORT CGAL_LIBRARY_SOURCE_FILES_TMP)
foreach(file ${CGAL_LIBRARY_SOURCE_FILES_TMP})
if(NOT ${file} MATCHES "/qrc_.*")
list(APPEND CGAL_LIBRARY_SOURCE_FILES ${file})
@ -123,6 +124,7 @@ set(CGAL_CONFIGURED_LIBRARIES "")
foreach(package ${CGAL_CONFIGURED_PACKAGES})
file(GLOB CONFIGURED_LIBS_IN_PACKAGE ${package}/src/CGAL_*/CMakeLists.txt)
list(SORT CONFIGURED_LIBS_IN_PACKAGE)
foreach (libconfigfile ${CONFIGURED_LIBS_IN_PACKAGE})
get_filename_component(CGAL_CONFIGURED_LIBRARY_NAME ${libconfigfile} PATH)
get_filename_component(CGAL_CONFIGURED_LIBRARY_NAME ${CGAL_CONFIGURED_LIBRARY_NAME} NAME)