CMake: Fix .ottdrev-vc read and write

pull/163/head
Jonathan G Rennison 4 years ago
parent 0fb31fd693
commit f1a9d0d056

@ -96,6 +96,41 @@ if (GIT_FOUND AND EXISTS "${CMAKE_SOURCE_DIR}/.git")
# Restore LC_ALL
set(ENV{LC_ALL} "${SAVED_LC_ALL}")
elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev-vc")
file(READ "${CMAKE_SOURCE_DIR}/.ottdrev-vc" OTTDREVVC)
string(REPLACE "\n" ";" OTTDREVVC "${OTTDREVVC}")
list(GET OTTDREVVC 0 OTTDREV)
list(GET OTTDREVVC 1 SRCHASH)
string(REPLACE "\t" ";" OTTDREV "${OTTDREV}")
list(GET OTTDREV 0 REV_VERSION)
list(GET OTTDREV 1 REV_ISODATE)
list(GET OTTDREV 2 REV_MODIFIED)
list(GET OTTDREV 3 REV_HASH)
list(GET OTTDREV 4 REV_ISTAG)
list(GET OTTDREV 5 REV_ISSTABLETAG)
list(GET OTTDREV 6 REV_YEAR)
if (REV_MODIFIED EQUAL 2)
string(REGEX REPLACE "M$" "" REV_VERSION "${REV_VERSION}")
endif ()
execute_process(COMMAND ./version_utils.sh -o
RESULT_VARIABLE CAN_CHECK_MODIFIED
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if (CAN_CHECK_MODIFIED EQUAL 0)
execute_process(COMMAND ./version_utils.sh -s
OUTPUT_VARIABLE CURRENT_HASH
OUTPUT_STRIP_TRAILING_WHITESPACE
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
)
if (NOT CURRENT_HASH STREQUAL SRCHASH)
set(REV_MODIFIED 2)
string(SUBSTRING "${CURRENT_HASH}" 0 8 SHORT_CURRENT_HASH)
set(REV_VERSION "${REV_VERSION}-H${SHORT_CURRENT_HASH}")
set(REV_MODIFIED 2)
endif ()
else ()
set(REV_MODIFIED 1)
endif ()
elseif (EXISTS "${CMAKE_SOURCE_DIR}/.ottdrev")
file(READ "${CMAKE_SOURCE_DIR}/.ottdrev" OTTDREV)
string(REPLACE "\n" "" OTTDREV "${OTTDREV}")

@ -80,17 +80,16 @@ function output_hash_list {
}
function read_source {
handle_source "source.list" "$1"
handle_source "config.lib" "$1"
handle_source "configure" "$1"
handle_source "Makefile.in" "$1"
handle_source "Makefile.bundle.in" "$1"
handle_source "Makefile.grf.in" "$1"
handle_source "Makefile.setting.in" "$1"
handle_source "Makefile.src.in" "$1"
handle_source "CMakeLists.txt" "$1"
while IFS=$'\n' read -r line; do
handle_source "src/$line" "$1"
done < <( sed -e 's/^[ \t]*//; s/[ \t]*$//;' -e '/^$/ d;' -e '/^#/ d;' -e '/^..\// d;' -e 's/^rev.cpp$/rev.cpp.in/;' "source.list" )
handle_source "$line" "$1"
done < <( find -L cmake -type f -name '*.cmake' -print | sort )
while IFS=$'\n' read -r line; do
handle_source "$line" "$1"
done < <( find -L src -type f \( -name 'CMakeLists.txt' -o -name '*.cpp' -o -name '*.c' -o -name '*.hpp' -o -name '*.h' -o -name '*.sq' -o -name '*.mm' -o -name '*.in' \) -print | sort )
while IFS=$'\n' read -r line; do
handle_source "$line" "$1"
done < <( find -L src/lang -type f -name '*.txt' -print | sort )
}
if [ -z "$HASH" -a -z "$NAMES" -a -z "$HASHLIST" -a -z "$TESTOK" -a -z "$WRITE" -a -z "$RELEASETAG" ]; then

Loading…
Cancel
Save