speed-dreams-code/cmake/prereleaseutils.cmake
xavi92 6d7ca06e02 String trailing whitespaces
The following shell script was used:

while read f
do
        sed -Ei 's/[[:space:]]+$//g' "$f"
done <<EOF
$(svn ls -R | grep \
        -e '.\cpp$' \
        -e '\.cmake$' \
        -e '\.txt$' \
        -e '\.cppcheck$' \
        -e '\.frag$' \
        -e '\.h$' \
        -e '\.hpp$' \
        -e '\.vert$' \
        -e '\.xml$' \
        -e '\.java$' \
        -e '\.c$')
EOF

As a side effect, this has also converted some files from CRLF line
endings to LF.

File extensions such as .ac or .osg were intentionally left out because
those usually are very large files generated by tools.



git-svn-id: https://svn.code.sf.net/p/speed-dreams/code/trunk@9507 30fe4595-0a0c-4342-8851-515496e4dcbd

Former-commit-id: 6c1e5ab34415982ec77fc92a77e1b1c149518eca
Former-commit-id: c6cf9480ae7c1d2f9a999eb6c6b976eef8bae3ba
2024-07-30 21:45:07 +00:00

361 lines
No EOL
13 KiB
CMake

#==============================================================================
#
# file : prereleaseutils.cmake
# copyright : (C) 2021 Joe Thompson
# email : beaglejoe@users.sourceforge.net
# web : www.speed-dreams.org
# version : $Id:$
#
#==============================================================================
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# ================================================
function(check_cars carlist)
#file(STRINGS carlist.txt _installed_cars)
set(_installed_cars ${carlist})
list(TRANSFORM _installed_cars STRIP)
cars_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-base.lst" base_car_lst)
cars_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-hq-cars-and-tracks.lst" hq_car_lst)
cars_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-more-hq-cars-and-tracks.lst" more_hq_car_lst)
cars_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-wip-cars-and-tracks.lst" wip_car_lst)
cars_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-unmaintained.lst" unmaintained_car_lst)
set(_packaged_cars )
list(APPEND _packaged_cars ${base_car_lst} ${hq_car_lst} ${more_hq_car_lst} ${wip_car_lst} ${unmaintained_car_lst})
# Verify that a car is only in one package
#message(STATUS "Checking for duplicate entries...")
list_get_duplicates(_packaged_cars _ret_duplicates)
list(LENGTH _ret_duplicates _length)
if(_length)
message("Duplicate car(s) in .lst file(s)")
dump_list("${_ret_duplicates}")
else()
message(STATUS "No duplicate car(s) in .lst file(s)")
endif()
#message("\n")
# Verify that all installed cars are in a package
#message(STATUS "Checking for installed cars that are NOT packaged...")
compare_lists(_installed_cars _packaged_cars _ret_installed _ret_packaged)
list(LENGTH _ret_installed _length)
if(_length)
message("${_length} Installed car(s) missing from .lst file(s)")
dump_list("${_ret_installed}")
else()
message(STATUS "No installed car(s) missing from .lst file(s)")
endif()
#message("\n")
# Verify that packages contain no uninstalled cars
#message(STATUS "Checking packing lists for cars that are NOT installed...")
list(LENGTH _ret_packaged _length)
if(_length)
message(".lst file(s) have car(s) that are NOT installed")
dump_list("${_ret_packaged}")
else()
message(STATUS "No missing car(s) in .lst file(s)")
endif()
#message("\n")
endfunction()
# ================================================
function(check_tracks tracklist)
set(_installed ${tracklist})
list(TRANSFORM _installed STRIP)
tracks_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-base.lst" base_track_lst)
tracks_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-hq-cars-and-tracks.lst" hq_track_lst)
tracks_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-more-hq-cars-and-tracks.lst" more_hq_track_lst)
tracks_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-wip-cars-and-tracks.lst" wip_track_lst)
tracks_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-unmaintained.lst" unmaintained_track_lst)
#dump_list("${base_track_lst}")
#dump_list("${_installed}")
set(_packaged )
list(APPEND _packaged ${base_track_lst} ${hq_track_lst} ${more_hq_track_lst} ${wip_track_lst} ${unmaintained_track_lst})
# Verify that a track is only in one package
#message(STATUS "Checking for duplicate entries...")
list_get_duplicates(_packaged _ret_duplicates)
list(LENGTH _ret_duplicates _length)
if(_length)
message("Duplicate track(s) in .lst file(s)")
dump_list("${_ret_duplicates}")
else()
message(STATUS "No duplicate track(s) in .lst file(s)")
endif()
#message("\n")
# Verify that all installed tracks are in a package
#message(STATUS "Checking for installed tracks that are NOT packaged...")
compare_lists(_installed _packaged _ret_installed _ret_packaged)
list(LENGTH _ret_installed _length)
if(_length)
message( "${_length} Installed track(s) missing from .lst file(s)")
dump_list("${_ret_installed}")
else()
message(STATUS "No installed track(s) missing from .lst file(s)")
endif()
#message("\n")
# Verify that packages contain no uninstalled tracks
#message(STATUS "Checking packing lists for tracks that are NOT installed...")
list(LENGTH _ret_packaged _length)
if(_length)
message(".lst file(s) have track(s) that are NOT installed")
dump_list("${_ret_packaged}")
else()
message(STATUS "No missing track(s) in .lst file(s)")
endif()
#message("\n")
endfunction()
# ================================================
function(check_robots robotlist)
set(_installed ${robotlist})
list(TRANSFORM _installed STRIP)
robots_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-base.lst" base_lst)
robots_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-hq-cars-and-tracks.lst" hq_lst)
robots_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-more-hq-cars-and-tracks.lst" more_hq_lst)
robots_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-wip-cars-and-tracks.lst" wip_lst)
robots_from_lst_file("${CMAKE_SOURCE_DIR}/packaging/sources/sd-src-unmaintained.lst" unmaintained_lst)
#dump_list("${base_lst}")
#dump_list("${_installed}")
set(_packaged )
list(APPEND _packaged ${base_lst} ${hq_lst} ${more_hq_lst} ${wip_lst} ${unmaintained_lst})
# Verify that a robot is only in one package
#message(STATUS "Checking for duplicate entries...")
list_get_duplicates(_packaged _ret_duplicates)
list(LENGTH _ret_duplicates _length)
if(_length)
message("Duplicate robot(s) in .lst file(s)")
dump_list("${_ret_duplicates}")
else()
message(STATUS "No duplicate robot(s) in .lst file(s)")
endif()
#message("\n")
# Verify that all installed robots are in a package
#message(STATUS "Checking for installed robots that are NOT packaged...")
compare_lists(_installed _packaged _ret_installed _ret_packaged)
list(LENGTH _ret_installed _length)
if(_length)
message("${_length} Installed robot(s) missing from .lst file(s)")
dump_list("${_ret_installed}")
else()
message(STATUS "No installed robot(s) missing from .lst file(s)")
endif()
#message("\n")
# Verify that packages contain no uninstalled robots
#message(STATUS "Checking packing lists for robots that are NOT installed...")
list(LENGTH _ret_packaged _length)
if(_length)
message(".lst file(s) have robot(s) that are NOT installed")
dump_list("${_ret_packaged}")
else()
message(STATUS "No missing robot(s) in .lst file(s)")
endif()
#message("\n")
endfunction()
# ================================================
function(cars_from_lst_file lst_file outlist)
file(STRINGS ${lst_file} _file_content)
foreach(_line ${_file_content})
#message(STATUS "${_line}")
string(STRIP "${_line}" _line)
#message(STATUS "${_line}")
string(TOLOWER "${_line}" _line)
#message(STATUS "${_line}")
string(FIND "${_line}" "data/cars/models/" _index)
if(NOT ${_index} EQUAL -1)
string(REPLACE "data/cars/models/" "" _car "${_line}")
list(APPEND _car_list "${_car}")
#message(STATUS "${_car}")
endif()
#message(STATUS "${_line}")
endforeach()
list(REMOVE_ITEM _car_list "cmakelists.txt")
set(${outlist} ${_car_list} PARENT_SCOPE)
#foreach(_car ${_car_list})
# message(STATUS "${_car}")
#endforeach()
endfunction()
# ================================================
function(tracks_from_lst_file lst_file outlist)
file(STRINGS ${lst_file} _file_content)
foreach(_line ${_file_content})
#message(STATUS "${_line}")
string(STRIP "${_line}" _line)
#message(STATUS "${_line}")
string(TOLOWER "${_line}" _line)
#message(STATUS "${_line}")
string(FIND "${_line}" "data/tracks/" _index)
if(NOT ${_index} EQUAL -1)
string(REPLACE "data/tracks/" "" _track "${_line}")
string(FIND "${_line}" "cmakelists.txt" _index)
if(${_index} EQUAL -1)
list(APPEND _track_list "${_track}")
#message(STATUS "${_track}")
endif()
endif()
#message(STATUS "${_line}")
endforeach()
list(REMOVE_ITEM _track_list "cmakelists.txt")
set(${outlist} ${_track_list} PARENT_SCOPE)
#foreach(_track ${_track_list})
# message(STATUS "${_track}")
#endforeach()
endfunction()
# ================================================
function(robots_from_lst_file lst_file outlist)
file(STRINGS ${lst_file} _file_content)
foreach(_line ${_file_content})
#message(STATUS "${_line}")
string(STRIP "${_line}" _line)
#message(STATUS "${_line}")
string(TOLOWER "${_line}" _line)
#message(STATUS "${_line}")
string(FIND "${_line}" "src/drivers/" _index)
if(NOT ${_index} EQUAL -1)
string(REPLACE "src/drivers/" "" _robot "${_line}")
string(FIND "${_robot}" "/" _index)
if(${_index} EQUAL -1)
list(APPEND _robot_list "${_robot}")
#message(STATUS "\t${_robot}")
endif()
string(FIND "${_robot}" "/src" _index)
if(NOT ${_index} EQUAL -1)
# TODO These need to go to Customizable robots binaries (Section /o "Basic mod Tools" SEC02)
string(REPLACE "/src" "" _robot "${_robot}")
list(APPEND _robot_list "${_robot}")
#message(STATUS "\t\t${_robot}")
endif()
endif()
string(FIND "${_line}" "data/drivers/" _index)
if(NOT ${_index} EQUAL -1)
string(REPLACE "data/drivers/" "" _robot "${_line}")
string(FIND "${_line}" "cmakelists.txt" _index)
if(${_index} EQUAL -1)
list(APPEND _robot_list "${_robot}")
#message(STATUS "\t\t\t${_robot}")
endif()
endif()
#message(STATUS "${_line}")
endforeach()
list(REMOVE_ITEM _robot_list "cmakelists.txt")
#[[
foreach(_robot ${_robot_list})
message(STATUS "${_robot}")
endforeach()
message("\n")
]]
list(REMOVE_DUPLICATES _robot_list)
#message("\n")
set(${outlist} ${_robot_list} PARENT_SCOPE)
#[[
foreach(_robot ${_robot_list})
message(STATUS "${_robot}")
endforeach()
message("\n")
]]
endfunction()
# ================================================
function(list_get_duplicates list_in ret_list_duplicates)
set(_duplicates )
list(TRANSFORM ${list_in} TOLOWER OUTPUT_VARIABLE _lc_list)
list(SORT _lc_list)
set(_prev_item "???")
foreach(_item ${_lc_list})
string(COMPARE EQUAL ${_item} ${_prev_item} _result)
if(_result)
list(APPEND _duplicates "${_item}")
endif()
set(_prev_item ${_item})
endforeach()
set(${ret_list_duplicates} ${_duplicates} PARENT_SCOPE)
endfunction()
# ================================================
# compares 2 lists and returns Lists with ONLY the
# the unique items from each list
#
# example:
# compare_lists(list_installed_cars list_packaged_cars _ret_installed _ret_packaged)
#
# ${_ret_installed} will contain the cars that were in ${list_installed_cars}
# AND NOT in ${list_packaged_cars}
# ${_ret_packaged} will contain the cars that were in ${list_packaged_cars}
# AND NOT in ${list_installed_cars}
#
# If both ${_ret_installed} and ${_ret_packaged} are empty
# the list were identical
# ================================================
function(compare_lists list_a list_b ret_list_a ret_list_b)
list(TRANSFORM ${list_a} TOLOWER OUTPUT_VARIABLE _lc_a)
list(TRANSFORM ${list_a} TOLOWER OUTPUT_VARIABLE _lc_a_2)
list(TRANSFORM ${list_b} TOLOWER OUTPUT_VARIABLE _lc_b)
list(REMOVE_ITEM _lc_a ${_lc_b})
list(REMOVE_ITEM _lc_b ${_lc_a_2})
#dump_list("${_lc_a}")
#dump_list("${_lc_b}")
set(${ret_list_a} ${_lc_a} PARENT_SCOPE)
set(${ret_list_b} ${_lc_b} PARENT_SCOPE)
endfunction()
# ================================================
function(dump_list _list)
foreach(_item ${_list})
message("${_item}")
endforeach()
endfunction()