From 732095031ebd039fdc72819d1a95372d45ca940b Mon Sep 17 00:00:00 2001
From: fred <fred>
Date: Tue, 26 Mar 2002 23:10:23 +0000
Subject: [PATCH] lilypond-1.3.41

---
 .../ntweb/guile-1.3.4-gnu-windows.patch       |  21 +-
 aclocal.m4                                    |   4 +-
 buildscripts/make-cygwin-cross-tar.sh         | 436 ++++++++++++++++++
 stepmake/aclocal.m4                           |   4 +-
 4 files changed, 454 insertions(+), 11 deletions(-)
 create mode 100644 buildscripts/make-cygwin-cross-tar.sh

diff --git a/Documentation/ntweb/guile-1.3.4-gnu-windows.patch b/Documentation/ntweb/guile-1.3.4-gnu-windows.patch
index 490f730d6b..6a29dda59a 100644
--- a/Documentation/ntweb/guile-1.3.4-gnu-windows.patch
+++ b/Documentation/ntweb/guile-1.3.4-gnu-windows.patch
@@ -6,7 +6,7 @@ diff -urN ../guile-1.3.4/ChangeLog ./ChangeLog
 + 
 +	* guile-config/cross-guile-config.in: Simple shell script to
 + 	take over guile-config's functionality for cross-compilation.
-+ 	It will be installed as ${build}-guile-config.
++ 	It will be installed as ${target}-guile-config.
 + 
 + 	* guile-config/Makefile.am: Provide for cross-guile-config.in
 + 	and its targets.
@@ -14,6 +14,17 @@ diff -urN ../guile-1.3.4/ChangeLog ./ChangeLog
  1999-09-25  Jim Blandy  <jimb@savonarola.red-bean.com>
  
  	* Guile 1.3.4 released.
+diff -urN ../guile-1.3.4/configure.in ./configure.in
+--- ../guile-1.3.4/configure.in	Sat Sep 25 19:26:50 1999
++++ ./configure.in	Wed Mar 29 15:49:56 2000
+@@ -21,6 +21,7 @@
+ dnl  Boston, MA 02111-1307, USA.
+ 
+ AC_INIT(Makefile.in)
++AC_CANONICAL_SYSTEM
+ . $srcdir/GUILE-VERSION
+ AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
+ AM_MAINTAINER_MODE
 diff -urN ../guile-1.3.4/guile-config/Makefile.am ./guile-config/Makefile.am
 --- ../guile-1.3.4/guile-config/Makefile.am	Mon Oct 19 17:24:31 1998
 +++ ./guile-config/Makefile.am	Mon Mar 27 15:47:43 2000
@@ -24,8 +35,8 @@ diff -urN ../guile-1.3.4/guile-config/Makefile.am ./guile-config/Makefile.am
 -bin_SCRIPTS=guile-config
 -CLEANFILES=guile-config
 -EXTRA_DIST=guile-config.in
-+bin_SCRIPTS=guile-config @build@-guile-config
-+CLEANFILES=guile-config @build@-guile-config
++bin_SCRIPTS=guile-config @target@-guile-config
++CLEANFILES=guile-config @target@-guile-config
 +EXTRA_DIST=guile-config.in cross-guile-config.in
  
  ## We use @-...-@ as the substitution brackets here, instead of the
@@ -35,7 +46,7 @@ diff -urN ../guile-1.3.4/guile-config/Makefile.am ./guile-config/Makefile.am
  	chmod +x guile-config.tmp
  	mv guile-config.tmp guile-config
 +
-+@build@-guile-config: cross-guile-config.in
++@target@-guile-config: cross-guile-config.in
 +	rm -f $<.tmp
 +	sed < ${srcdir}/$< > $<.tmp \
 +	    -e s:@-SHELL-@:${SHELL}: \
@@ -51,7 +62,7 @@ diff -urN ../guile-1.3.4/guile-config/cross-guile-config.in ./guile-config/cross
 +++ ./guile-config/cross-guile-config.in	Mon Mar 27 15:46:36 2000
 @@ -0,0 +1,16 @@
 +#!@-SHELL-@
-+# build-guile-config.in
++# target-guile-config.in
 +case $1 in
 +	--version)
 +		echo "@-GUILE_VERSION-@"
