Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/scripts/mkvers.sh')
-rwxr-xr-xwinsup/cygwin/scripts/mkvers.sh196
1 files changed, 196 insertions, 0 deletions
diff --git a/winsup/cygwin/scripts/mkvers.sh b/winsup/cygwin/scripts/mkvers.sh
new file mode 100755
index 000000000..b2db73cc7
--- /dev/null
+++ b/winsup/cygwin/scripts/mkvers.sh
@@ -0,0 +1,196 @@
+#!/bin/sh
+# mkvers.sh - Make version information for cygwin DLL
+#
+# This file is part of Cygwin.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Cygwin license. Please consult the file "CYGWIN_LICENSE" for
+# details.
+
+exec 9> version.cc
+
+#
+# Arg 1 is the name of the version include file
+#
+incfile="$1"; shift
+rcfile="$1"; shift
+windres="$1"; shift
+iflags=
+# Find header file locations
+while [ -n "$*" ]; do
+ case "$1" in
+ -I*)
+ iflags="$iflags $1"
+ ;;
+ -idirafter)
+ shift
+ iflags="$iflags -I$1"
+ ;;
+ esac
+ shift
+done
+
+[ -r $incfile ] || {
+ echo "**** Couldn't open file '$incfile'. Aborting."
+}
+
+parse_preproc_flags() {
+ # Since we're manually specifying the preprocessor, pass the default flags
+ # normally defined.
+ ccflags="--preprocessor=$1 --preprocessor-arg=-E \
+ --preprocessor-arg=-xc-header --define=RC_INVOKED "
+ shift
+ while [ -n "$*" ]; do
+ case "$1" in
+ # We need to be able to find the just-built cc1 binary.
+ -B*)
+ ccflags="$ccflags --preprocessor-arg=$1"
+ ;;
+ esac
+ shift
+ done
+}
+
+parse_preproc_flags $CC
+
+
+
+#
+# Load the current date so we can work on individual fields
+#
+set -$- $(date -u +"%m %d %Y %H:%M")
+m=$1 d=$2 y=$3 hhmm=$4
+#
+# Set date into YYYY-MM-DD HH:MM:SS format
+#
+builddate="$y-$m-$d $hhmm"
+echo "$builddate"
+
+set -$- ''
+
+#
+# Output the initial part of version.cc
+#
+cat <<EOF 1>&9
+#include "config.h"
+#include "cygwin_version.h"
+
+#define strval(x) #x
+#define str(x) strval(x)
+#define shared_data_version str(CYGWIN_VERSION_SHARED_DATA)
+
+const char *cygwin_version_strings =
+ "BEGIN_CYGWIN_VERSION_INFO\n"
+EOF
+
+#
+# Split version file into dir and filename components
+#
+dir=$(dirname $incfile)
+fn=$(basename $incfile)
+
+#
+# Look in the include file CVS directory for a CVS Tag file. This file,
+# if it exists, will contain the name of the sticky tag associated with
+# the current build. Save that for output later.
+#
+cvs_tag="$(sed -e '/dontuse/d' -e 's%^.\(.*\)%\1%' $dir/CVS/Tag 2>/dev/null)"
+
+wv_cvs_tag="$cvs_tag"
+[ -n "$cvs_tag" ] && cvs_tag=" CVS tag"'
+'"$cvs_tag"
+
+#
+# Look in the source directory containing the include/cygwin/version.h
+# and set dir accordingly.
+dir=$(echo $dir | sed -e 's%/include/cygwin.*$%%' -e 's%include/cygwin.*$%.%')
+
+# Look in $dir for a a ".snapshot-date" file. If one is found then this
+# information will be saved for output to the DLL.
+#
+if [ -r "$dir/.snapshot-date" ]; then
+ read snapshotdate < "$dir/.snapshot-date"
+ snapshot="snapshot date
+$snapshotdate"
+fi
+
+#
+# Scan the version.h file for strings that begin with CYGWIN_INFO or
+# CYGWIN_VERSION. Perform crude parsing on the lines to get the values
+# associated with these values and then pipe it into a while loop which
+# outputs these values in C palatable format for inclusion in the DLL
+# with a '%% ' identifier that will introduce "interesting" strings.
+# These strings are strictly for use by a user to scan the DLL for
+# interesting information.
+#
+(
+ sed -n -e 's%#define CYGWIN_INFO_\([A-Z_]*\)[ ][ ]*\([a-zA-Z0-9"][^/]*\).*%_\1\
+\2%p' -e 's%#define CYGWIN_VERSION_\([A-Z_]*\)[ ][ ]*\([a-zA-Z0-9"][^/]*\).*%_\1\
+\2%p' $incfile | sed -e 's/["\\]//g' -e '/^_/y/ABCDEFGHIJKLMNOPQRSTUVWXYZ_/abcdefghijklmnopqrstuvwxyz /';
+ echo ' build date'; echo $build_date;
+ [ -n "$cvs_tag" ] && echo "$cvs_tag";
+ [ -n "$snapshot" ] && echo "$snapshot"
+) | while read var; do
+ read val
+cat <<EOF
+ "%%% Cygwin $var: $val\n"
+EOF
+done | tee /tmp/mkvers.$$ 1>&9
+
+trap "rm -f /tmp/mkvers.$$" 0 1 2 15
+
+if [ -n "$snapshotdate" ]; then
+ usedate="$(echo $snapshotdate \
+ | sed -e 's/\(....\)\(..\)\(..\)-\(..:..\).*$/\1-\2-\3 \4SNP/')"
+else
+ usedate="$builddate"
+fi
+
+#
+# Finally, output the shared ID and set up the cygwin_version structure
+# for use by Cygwin itself.
+#
+cat <<EOF 1>&9
+#ifdef DEBUGGING
+ "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate\n"
+#else
+ "%%% Cygwin shared id: " CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "\n"
+#endif
+ "END_CYGWIN_VERSION_INFO\n\0";
+cygwin_version_info cygwin_version =
+{
+ CYGWIN_VERSION_API_MAJOR, CYGWIN_VERSION_API_MINOR,
+ CYGWIN_VERSION_DLL_MAJOR, CYGWIN_VERSION_DLL_MINOR,
+ CYGWIN_VERSION_SHARED_DATA,
+ CYGWIN_VERSION_MOUNT_REGISTRY,
+ "$usedate",
+#ifdef DEBUGGING
+ CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version "-$builddate"
+#else
+ CYGWIN_VERSION_DLL_IDENTIFIER "S" shared_data_version
+#endif
+};
+EOF
+
+#
+# Generate winver.o using cygwin/version.h information.
+# Turn the cygwin major number from some large number to something like 1.1.0.
+#
+eval $(sed -n 's/^.*dll \(m[ai][jn]or\): \([0-9]*\)[^0-9]*$/\1=\2/p' /tmp/mkvers.$$)
+cygverhigh=$(expr $major / 1000)
+cygverlow=$(expr $major % 1000)
+cygwin_ver="$cygverhigh.$cygverlow.$minor"
+if [ -n "$cvs_tag" ]
+then
+ cvs_tag="$(echo $wv_cvs_tag | sed -e 's/-branch.*//')"
+ cygwin_ver="$cygwin_ver-$cvs_tag"
+fi
+
+echo "Version $cygwin_ver"
+set -$- $builddate
+$windres $iflags $ccflags \
+ --define CYGWIN_BUILD_DATE="$1" \
+ --define CYGWIN_BUILD_TIME="$2" \
+ --define CYGWIN_BUILD_YEAR=$y \
+ --define CYGWIN_VERSION='"'"$cygwin_ver"'"' \
+ $rcfile winver.o