Revision: 70027 http://sourceforge.net/p/brlcad/code/70027 Author: starseeker Date: 2017-07-29 21:03:13 +0000 (Sat, 29 Jul 2017) Log Message: ----------- This may get distcheck running again... needs more testing
Modified Paths: -------------- brlcad/trunk/misc/CMake/BRLCAD_Util.cmake brlcad/trunk/misc/CMake/source_archive_setup.cmake.in Modified: brlcad/trunk/misc/CMake/BRLCAD_Util.cmake =================================================================== --- brlcad/trunk/misc/CMake/BRLCAD_Util.cmake 2017-07-29 20:01:37 UTC (rev 70026) +++ brlcad/trunk/misc/CMake/BRLCAD_Util.cmake 2017-07-29 21:03:13 UTC (rev 70027) @@ -198,82 +198,70 @@ endfunction(CHECK_SOURCE_DIR_FULLPATH ITEM_PATH) -macro(CMAKEFILES) - if(NOT BRLCAD_IS_SUBBUILD) +function(CMFILE ITEM) - # CMake flags to add_library/add_executable aren't going to be valid filenames - just - # yank them up front. - set(ITEMS ${ARGN}) - list(REMOVE_ITEM ITEMS SHARED STATIC OBJECT WIN32 UNKNOWN IMPORTED MODULE INTERFACE EXCLUDE_FROM_ALL) - list(FILTER ITEMS EXCLUDE REGEX ".*TARGET_OBJECTS.*") - foreach(ITEM ${ITEMS}) - # Handled target flags, proceeding with tests. - get_filename_component(ITEM_PATH "${ITEM}" PATH) - get_filename_component(ITEM_NAME "${ITEM}" NAME) - if(NOT "${ITEM_PATH}" STREQUAL "") + get_filename_component(ITEM_PATH "${ITEM}" PATH) + if(NOT "${ITEM_PATH}" STREQUAL "") + # The hard case - path specified, need some validation. - # If this becomes a problem with the third party build - # systems at some point in the future, we may have to - # exclude src/other paths from this check. - CHECK_SOURCE_DIR_FULLPATH("${ITEM_PATH}") + # If this becomes a problem with the third party build + # systems at some point in the future, we may have to + # exclude src/other paths from this check. + CHECK_SOURCE_DIR_FULLPATH("${ITEM_PATH}") - # Ignore files specified using full paths, since they - # should be generated files and are not part of the - # source code repository. - get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE) + # Ignore files specified using full paths, since they + # should be generated files and are not part of the + # source code repository. + get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE) + if("${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}") + return() + endif("${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}") + endif(NOT "${ITEM_PATH}" STREQUAL "") - if(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}") + # Handle fatal cases + if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + message(FATAL_ERROR "Trying to ignore directory: ${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"") + endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - # Don't list things that aren't there - if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"") - endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + # We're good - log it + set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - # Append files and directories to their respective lists. - if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${ITEM_ABS_PATH}/${ITEM_NAME}") - else(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}/${ITEM_NAME}") - endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}") + # Track the directories as well + get_property(IGNORE_PATHS GLOBAL PROPERTY CMAKE_IGNORE_DIRS) + get_filename_component(NPATH "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}" PATH) + while(NOT "${NPATH}" STREQUAL "${CMAKE_SOURCE_DIR}") + list(APPEND IGNORE_PATHS "${NPATH}") + get_filename_component(NPATH "${NPATH}" PATH) + endwhile(NOT "${NPATH}" STREQUAL "${CMAKE_SOURCE_DIR}") + list(REMOVE_DUPLICATES IGNORE_PATHS) + set_property(GLOBAL PROPERTY CMAKE_IGNORE_DIRS "${IGNORE_PATHS}") - # Add the parent directories of the specified file or directory as well - - # the convention is that once at least one file or directory in a path is recorded - # by the build logic, the parent directories along that path have also been recorded. - while(NOT "${ITEM_PATH}" STREQUAL "") - get_filename_component(ITEM_NAME "${ITEM_PATH}" NAME) - get_filename_component(ITEM_PATH "${ITEM_PATH}" PATH) - if(NOT "${ITEM_PATH}" STREQUAL "") - get_filename_component(ITEM_ABS_PATH "${ITEM_PATH}" ABSOLUTE) - if(NOT "${ITEM_NAME}" STREQUAL "..") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${ITEM_ABS_PATH}") - endif(NOT "${ITEM_NAME}" STREQUAL "..") - endif(NOT "${ITEM_PATH}" STREQUAL "") - endwhile(NOT "${ITEM_PATH}" STREQUAL "") +endfunction(CMFILE ITEM) - endif(NOT "${ITEM_PATH}" STREQUAL "${ITEM_ABS_PATH}") +function(CMAKEFILES) + if(NOT BRLCAD_IS_SUBBUILD) - else(NOT "${ITEM_PATH}" STREQUAL "") + # CMake flags to add_library/add_executable aren't going to be valid filenames - just + # yank them up front. + set(ITEMS ${ARGN}) + list(REMOVE_ITEM ITEMS SHARED STATIC OBJECT WIN32 UNKNOWN IMPORTED MODULE INTERFACE EXCLUDE_FROM_ALL) + if(ITEMS) + list(FILTER ITEMS EXCLUDE REGEX ".*TARGET_OBJECTS.*") + endif(ITEMS) - # The easy case - no path specified, so assume the current source directory. - if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - message(FATAL_ERROR "Attempting to ignore non-existent file ${ITEM}, in directory \"${CMAKE_CURRENT_SOURCE_DIR}\"") - endif(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") + foreach(ITEM ${ITEMS}) + CMFILE("${ITEM}") + endforeach(ITEM ${ITEMS}) - if(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}") - else(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - set_property(GLOBAL APPEND PROPERTY CMAKE_IGNORE_FILES "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM_NAME}") - endif(IS_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${ITEM}") - - endif(NOT "${ITEM_PATH}" STREQUAL "") - endforeach(ITEM ${ITEMS}) endif(NOT BRLCAD_IS_SUBBUILD) -endmacro(CMAKEFILES FILESLIST) +endfunction(CMAKEFILES FILESLIST) # Routine to tell distcheck to ignore a series of items in a directory. Items may themselves # be directories. Primarily useful when working with src/other dist lists. -macro(CMAKEFILES_IN_DIR filestoignore targetdir) +function(CMAKEFILES_IN_DIR filestoignore targetdir) if(NOT BRLCAD_IS_SUBBUILD) set(CMAKE_IGNORE_LIST "") foreach(filepath ${${filestoignore}}) @@ -281,7 +269,7 @@ endforeach(filepath ${filestoignore}) CMAKEFILES(${CMAKE_IGNORE_LIST}) endif(NOT BRLCAD_IS_SUBBUILD) -endmacro(CMAKEFILES_IN_DIR) +endfunction(CMAKEFILES_IN_DIR) #----------------------------------------------------------------------------- # It is sometimes convenient to be able to supply both a filename and a Modified: brlcad/trunk/misc/CMake/source_archive_setup.cmake.in =================================================================== --- brlcad/trunk/misc/CMake/source_archive_setup.cmake.in 2017-07-29 20:01:37 UTC (rev 70026) +++ brlcad/trunk/misc/CMake/source_archive_setup.cmake.in 2017-07-29 21:03:13 UTC (rev 70027) @@ -53,7 +53,6 @@ if(NOT EXISTS "@CMAKE_BINARY_DIR@/CMakeTmp/create_builddir_source_archive.done") file(GLOB_RECURSE pre_existing_files "@CMAKE_BINARY_DIR@/source_archive_contents/*") file(STRINGS "@CMAKE_BINARY_DIR@/cmakefiles.cmake" source_tree_files) - file(STRINGS "@CMAKE_BINARY_DIR@/cmakedirs.cmake" ignored_dirctories) if(EXISTS "@CMAKE_BINARY_DIR@/cpack_ignore.cmake") file(STRINGS "@CMAKE_BINARY_DIR@/cpack_ignore.cmake" ignored_src_files) endif(EXISTS "@CMAKE_BINARY_DIR@/cpack_ignore.cmake") @@ -68,39 +67,9 @@ endif(IS_DIRECTORY ${ITEM}) endforeach(ITEM ${source_tree_files}) - # Collect all files from ignored directories - set(dir_filelist) - foreach(ITEM ${ignored_dirctories}) - file(GLOB_RECURSE dir_files "${ITEM}/*") - foreach(DITEM ${dir_files}) - if(NOT IS_DIRECTORY ${DITEM} AND NOT "${DITEM}" MATCHES ".svn/") - list(APPEND dir_filelist ${DITEM}) - endif(NOT IS_DIRECTORY ${DITEM} AND NOT "${DITEM}" MATCHES ".svn/") - endforeach(DITEM ${dir_files}) - endforeach(ITEM ${ignored_dirctories}) - - - if(ignored_src_files) - message("Removing ignored files...") - endif(ignored_src_files) - - # If we have a list of files to ignore from repo-verify, build it - # into full paths - set(ignored_srcs_full) - foreach(ITEM ${ignored_src_files}) - list(APPEND ignored_srcs_full "@CMAKE_SOURCE_DIR@/${ITEM}") - endforeach(ITEM ${ignored_src_files}) - - # Remove the ignored files from the globbed file list, which is where - # they might have crept in - if(ignored_srcs_full) - list(REMOVE_ITEM dir_filelist ${ignored_srcs_full}) - endif(ignored_srcs_full) - - # Combine the source lists into the final list - set(final_list ${source_tree_files} ${dir_filelist}) + # Sort the final list + set(final_list ${source_tree_files}) list(SORT final_list) - list(REMOVE_DUPLICATES final_list) # Do the actual copy message("Copying files...") This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ BRL-CAD Source Commits mailing list brlcad-commits@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/brlcad-commits