diff --git a/aclocal.m4 b/aclocal.m4
index 2a6916b2af..8e3f35150d 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,7 +1,5 @@
 dnl WARNING WARNING WARNING WARNING
 dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
-dnl WARNING WARNING WARNING WARNING
-dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
@@ -163,7 +161,7 @@ AC_DEFUN(AC_STEPMAKE_GXX, [
 AC_DEFUN(AC_STEPMAKE_GUILE, [
     ## First, let's just see if we can find Guile at all.
     AC_MSG_CHECKING("for guile-config")
-    for guile_config in guile-config $build-guile-config; do
+    for guile_config in guile-config $target-guile-config $build-guile-config; do
 	AC_MSG_RESULT("$guile_config")
 	if ! $guile_config --version > /dev/null 2>&1 ; then
 	    AC_MSG_WARN("cannot execute $guile_config")
diff --git a/buildscripts/make-cygwin-cross-tar.sh b/buildscripts/make-cygwin-cross-tar.sh
new file mode 100644
index 0000000000..fd5e13b6d2
--- /dev/null
+++ b/buildscripts/make-cygwin-cross-tar.sh
@@ -0,0 +1,436 @@
+#!@BASH@
+# make-cygwin-cross
+#
+# Build and install cross-development tools for cygwin package 
+# (binutils, compiler, flex, bison).
+# Using this cross-development enviroment, build and install
+# native cygwin packages (guile, lilypond).
+#
+# Besides being a handy script for me, currently this mainly serves
+# as documentation for cross-building lilypond.
+#
+# To use this script, you need
+#
+#  * all development tools to build a native LilyPond, see INSTALL.txt
+#
+#  * pre-release cygnus sources (and a binary) from:
+#
+#      ftp://sourceware.cygnus.com/pub/cygwin/private/cygwin-net-485/
+#
+#          binutils/binutils-19990818-1-src.tar.gz
+#          bison/bison-src.tar.gz
+#          cygwin/cygwin-20000301.tar.gz
+#          flex/flex-src.tar.gz
+#          gcc/gcc-2.95.2-1-src.tar.gz
+#
+#      ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/runtime/
+#
+#          bin-crtdll-2000-02-03.tar.gz  (mingw only)
+#
+#  * rx-1.5.tar.gz
+#
+#  * guile-1.3.4.tar.gz
+#
+#  * lilypond-1.3.38.jcn1.tar.gz
+#
+#  * lots of disk space, ca 353MB
+#
+# Not yet needed:
+#
+#  * db-2.7.7.tar.gz
+#
+#  * rpm-3.0.4.tar.gz 
+#
+
+################
+# config section
+################
+
+target=cygwin
+#target=mingw
+
+if [ $target = cygwin ]; then
+	ROOT=/usr/src/cygwin-net-485
+	TARGET_ARCH=i686-pc-cygwin
+else
+	ROOT=/usr/src/mingw-net-485
+	TARGET_ARCH=i386-pc-mingw32
+fi
+PREFIX=$ROOT/usr
+NATIVE_PREFIX=/Cygnus/usr
+
+# urg
+DEVEL=/home/fred
+WWW=$DEVEL/WWW/lilypond/gnu-windows
+#WWW=/tmp
+
+CYGWIN_SOURCE=$DEVEL/sourceware.cygnus.com/pub/cygwin/private/cygwin-net-485
+MINGW_SOURCE=$DEVEL/ftp.xraylith.wisc.edu/pub/khan/gnu-win32/mingw32/runtime
+SOURCE_PATH=$DEVEL/usr/src/releases:$DEVEL/usr/src/patches:$DEVEL/usr/src/lilypond/Documentation/ntweb:$MINGW_SOURCE:/usr/src/redhat/SOURCES
+
+HOST=`uname -m`-gnu-`uname -s | tr '[A-Z]' '[a-z]'`
+
+cygwin_binary=cygwin-20000301.tar.gz
+mingw_binary=bin-crtdll-2000-02-03.tar.gz
+
+#CYGWIN_DLL=cygwin1-net-485.dll
+CYGWIN_DLL=cygwin1.dll
+MINWG_DLL=mingwc10-net-485.dll
+
+
+################
+# cross packages
+################
+
+cross_packages="
+binutils-19990818
+gcc-2.95.2
+flex
+bison
+"
+
+not_yet_needed="
+cygwin-2000301
+"
+
+cross_configure='--prefix=$PREFIX --target=$TARGET_ARCH'
+gcc_make='LANGUAGES="c++"'
+cygwin_make='-k || true'
+
+#################
+# native packages
+#################
+
+# Typically, we install native packages under
+#
+#   /Cygnus/usr/package-x.y.z
+#
+# so that's how we configure them.
+#
+native_configure='--target=$TARGET_ARCH --build=$TARGET_ARCH --host=$HOST --oldincludedir=$PREFIX/include --prefix=$NATIVE_PREFIX/$package --program-suffix='
+native_config_site='$PREFIX/share/native-config.site'
+
+rx_install='prefix=$PREFIX'
+
+db_patch='db-2.7.7-cygwin.patch'
+db_configure='urg'
+db_install='prefix=$PREFIX'
+rpm_patch='rpm-3.0.4-cygwin.patch'
+rpm_install='prefix=$PREFIX'
+
+guile_patch='guile-1.3.4-gnu-windows.patch'
+if [ $target = mingw ]; then
+	guile_patch1='guile-1.3.4-mingw.patch'
+	guile_cflags='-I $PREFIX/$TARGET_ARCH/include -I $PREFIX/i686-pc-cygwin/include'
+fi
+guile_ldflags='-L$PREFIX/lib $PREFIX/bin/$CYGWIN_DLL'
+guile_make='oldincludedir=$PREFIX/include'
+
+# We need to get guile properly installed for cross-development, ie
+# at our prefix: $PREFIX.  When packaging, the prefix we configured
+# for, will be used.
+#
+guile_install='prefix=$PREFIX'
+
+lilypond_version=@TOPLEVEL_VERSION@
+if [ $target = mingw ]; then
+	lilypond_cflags='-I $PREFIX/$TARGET_ARCH/include -I $PREFIX/i686-pc-cygwin/include'
+fi
+lilypond_ldflags='-L$PREFIX/lib -lguile $PREFIX/bin/$CYGWIN_DLL'
+lilypond_configure='--enable-tex-tfmdir=/texmf/fonts/tfm/public/cm'
+## URG, help2man: doesn't know about cross-compilation.
+#lilypond_make='-k || make -k || true'
+lilypond_patch=lilypond-manpages.patch
+# Don't install lilypond
+lilypond_install='--just-print'
+lilypond_before_zip='cp -pr $PREFIX/src/$package/input $install_prefix \; cp -p \`find $PREFIX/src/$package -type f -maxdepth 1\` $install_prefix'
+
+native_packages="
+guile-1.3.4
+lilypond-$lilypond_version
+"
+
+not_yet_needed="
+rx-1.5
+db-2.7.7
+rpm-3.0.4
+"
+
+#######################
+# end of config section
+#######################
+
+cygwin_dirs=`/bin/ls -d1 $CYGWIN_SOURCE/*`
+cygwin_source_path=`echo $CYGWIN_SOURCE $cygwin_dirs`
+source_path=`echo $SOURCE_PATH:$cygwin_source_path | sed 's/:/ /g'`
+
+###########
+# functions
+###########
+
+untar ()
+{(
+	set -x
+	tarball=$1
+	dest_dir=$2
+
+	first_dir=`tar tzf $tarball | head -1`
+	src_dir=`dirname $first_dir`
+
+	if [ "$src_dir" = "src" -o "$src_dir" = "./src" \
+	  -o "$src_dir" = "." ]; then
+		src_dir=$first_dir
+	fi
+
+	tar xzf $tarball
+
+	if [ "$src_dir" != "$dest_dir" -a "$src_dir" != "$dest_dir/" ]; then
+		mv $src_dir $dest_dir
+		rm -rf ./$first_dir
+	fi
+)
+}
+
+expand ()
+{(
+
+	set -
+	string=`eval echo $\`eval echo "${1}${2}"\``
+	eval echo $string
+)
+}
+
+find_path ()
+{(
+	set -
+	expr=$1
+	found=
+	for i in $source_path; do
+		found=`/bin/ls -d1 $i/$expr 2>/dev/null | head -1`
+		if [ -e "$found" ]; then
+			break
+		fi
+	done
+	echo $found
+)
+}
+
+fix_extension ()
+{
+	file=$1
+	ext=$2
+	expr="$3"
+	base=`basename $file $ext`
+	if [ $base$ext != $i ]; then
+		type="`file $file`"
+		if expr "$type" : "$expr"; then
+			mv -f $file $base$ext
+		fi
+	fi
+}
+
+build ()
+{(
+	package=$1
+	set -
+	if [ -d $package ]; then
+		echo "$package: directory exists"
+		echo "$package: skipping"
+		exit 0
+	fi
+
+        name=`echo $package | sed 's/-.*//'`
+        name_cflags=`expand $name _cflags`
+        name_ldflags=`expand $name _ldflags`
+        name_configure=`expand $name _configure`
+        type_config_site=`expand $type _config_site`
+        type_configure=`expand $type _configure`
+        name_make=`expand $name _make`
+        name_before_install="`expand $name _before_install`"
+        name_install=`expand $name _install`
+
+	found=`find_path $package*src.tar.gz`
+	if [ "$found" = "" ]; then
+		found=`find_path $package.tar.gz`
+	fi
+	if [ "$found" = "" ]; then
+		found=`find_path $name*tar.gz`
+	fi
+	if [ "$found" = "" ]; then
+		echo "$package: no such tarball"
+		exit 1
+	fi
+	
+	untar $found $package
+	patch=`expand $name _patch`
+	count=0
+	while [ "x$patch" != "x" ]; do
+		(
+		cd $package
+		set -x
+		found=`find_path $patch`
+		if [ "$found" = "" ]; then
+			echo "$patch: no such file"
+			exit 1
+		fi
+		patch -p1 -E < $found
+		)
+		count=`expr $count + 1`
+		patch=`expand $name _patch$count`
+	done
+	mkdir $type-$package
+	cd $type-$package
+
+	rm -f config.cache
+	CONFIG_SITE="$type_config_site" CFLAGS="$name_cflags" LDFLAGS="$name_ldflags" ../$package/configure $type_configure $name_configure || exit 1
+	make $name_make || exit 1
+	`eval $name_before_install` || exit 1
+	make install $name_install || exit 1
+)
+}
+
+## urg, let's hope Cygnus uses rpm for packaging its next release
+pack ()
+{(
+	set -
+	package=$1
+
+	zip=$WWW/$package.zip
+	if [ -e $zip ]; then
+		echo "$zip: package exists"
+		echo "$zip: skipping"
+		exit 0
+	fi
+
+        name=`echo $package | sed 's/-.*//'`
+        name_pack_install=`expand $name _pack_install`
+	install_root=/tmp/$package-install
+	install_prefix=$install_root/$NATIVE_PREFIX/$package
+	name_before_zip=`expand $name _before_zip`
+
+	set -x
+	rm -rf $install_root
+	mkdir -p $install_prefix
+
+	cd $PREFIX/src/$type-$package || exit 1
+	make install prefix=$install_prefix $name_pack_install
+
+        ## duh, rename executables,
+	## for people that use a dumb shell instead of bash
+	cd $install_prefix/bin &&
+	for i in `/bin/ls -d1 *`; do
+		fix_extension $i .exe '.*Windows.*\(executable\).*'
+		fix_extension $i .py '.*\(python\).*'
+	done
+
+        rm -f $zip
+	`eval $name_before_zip` || exit 1
+        cd $install_root && zip -ry $zip .$NATIVE_PREFIX
+)
+}
+##################
+# end of functions
+##################
+
+#
+# setup
+#
+
+set -x
+mkdir -p $ROOT
+if [ ! -d $PREFIX ]; then
+	cd $ROOT
+	found=`find_path $cygwin_binary`
+	if [ "$found" = "" ]; then
+		echo "$cygwin_binary: no such tarball"
+		exit 1
+	fi
+	tar xzf $found
+	# urg, bug in gcc's cross-make configuration
+	mkdir -p $PREFIX/lib/gcc-lib/$TARGET_ARCH/2.95.2
+
+	cd $PREFIX
+
+	# urg, bug in gcc's cross-make configuration
+	rm -f include
+	ln -s $PREFIX/$TARGET_ARCH/include .
+else
+	echo "$PREFIX: already exists"
+	echo "$cygwin_binary: skipping"
+fi
+
+# mingw
+if [ ! -d $PREFIX/$TARGET_ARCH ]; then
+	cd $PREFIX
+	found=`find_path $mingw_binary`
+	if [ "$found" = "" ]; then
+		echo "$mingw_binary: no such tarball"
+		exit 1
+	fi
+	tar xzf $found
+
+	mkdir -p $PREFIX/lib/gcc-lib/$TARGET_ARCH/2.95.2
+	rm -f include
+	mkdir -p $PREFIX/i386-mingw32/include
+	ln -s $PREFIX/i386-mingw32 $TARGET_ARCH
+	ln -s $PREFIX/$TARGET_ARCH/include .
+fi
+
+if [ ! -e $NATIVE_PREFIX ]; then
+	ln -s $ROOT /Cygnus || exit 1
+fi
+
+mkdir -p $PREFIX/src
+cd $PREFIX/src
+PATH=$PATH:$PREFIX/bin
+
+type=cross
+for i in $cross_packages; do
+	if build $i; then
+		true
+	else
+		echo "$i: build failed"
+		exit 1
+	fi
+done
+
+# urg, bug in binutil's cross-make install
+ln -f $PREFIX/bin/$TARGET_ARCH-objdump $PREFIX/$TARGET_ARCH/bin/objdump
+
+# urg, bug in gcc's cross-make install
+mv $PREFIX/bin/cygwin1.dll $PREFIX/bin/$CYGWIN_DLL
+mv $PREFIX/bin/mingwc10.dll $PREFIX/bin/$MINGW_DLL
+ln -f $PREFIX/bin/$TARGET_ARCH-gcc $PREFIX/$TARGET_ARCH/bin/cc 
+ln -f $PREFIX/bin/$TARGET_ARCH-c++ $PREFIX/$TARGET_ARCH/bin/c++
+ln -f $PREFIX/bin/$TARGET_ARCH-g++ $PREFIX/$TARGET_ARCH/bin/g++
+
+PATH=$PREFIX/$TARGET_ARCH/bin:$PREFIX/bin:$PATH 
+
+mkdir -p $PREFIX/src
+cd $PREFIX/src
+
+ncs=`eval echo $native_config_site`
+rm -f $ncs
+mkdir -p `dirname $ncs`
+cat > $ncs <<EOF
+ac_cv_sizeof_int=4
+ac_cv_sizeof_long=4
+ac_cv_sys_restartable_syscalls=yes
+ac_cv_sprintf_count=yes
+ac_cv_spinlocks=no
+db_cv_sprintf_count=yes
+db_cv_spinlocks=no
+EOF
+
+set -x
+type=native
+for i in $native_packages; do
+	if build $i; then
+		pack $i
+		continue
+	fi
+	exit 1
+done
+
+rm -f $WWW/$CYGWIN_DLL.zip
+cd $PREFIX/bin && zip $WWW/$CYGWIN_DLL.zip $CYGWIN_DLL
diff --git a/stepmake/aclocal.m4 b/stepmake/aclocal.m4
index f0b60d4f8d..6b2886d4cb 100644
--- a/stepmake/aclocal.m4
+++ b/stepmake/aclocal.m4
@@ -1,5 +1,3 @@
-dnl WARNING WARNING WARNING WARNING
-dnl do not edit! this is aclocal.m4, generated from stepmake/aclocal.m4
 dnl aclocal.m4   -*-shell-script-*-
 dnl StepMake subroutines for configure.in
 
@@ -161,7 +159,7 @@ AC_DEFUN(AC_STEPMAKE_GXX, [
 AC_DEFUN(AC_STEPMAKE_GUILE, [
     ## First, let's just see if we can find Guile at all.
     AC_MSG_CHECKING("for guile-config")
-    for guile_config in guile-config $build-guile-config; do
+    for guile_config in guile-config $target-guile-config $build-guile-config; do
 	AC_MSG_RESULT("$guile_config")
 	if ! $guile_config --version > /dev/null 2>&1 ; then
 	    AC_MSG_WARN("cannot execute $guile_config")
-- 
2.39.5