From: fred Date: Tue, 26 Mar 2002 23:10:23 +0000 (+0000) Subject: lilypond-1.3.41 X-Git-Tag: release/1.5.59~1709 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=732095031ebd039fdc72819d1a95372d45ca940b;p=lilypond.git lilypond-1.3.41 --- 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 * 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 < /dev/null 2>&1 ; then AC_MSG_WARN("cannot execute $guile_config")