X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=buildscripts%2Fmake-cygwin-cross.sh;h=8b215a0445358c50d2e653c2178c986479a59e3a;hb=5f342d41b30d5e86d646f6a572e5a427676e5515;hp=ba14c333e1ddae9f8f1998082eb52dac96c76da3;hpb=f6f3de6c279a8c26d4114221ead11ed1c8911a57;p=lilypond.git diff --git a/buildscripts/make-cygwin-cross.sh b/buildscripts/make-cygwin-cross.sh index ba14c333e1..8b215a0445 100644 --- a/buildscripts/make-cygwin-cross.sh +++ b/buildscripts/make-cygwin-cross.sh @@ -26,33 +26,45 @@ # config section ################ -target=cygwin -#target=mingw +TARGET_OS=cygwin +#TARGET_OS=mingw32 -if [ $target = cygwin ]; then +if [ $TARGET_OS = cygwin ]; then ROOT=/usr/src/cygwin-net-485 - TARGET_ARCH=i686-pc-cygwin + TARGET_ARCH=i686 + TARGET_VENDOR=pc else ROOT=/usr/src/mingw-net-485 - TARGET_ARCH=i386-pc-mingw32 + TARGET_ARCH=i386 + TARGET_VENDOR=pc fi +TARGET_PLATFORM=$TARGET_ARCH-$TARGET_VENDOR-$TARGET_OS + +ARCH=`uname -m` +OS=`uname -s | tr '[A-Z]' '[a-z]'` +VENDOR=gnu +PLATFORM=$ARCH-$VENDOR-$OS + +#CROSS_TARGET_PLATFORM=$ARCH-x-$TARGET_PLATFORM +CROSS_TARGET_PLATFORM=$PLATFORM-x-$TARGET_PLATFORM +cto=$OS-x-cygwin +tp=i686-cygwin + PREFIX=$ROOT/usr NATIVE_ROOT=/Cygnus NATIVE_PREFIX=$NATIVE_ROOT/usr +CROSS_ROOT=$NATIVE_ROOT/$cto +CROSS_PREFIX=$CROSS_ROOT/usr # urg DEVEL=/home/fred distdir=$DEVEL/WWW/lilypond/gnu-windows/lily-w32 #distdir=/tmp -SOURCE_PATH=$DEVEL/usr/src/releases:$DEVEL/usr/src/redhat/SRPMS - -ARCH=`uname -m` -OS=`uname -s | tr '[A-Z]' '[a-z]'` -HOST=$ARCH-gnu-$OS -CROSS_TARGET_ARCH=$ARCH-x-$TARGET_ARCH -cta=$ARCH-x-cygwin -ta=i686-cygwin +CYGWIN_SOURCE=$DEVEL/sourceware.cygnus.com/pub/cygwin/private/cygwin-net-485 +cygwin_dirs=`/bin/ls -d1 $CYGWIN_SOURCE/*` +cygwin_source_path=`echo $CYGWIN_SOURCE $cygwin_dirs | sed s'/\$/:/g'` +SOURCE_PATH=$DEVEL/usr/src/releases:$DEVEL/usr/src/redhat/SRPMS:$cygwin_source_path cygwin_binary=cygwin-20000301.tar.gz mingw_binary=bin-crtdll-2000-02-03.tar.gz @@ -68,34 +80,28 @@ MINWG_DLL=mingwc10-net-485.dll cross_rpm=" binutils-19990818 +gcc-2.95.2 bison flex -gcc-2.95.2 " +# binutils installs ok, but forgets these two binutils_after_rpm=' -cd $PREFIX/$TARGET_ARCH/bin \; -ln -f ../../bin/$TARGET_ARCH-ar ar \; -ln -f ../../bin/$TARGET_ARCH-as as \; -ln -f ../../bin/$TARGET_ARCH-dlltool dlltool \; -ln -f ../../bin/$TARGET_ARCH-ld ld \; -ln -f ../../bin/$TARGET_ARCH-nm nm \; -ln -f ../../bin/$TARGET_ARCH-objdump objdump \; -ln -f ../../bin/$TARGET_ARCH-objcopy objcopy \; -ln -f ../../bin/$TARGET_ARCH-ranlib ranlib \; -ln -f ../../bin/$TARGET_ARCH-strip strip \; -cd $PREFIX/bin \; -rm -f ar as dlltool ld nm objdump objcopy ranlib strip \; +cd $CROSS_PREFIX/$TARGET_PLATFORM/bin \; +ln -f ../../bin/$TARGET_PLATFORM-objdump objdump \; +ln -f ../../bin/$TARGET_PLATFORM-objcopy objcopy \; +mv -f ld ld-in-path-breaks-libtool ' +# burp. gcc doesn't install any of these gcc_after_rpm=' -cd $PREFIX/$TARGET_ARCH/bin \; -ln -f ../../bin/$TARGET_ARCH-gcc cc \; -ln -f ../../bin/$TARGET_ARCH-gcc gcc \; -ln -f ../../bin/$TARGET_ARCH-c++ c++ \; -ln -f ../../bin/$TARGET_ARCH-g++ g++ +cd $CROSS_PREFIX/$TARGET_PLATFORM/bin \; +ln -f ../../bin/$TARGET_PLATFORM-gcc cc \; +ln -f ../../bin/$TARGET_PLATFORM-gcc gcc \; +ln -f ../../bin/$TARGET_PLATFORM-c++ c++ \; +ln -f ../../bin/$TARGET_PLATFORM-g++ g++ ' -#guile_after_rpm='ln -f $NATIVE_PREFIX/bin/i686-redhat-cygwin-guile-config $NATIVE_PREFIX/bin/i686-pc-cygwin-guile-config' +guile_after_rpm='cp -f $NATIVE_PREFIX/bin/*guile-config $CROSS_PREFIX/$TARGET_PLATFORM/bin' lilypond_version=@TOPLEVEL_VERSION@ @@ -149,17 +155,18 @@ build () name=`echo $package | sed 's/-.*//'` if [ $type = "cross" ]; then - target_arch=$CROSS_TARGET_ARCH - a=$cta + target_platform=$CROSS_TARGET_PLATFORM + a=$cto else - target_arch=$TARGET_ARCH - a=$ta + target_platform=$TARGET_PLATFORM + a=$tp fi - rpm_package=`find_path $name*.rpm "$topdir/RPMS/$cta:$topdir/RPMS/$ta"` + rpm_package=`find_path $name*.rpm "$topdir/RPMS/$cto:$topdir/RPMS/$tp"` if [ "$rpm_package" != "" ]; then echo "$rpm_package: package exists" - echo "$rpm_package: just updating db" + #echo "$rpm_package: refreshing installation only" + echo "$rpm_package: just updating rpm database" rpm -ivv --justdb --ignoreos --ignorearch --nodeps --force\ --dbpath $NATIVE_ROOT/var/lib/rpm \ $topdir/RPMS/$a/$name*.rpm @@ -170,15 +177,15 @@ build () found=`find_path $package*src.rpm` if [ "$found" != "" ]; then rpm --root $NATIVE_ROOT -ivv $found || exit 1 - rpm --target=$target_arch -ba SPECS/$name*.spec || exit 1 + rpm --target=$target_platform -ba SPECS/$name*.spec || exit 1 else tarball=`/bin/ls -d1 SOURCES/$package*tar.gz 2>/dev/null | head -1` - if [ "SPECS/$name.spec" != "" ] && [ "$tarball" != "" ]; then - rpm --target=$target_arch -ba SPECS/$name.spec || exit 1 + if [ "$name.spec" != "" ] && [ "$tarball" != "" ]; then + rpm --target=$target_platform -ba SPECS/$name.spec || exit 1 else found=`find_path $package*tar.gz` if [ "$found" != "" ]; then - rpm --target=$target_arch -ta $found || exit 1 + rpm --target=$target_platform -ta $found || exit 1 else echo "$package: no such rpm or tarball" exit 1 @@ -209,9 +216,19 @@ mkdir -p $ROOT if [ ! -d $PREFIX/bin ]; then mkdir -p $PREFIX cd $PREFIX - mkdir -p include - mkdir -p $TARGET_ARCH - cd $TARGET_ARCH && ln -s ../include . + + ## is this still necessary? + mkdir -p include lib + mkdir -p $TARGET_PLATFORM + cd $TARGET_PLATFORM && ln -s ../include . + + mkdir -p $CROSS_PREFIX/$TARGET_PLATFORM + cd $CROSS_PREFIX/$TARGET_PLATFORM + ln -s $NATIVE_PREFIX/{include,lib} . + #ln -s $NATIVE_PREFIX/{include,lib} . + #ln -s $NATIVE_PREFIX/include . + #ln -s $CROSS_PREFIX/bin . + cd $ROOT found=`find_path $cygwin_binary` if [ "$found" = "" ]; then @@ -220,14 +237,15 @@ if [ ! -d $PREFIX/bin ]; then fi tar xzf $found # urg, bug in gcc's cross-make configuration - mkdir -p $PREFIX/lib/gcc-lib/$TARGET_ARCH/2.95.2 + mkdir -p $PREFIX/lib/gcc-lib/$TARGET_PLATFORM/2.95.2 + mkdir -p $CROSS_PREFIX/lib/gcc-lib/$TARGET_PLATFORM/2.95.2 else echo "$PREFIX: already exists" echo "$cygwin_binary: skipping" fi # mingw -if [ ! -d $PREFIX/$TARGET_ARCH ]; then +if [ ! -d $PREFIX/$TARGET_PLATFORM ]; then cd $PREFIX found=`find_path $mingw_binary` if [ "$found" = "" ]; then @@ -236,11 +254,11 @@ if [ ! -d $PREFIX/$TARGET_ARCH ]; then fi tar xzf $found - mkdir -p $PREFIX/lib/gcc-lib/$TARGET_ARCH/2.95.2 + mkdir -p $PREFIX/lib/gcc-lib/$TARGET_PLATFORM/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 . + ln -s $PREFIX/i386-mingw32 $TARGET_PLATFORM + ln -s $PREFIX/$TARGET_PLATFORM/include . fi rm -f $NATIVE_ROOT @@ -269,18 +287,19 @@ db_cv_sprintf_count=yes db_cv_spinlocks=no EOF -mcta=$ARCH-cygwin -cross_rpm_dir=$NATIVE_PREFIX/lib/rpm/$mcta -cross_rpm_link=/usr/lib/rpm/$mcta +#URG, stupid RPM +rpm_ct=$ARCH-$TARGET_OS +cross_rpm_dir=$CROSS_PREFIX/lib/rpm/$rpm_ct +cross_rpm_link=/usr/lib/rpm/$rpm_ct mkdir -p $cross_rpm_dir rm -f $cross_rpm_link -ln -s $NATIVE_PREFIX/lib/rpm/$mcta $cross_rpm_link +ln -s $cross_rpm_dir $cross_rpm_link -native_rpm_dir=$NATIVE_PREFIX/lib/rpm/$ta -native_rpm_link=/usr/lib/rpm/$ta +native_rpm_dir=$NATIVE_PREFIX/lib/rpm/$tp +native_rpm_link=/usr/lib/rpm/$tp mkdir -p $native_rpm_dir rm -f $native_rpm_link -ln -s $NATIVE_PREFIX/lib/rpm/$ta $native_rpm_link +ln -s $native_rpm_dir $native_rpm_link cross_macros=$cross_rpm_dir/macros native_macros=$native_rpm_dir/macros @@ -288,11 +307,6 @@ native_macros=$native_rpm_dir/macros base_macros=$NATIVE_PREFIX/lib/rpm/base-macros rm -f $base_macros cat > $base_macros < $base_macros <> $cross_macros <> $native_macros <> $native_macros < $native_rpm_dir/cygwin.prov < $NATIVE_PREFIX/lib/rpm/cygwin.prov < $native_rpm_dir/cygwin.req < $NATIVE_PREFIX/lib/rpm/cygwin.req < $NATIVE_PREFIX/bin/fix-suffixes < $distdir/setup.sh < rpmrc mkdir -p \$ROOT/var/lib mkdir -p \$ROOT/bin -echo > \$ROOT/bin/rpm +touch \$ROOT/bin/rpm \$ROOT/bin/rpm.exe ./rpm --root \$ROOT --rcfile rpmrc --initdb ./rpm --root \$ROOT --rcfile rpmrc --nodeps --ignorearch --ignoreos -Uhv \\ - RPMS/$ta/rpm-*.$ta.rpm \\ - RPMS/$ta/*.$ta.rpm + RPMS/$tp/rpm-*.$tp.rpm \\ + RPMS/$tp/*.$tp.rpm done EOF cat > $distdir/setup.bat < newdll; echo \$wdll \$wdll.orig\$\$ > olddll' if not errorlevel 0 goto nobash -#mv -f \$old_dll \$old_dll.orig\$\$ -#gunzip cygwin1.dll.gz +rem # mv -f \$old_dll \$old_dll.orig\$\$ +rem # gunzip cygwin1.dll.gz gunzip cygwin1.dll.gz -#cp -f cygwin1.dll \$old_dll +rem # cp -f cygwin1.dll \$old_dll copy < olddll copy < newdll bash setup.sh @@ -513,7 +596,7 @@ ln -s ../redhat/RPMS . www=`dirname $distdir` cd $www for i in guile-1 rpm lilypond; do - rpm=`find_path $i*.rpm $distbase/RPMS/$ta` + rpm=`find_path $i*.rpm $distbase/RPMS/$tp` dist_rpms="$dist_rpms $rpm" done @@ -530,12 +613,12 @@ rm -f $zipdir/$CYGWIN_DLL.zip cd $ROOT/bin && zip $zipdir/$CYGWIN_DLL.zip $CYGWIN_DLL for i in guile-1 rpm lilypond; do - found=`find_path $i*.rpm $distdir/RPMS/$ta` + found=`find_path $i*.rpm $distdir/RPMS/$tp` if [ "$found" = "" ]; then echo "$i: no such .rpm" else base=`basename $found` - package=`echo $base | sed "s/\.$ta.rpm//"` + package=`echo $base | sed "s/\.$tp.rpm//"` dir=/tmp/$i-rpm2zip rm -rf $dir mkdir -p $dir