Description: Sort results of file(GLOB ...) to make build deterministic.
Author: Joachim Reichel <reichel@debian.org>
Forwarded: https://github.com/CGAL/cgal/issues/1048
Last-Update: <2016-04-29>

Index: cgal-4.8/CMakeLists.txt
===================================================================
--- cgal-4.8.orig/CMakeLists.txt
+++ cgal-4.8/CMakeLists.txt
@@ -42,6 +42,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
@@ -186,6 +187,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.*")
@@ -194,6 +196,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.*")
@@ -777,6 +780,7 @@ if (CGAL_BRANCH_BUILD AND CGAL_REPORT_DU
       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}")
@@ -793,6 +797,7 @@ if (CGAL_BRANCH_BUILD AND CGAL_REPORT_DU
       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}")
@@ -830,6 +835,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)
@@ -1010,6 +1016,7 @@ You must disable CGAL_ENABLE_CHECK_HEADE
         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}")
Index: cgal-4.8/cmake/modules/CGALConfig_binary.cmake.in
===================================================================
--- cgal-4.8.orig/cmake/modules/CGALConfig_binary.cmake.in
+++ cgal-4.8/cmake/modules/CGALConfig_binary.cmake.in
@@ -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()
Index: cgal-4.8/src/CGAL_Qt5/CMakeLists.txt
===================================================================
--- cgal-4.8.orig/src/CGAL_Qt5/CMakeLists.txt
+++ cgal-4.8/src/CGAL_Qt5/CMakeLists.txt
@@ -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}) 
Index: cgal-4.8/src/CMakeLists.txt
===================================================================
--- cgal-4.8.orig/src/CMakeLists.txt
+++ cgal-4.8/src/CMakeLists.txt
@@ -7,6 +7,7 @@ function (collect_cgal_library LIBRARY_N
   # 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)
