summaryrefslogtreecommitdiffstats
path: root/contrib/mingw
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2007-07-28 08:31:57 +0000
committerChris Johns <chrisj@rtems.org>2007-07-28 08:31:57 +0000
commitf6cd0dbeadb89f13c616bc3bce19fad59093759b (patch)
tree55f32d8ae20ca7d97550213553a8379f5cfb0d2e /contrib/mingw
parent2007-07-28 Ralf Corsépius <ralf.corsepius@rtems.org> (diff)
downloadrtems-f6cd0dbeadb89f13c616bc3bce19fad59093759b.tar.bz2
2007-07-28 Chris Johns <chisj@rtems.org>
* README, build-rpms.sh, rtems.ini, build-exes.sh, rtems-tools.nsi: Updated to the new 4.8 build plus a new installer. * autoconf.def, automake.def, ba-wrap.sh, build-autotools.sh, msys-path.nsi, rtems-autotools.nsi, target-section-text, upload.sh, version: New to version 4.8. Autotools is built when installing.
Diffstat (limited to 'contrib/mingw')
-rw-r--r--contrib/mingw/ChangeLog10
-rw-r--r--contrib/mingw/README64
-rw-r--r--contrib/mingw/autoconf.def4
-rw-r--r--contrib/mingw/automake.def4
-rw-r--r--contrib/mingw/ba-wrap.sh15
-rw-r--r--contrib/mingw/build-autotools.sh281
-rwxr-xr-xcontrib/mingw/build-exes.sh314
-rwxr-xr-xcontrib/mingw/build-rpms.sh8
-rw-r--r--contrib/mingw/msys-path.nsi109
-rw-r--r--contrib/mingw/rtems-autotools.nsi391
-rw-r--r--contrib/mingw/rtems-tools.nsi102
-rw-r--r--contrib/mingw/rtems.ini4
-rw-r--r--contrib/mingw/target-section-text9
-rwxr-xr-xcontrib/mingw/upload.sh104
-rw-r--r--contrib/mingw/version2
15 files changed, 1349 insertions, 72 deletions
diff --git a/contrib/mingw/ChangeLog b/contrib/mingw/ChangeLog
index a4b6e4889e..1114876ac0 100644
--- a/contrib/mingw/ChangeLog
+++ b/contrib/mingw/ChangeLog
@@ -1,3 +1,13 @@
+2007-07-28 Chris Johns <chisj@rtems.org>
+ * README, build-rpms.sh, rtems.ini, build-exes.sh,
+ rtems-tools.nsi: Updated to the new 4.8 build plus a new
+ installer.
+
+ * autoconf.def, automake.def, ba-wrap.sh, build-autotools.sh,
+ msys-path.nsi, rtems-autotools.nsi, target-section-text,
+ upload.sh, version: New to version 4.8. Autotools is built when
+ installing.
+
2007-05-21 Joel Sherrill <joel.sherrill@oarcorp.com>
* build-rpms.sh: Fix typos.
diff --git a/contrib/mingw/README b/contrib/mingw/README
index a15cca42f2..0fd1c5e567 100644
--- a/contrib/mingw/README
+++ b/contrib/mingw/README
@@ -1,5 +1,5 @@
- Copyright (C) 2006 Chris Johns, Sydney, Australia <chrisj@rtems.org>
+ Copyright (C) 2006-2007 Chris Johns, Sydney, Australia <chrisj@rtems.org>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -16,3 +16,65 @@
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+To build mingw32 tools on a Fedora Core 7 box:
+
+1. Add makensis to your path.
+
+ $ export PATH=/opt/nsis/2.29/bin:$PATH
+
+2. Set up the RPM packages:
+
+ $ cat ~/.rpmrc
+ os_canon: mingw32: mingw32 23
+ arch_canon: mingw32: i686 1
+ arch_compat: mingw32: i686 noarch
+ buildarch_compat: mingw32: i686 noarch
+ optflags: mingw32 -O2 -g
+ optflags: i686 -O2 -pipe
+ $ cat ~/.rpmmacros
+ %_topdir /home2/work/chris/rtems/4.8/packages
+ %_tmppath /home2/work/chris/tmp/rtems
+ %_rpmdir %_topdir/%_target_os/RPMS
+ %_srcrpmdir %_topdir/%_target_os/SRPMS
+ %_signature gpg
+ # %_gpg_path ~/.gnupg
+ # %_gpg_name "RTEMS Packager"
+ %_gpg_name rtems
+ %vendor: RTEMS Project
+ %packager chrisj@rtems.org
+ %distribution RTEMS Project http://www.rtems.org/
+ $ mkdir -p /home2/work/chris/rtems/4.8/packages
+ $ mkdir /home2/work/chris/rtems/4.8/packages/SOURCES
+ $ mkdir /home2/work/chris/rtems/4.8/packages/BUILD
+ $ mkdir -p /home2/work/chris/rtems/4.8/packages/linux/SRPMS
+ $ mkdir -p /home2/work/chris/rtems/4.8/packages/linux/RPMS
+ $ mkdir -p /home2/work/chris/rtems/4.8/packages/mingw32/SRPMS
+ $ mkdir -p /home2/work/chris/rtems/4.8/packages/mingw32/RPMS
+ $ cp /home2/work/chris/rtems/4.8/head/contrib/crossrpms/patches/* \
+ /home2/work/chris/rtems/4.8/packages/SOURCES/.
+
+ Download the required sources to:
+
+ /home2/work/chris/rtems/4.8/packages/SOURCES
+
+ The list you need depends on what version you build. A tool exists
+ that atempts to determine the package. Ask on the list for it.
+
+2. Run the build.sh script where:
+
+ -d : debug output from the script and nested scripts
+ -h host : the host to buidl for
+ -p prefix : the prefix (not that important for mingw)
+ -s crossrpms : the path to the crossrpms source tree
+ -r relocation : the path for the NSIS installer executables
+
+ $ export PATH=/opt/rtems-4.8/bin:$PATH
+ $ cd /home2/work/chris/rtems/4.8/head/contrib/crossrpms
+ $ ./bootstrap
+ $ cd /home2/work/chris/rtems/4.8/head/contrib/mingw
+ $ ./build.sh -d -h mingw32 \
+ -p /home2/work/chris/rtems/4.8/build/rpms \
+ -s /home2/work/chris/rtems/4.8/head/contrib/crossrpms \
+ -r /home2/work/chris/rtems/4.8/build/mingw
+
+ Sit back and wait. The build take a long time on a fast machine.
diff --git a/contrib/mingw/autoconf.def b/contrib/mingw/autoconf.def
new file mode 100644
index 0000000000..d59d93a375
--- /dev/null
+++ b/contrib/mingw/autoconf.def
@@ -0,0 +1,4 @@
+package_name=autoconf-2.61
+package_source=$package_name.tar.bz2
+package_taropts=jxf
+package_patches=autoconf-20070411-cross-test-x.patch
diff --git a/contrib/mingw/automake.def b/contrib/mingw/automake.def
new file mode 100644
index 0000000000..6d19f1205c
--- /dev/null
+++ b/contrib/mingw/automake.def
@@ -0,0 +1,4 @@
+package_name=automake-1.10
+package_source=$package_name.tar.bz2
+package_taropts=jxf
+package_patches=
diff --git a/contrib/mingw/ba-wrap.sh b/contrib/mingw/ba-wrap.sh
new file mode 100644
index 0000000000..8ed89237e8
--- /dev/null
+++ b/contrib/mingw/ba-wrap.sh
@@ -0,0 +1,15 @@
+#! /bin/sh
+source=$(dirname $0)
+if [ "$source" = "." ]; then
+ source=$(pwd)
+fi
+echo
+echo " DO NOT CLOSE DO NOT CLOSE"
+echo
+echo "Warning: this command window will automatically close."
+echo
+echo "Build output: $source/at-log.txt"
+echo
+$source/build-autotools.sh $* 2>&1 >> $source/at-log.txt
+ec=$?
+exit $ec
diff --git a/contrib/mingw/build-autotools.sh b/contrib/mingw/build-autotools.sh
new file mode 100644
index 0000000000..f72ffbe9e1
--- /dev/null
+++ b/contrib/mingw/build-autotools.sh
@@ -0,0 +1,281 @@
+#! /bin/sh
+
+terminate()
+{
+ echo "error: $*" >&2
+ if [ $? -eq 0 ]; then
+ exit 222
+ fi
+ exit $?
+}
+
+check()
+{
+ if [ $? -ne 0 ]; then
+ terminate $*
+ fi
+}
+
+source=$(dirname $0)
+
+if [ "$source" = "." ]; then
+ source=$(pwd)
+fi
+
+build=none
+clean=no
+prefix=none
+
+while [ $# -gt 0 ];
+do
+ case $1 in
+ -b)
+ shift
+ build=$1
+ ;;
+ -c)
+ shift
+ config=$1
+ ;;
+ -d)
+ set -x
+ ;;
+ -h)
+ usage
+ exit 223
+ ;;
+ -p)
+ shift
+ prefix=$1
+ ;;
+ -s)
+ shift
+ source=$1
+ ;;
+ *)
+ terminate "invalid option (try -h): $1"
+ ;;
+ esac
+ shift
+done
+
+#
+# dirdepth: find the depth of a directory
+#
+# $1 : path
+#
+dirdepth()
+{
+ local depth=0
+ local p=$1
+ p=$(echo $p | sed -e "s/^\///g")
+ p=$(echo $p | sed -e "s/\/$//g")
+ while [ $p != . ];
+ do
+ depth=$(expr $depth + 1)
+ p=$(dirname $p)
+ done
+ echo $depth
+}
+
+#
+# build_package()
+#
+# $1 : package
+# $2 : package source
+# $3 : tar options
+# $4 : patch list
+#
+build_package()
+{
+ local mydir=$(pwd)
+
+ if [ ! -f $source/$2 ]; then
+ terminate "$1 source is not present or not a file: $2"
+ fi
+
+ for p in $4
+ do
+ if [ ! -f $source/$p ]; then
+ terminate "$1 patch is not present or not a file: $p"
+ fi
+ done
+
+ echo "cd $build"
+ cd $build
+ check "changing to $build directory"
+
+ echo "tar $3 $source/$2"
+ tar $3 $source/$2
+ check "extraction of source: $2"
+
+ echo "cd $build/$1"
+ cd $build/$1
+ check "changing to $build/$1 directory"
+
+ for p in $4
+ do
+ echo "patch -p0 < $source/$p"
+ patch -p0 < $source/$p
+ check "patching $autoconf with $p"
+ done
+
+ echo "cd $build"
+ cd $build
+ check "changing to $build directory"
+
+ echo "rm -rf mingw32-$1"
+ rm -rf mingw32-$1
+ check "removing mingw32-$1 build directory"
+
+ echo "mkdir mingw32-$1"
+ mkdir mingw32-$1
+ check "creating mingw32-$1"
+
+ echo "cd $build/mingw32-$1"
+ cd $build/mingw32-$1
+ check "changing to $build/mingw32-$1"
+
+ echo "$build/$1/configure --prefix=$prefix"
+ $build/$1/configure --prefix=$prefix
+ check "configuring $1"
+
+ echo "make"
+ make
+ check "building $1"
+
+ echo "make DESTDIR=$build/install-$1 install"
+ make DESTDIR=$build/install-$1 install
+ check "installing to $build/install-$1"
+
+ echo find $build/install-$1$prefix -type f
+ local files=$(find $build/install-$1$prefix -type f)
+ check "reading $1 file list"
+
+ of=$prefix/Uninstall/$1-files
+ echo "b install-$1$prefix" | sed -e "s/\//\\\\/g" >> $of
+
+ re_path=$(echo $build/install-$1$prefix/ | sed -e 's/\//\\\//g' -e 's/\./\\\./g')
+
+ dirs=
+ for f in $files
+ do
+ if [ $(basename $f) = dir ]; then
+ continue
+ fi
+ f=$(echo $f | sed -e "s/$re_path//g")
+ found=no
+ fd=$(dirname $f)
+ for d in $dirs
+ do
+ if [ $d = $fd ]; then
+ found=yes
+ break;
+ fi
+ done
+ if [ $found = no ]; then
+ echo "d $fd" | sed -e "s/\//\\\\/g" >> $of
+ dirs="$fd $dirs"
+ fi
+ echo "f $f" | sed -e "s/\//\\\\/g" >> $of
+ done
+
+ for d in $dirs
+ do
+ while [ $d != . ]
+ do
+ found=no
+ for rd in $dirs
+ do
+ if [ "$d" = "$rd" ]; then
+ found=yes
+ break
+ fi
+ done
+ if [ $found = no ]; then
+ dirs="$dirs $d"
+ fi
+ d=$(dirname $d)
+ done
+ done
+
+ sorted_dirs=
+ for d in $dirs
+ do
+ depth=$(dirdepth $d)
+ nsp=
+ for sd in $sorted_dirs
+ do
+ if [ ! -z "$d" ]; then
+ spd=$(dirdepth $sd)
+ if [ $depth -ge $spd ]; then
+ sd="$d $sd"
+ d=
+ fi
+ fi
+ nsp="$nsp $sd"
+ done
+ if [ ! -z "$d" ]; then
+ nsp="$nsp $d"
+ fi
+ sorted_dirs=$nsp
+ done
+
+ for d in $sorted_dirs
+ do
+ echo "D $d" | sed -e "s/\//\\\\/g" >> $of
+ done
+
+ echo "cd $mydir"
+ cd $mydir
+ check "changing to $mydir"
+}
+
+munch_path()
+{
+ local p=$1
+ if [ $(echo $p | sed -e "s/[a-zA-Z]:.*/yes/g") = yes ]; then
+ p=$(echo $p | sed -e "s/^[a-zA-Z]:/\/\0/g" -e "s/://g")
+ fi
+ echo $p
+}
+
+if [ $build = none ]; then
+ terminate "no build specified (try -h)"
+fi
+
+if [ $prefix = none ]; then
+ terminate "no prefix specified (try -h)"
+fi
+
+source=$(munch_path $source)
+build=$(munch_path $build)
+prefix=$(munch_path $prefix)
+config=$(munch_path $config)
+
+if [ ! -d $build ]; then
+ terminate "build path is not a directory or does not exist: $build"
+fi
+
+if [ ! -d $prefix ]; then
+ terminate "prefix path is not a directory or does not exist: $prefix"
+fi
+
+if [ ! -f $config ]; then
+ terminate "could find package configuration file: $config"
+fi
+
+. $config
+
+# Need to handle paths carefully as a problem seems to exist
+# with autoconf when it is in the path.
+if [ $(echo $package_name | sed -e "s/autoconf-.*/yes/g") != yes ]; then
+ export PATH=$prefix/bin:$PATH
+fi
+
+build_package $package_name \
+ $package_source \
+ $package_taropts \
+ "$package_patches"
+
+exit $?
diff --git a/contrib/mingw/build-exes.sh b/contrib/mingw/build-exes.sh
index 7c8fd398c3..cfda043e34 100755
--- a/contrib/mingw/build-exes.sh
+++ b/contrib/mingw/build-exes.sh
@@ -4,10 +4,12 @@
#
# RTEMS Build Executable Installers script.
#
-# This script takes the RPM files built using the crossrpms/build-rpms.sh
+# This script takes the RPM files built using the mingw/build-rpms.sh
# script.
#
+echo $*
+
source=$(dirname $0)
terminate()
@@ -23,20 +25,26 @@ check()
fi
}
-version=4.7
-tool_build=3
+. $source/version
target_list=$(cat $source/targets)
+. $source/target-section-text
+
mingw32_cpu_list="i686"
rpm_topdir=$(rpm --eval "%{_topdir}")
+rtems_url="http://www.rtems.org/ftp/pub/rtems/windows/${version}/build-${tool_build}"
+
common_label="common"
local_rpm_database=yes
targets=$target_list
run_prefix=
relocation=
+rpm_install=yes
+
+package_source=$(cat $HOME/.rpmmacros | grep "^%_topdir" | sed -e "s/^.* //g")/SOURCES
if [ "$source" = "." ]; then
source=$(pwd)
@@ -48,6 +56,9 @@ do
-d)
set -x
;;
+ -i)
+ rpm_install=no
+ ;;
-l)
shift
rpm_prefix=$1-
@@ -105,6 +116,12 @@ else
rpm_database=
fi
+#
+# Get the RPM list given the architecture and the package.
+#
+# $1 - architecture
+# $2 - package
+#
get_rpm_list()
{
if [ -d $rpm_topdir/mingw32/RPMS/$1 ]; then
@@ -113,38 +130,51 @@ get_rpm_list()
}
#
-# Handle each type of host processor.
+# Create the installer given the architecture and package.
#
-for p in $mingw32_cpu_list
-do
- common_rpms="$(get_rpm_list noarch auto) $(get_rpm_list $p $common_label)"
- check "getting the autotools and common RPM list"
+# $1 - architecture/processor
+# $2 - package
+# $3 - package name
+create_installer()
+{
+ local p=$1
+ local t=$2
+ local n=$3
- rpm_options="--ignoreos --force --nodeps --noorder "
+ rpm_options="--ignoreos --force --nodeps --noorder "
- for t in $targets
- do
rpms=$(get_rpm_list $p $t)
- check "getting the RPM list"
- if [ -n "$rpms" ]; then
- echo "Clean the relocation directory"
- $rm -rf $relocation
- check "removing the relocation directory: $relocation"
-
- for r in $common_rpms $rpms
- do
- echo "rpm $rpm_database --relocate $prefix=$relocation $rpm_options -i $r"
- $rpm $rpm_database --relocate $prefix=$relocation $rpm_options -i $r
- check "installing rpm: $r"
- done
-
- files=$(find $relocation -type f | sed -e "s/^$(echo ${relocation} | sed 's/\//\\\//g')//" -e "s/^\///" | sort)
-
- echo "$files" > $relocation/files.txt
+ check "getting the $n RPM list"
+ if [ -n "$rpms" ]; then
+ treloc=$relocation/$n
+ echo "Relocation path: $treloc"
+
+ if [ $rpm_install = yes ]; then
+ echo "Clean the relocation directory: $treloc"
+ $rm -rf $treloc
+ check "removing the relocation directory: $treloc"
+
+ for r in $rpms
+ do
+ echo "rpm $rpm_database --relocate $prefix=$treloc $rpm_options -i $r"
+ $rpm $rpm_database --relocate $prefix=$treloc $rpm_options -i $r
+ check "installing rpm: $r"
+ done
+ fi
+
+ files=$(find $treloc -type f -a -not \( -name \*.gch \
+ -o -name rtems.nsi \
+ -o -name rtems-files.nsi \
+ -o -name rtems.ini \
+ -o -name files.txt \) | \
+ sed -e "s/^$(echo ${treloc} | sed 's/\//\\\//g')//" -e "s/^\///" | sort)
check "find the file list"
- of=$relocation/rtems-files.nsi
+ echo "$files" > $treloc/files.txt
+ check "write the file list"
+
+ of=$treloc/rtems-files.nsi
echo "!macro RTEMS_INSTALL_FILES" > $of
echo " !ifndef EMPTY_INSTALLER" >> $of
@@ -159,7 +189,7 @@ do
echo " SetOutPath \"\$INSTDIR\\$id\"" >> $of
install_dir=$d
fi
- echo " File \"$relocation/$f\"" >> $of
+ echo " File \"$treloc/$f\"" >> $of
done
echo " !endif" >> $of
@@ -168,20 +198,54 @@ do
echo "!macro RTEMS_DELETE_FILES" >> $of
echo " !ifndef EMPTY_INSTALLER" >> $of
+ #
+ # Get a list of directories so we can delete them once all
+ # the files have been deleted. We need to be selective as
+ # the directory maybe used by another installer.
+ #
+ # Once we get a list we need to also add the path down
+ # to that node and then sort them so we work from bottom up.
+ #
+
remove_dirs=
- remove_dir=
for f in $files
do
d=$(dirname $f)
- if [ "$remove_dir" != "$d" ]; then
+ found=no
+ for rd in $remove_dirs
+ do
+ if [ "$d" = "$rd" ]; then
+ found=yes
+ break;
+ fi
+ done
+ if [ $found = no ]; then
remove_dirs="$remove_dirs $d"
- remove_dir=$d
fi
rf=$(echo $f | sed -e 's/\//\\/g' -e 's/\/$//')
echo " Delete \"\$INSTDIR\\$rf\"" >> $of
done
+ for d in $remove_dirs
+ do
+ while [ $d != . ]
+ do
+ found=no
+ for rd in $remove_dirs
+ do
+ if [ "$d" = "$rd" ]; then
+ found=yes
+ break
+ fi
+ done
+ if [ $found = no ]; then
+ remove_dirs="$remove_dirs $d"
+ fi
+ d=$(dirname $d)
+ done
+ done
+
remove_dirs=$(for r in $remove_dirs; do echo $r; done | sort -r -u)
for d in $remove_dirs
@@ -201,28 +265,200 @@ do
$mkdir -p $rtems_binary
check "make the RTEMS binary install point: $rtems_binary"
- of=$relocation/rtems.nsi
- echo "!define RTEMS_TARGET \"$t\"" > $of
+ outfile=rtems$version-tools-$n-$tool_build.exe
+
+ of=$treloc/rtems.nsi
+ echo "!define RTEMS_TARGET \"$n\"" > $of
echo "!define RTEMS_VERSION \"$version\"" >> $of
echo "!define RTEMS_BUILD_VERSION \"$tool_build\"" >> $of
echo "!define RTEMS_PREFIX \"rtems-tools\"" >> $of
echo "!define RTEMS_SOURCE \"$source\"" >> $of
- echo "!define RTEMS_RELOCATION \"$relocation\"" >> $of
+ echo "!define RTEMS_RELOCATION \"$treloc\"" >> $of
echo "!define RTEMS_LOGO \"$source/rtems_logo.bmp\"" >> $of
echo "!define RTEMS_BINARY \"$rtems_binary\"" >> $of
echo "!define RTEMS_LICENSE_FILE \"$source/rtems-license.rtf\"" >> $of
+ echo "!define RTEMS_OUTFILE \"$outfile\"" >> $of
echo "!define TOOL_PREFIX \"$prefix\"" >> $of
- echo "!include \"$relocation/rtems-files.nsi\"" >> $of
+
+ if [ $n = $common_label ]; then
+ echo "!define COMMON_FILES" >> $of
+ fi
+
+ echo "!include \"$treloc/rtems-files.nsi\"" >> $of
echo "!include \"$source/rtems-tools.nsi\"" >> $of
- echo "cp $source/rtems.ini $relocation/rtems.ini"
- $cp $source/rtems.ini $relocation/rtems.ini
- check "coping the dialog definition file: $relocation/rtems.ini"
+ if [ $n = $common_label ]; then
+ echo "!include \"$relocation/rtems-sections.nsi\"" >> $of
+ fi
+
+ echo "cp $source/rtems.ini $treloc/rtems.ini"
+ $cp $source/rtems.ini $treloc/rtems.ini
+ check "coping the dialog definition file: $treloc/rtems.ini"
echo "makensis $of"
$makensis $of
check "making the installer: $of"
+ if [ $n != $common_label ]; then
+ of=$relocation/rtems-sections.nsi
+ tst=${t}_section_text
+ echo "" >> $of
+ echo "; Target: $t" >> $of
+ echo "Section \"${!tst}\" Section_$t" >> $of
+ echo " StrCpy \$1 \$EXEDIR\\$outfile" >> $of
+ echo " DetailPrint \"Checking for \$1\"" >> $of
+ echo " IfFileExists \$1 ${t}_found" >> $of
+ echo " StrCpy \$1 \$INSTDIR\\Packages\\$outfile" >> $of
+ echo " DetailPrint \"Checking for \$1\"" >> $of
+ echo " IfFileExists \$1 ${t}_found" >> $of
+ echo " SetOutPath \"\$INSTDIR\\Packages\"" >> $of
+ echo " DetailPrint \"Downloading $rtems_url/$outfile\"" >> $of
+ echo " NSISdl::download $rtems_url/$outfile $outfile" >> $of
+ echo " Pop \$R0" >> $of
+ echo " StrCmp \$R0 \"success\" ${t}_found_2 ${t}_not_found_2" >> $of
+ echo " ${t}_not_found_2:" >> $of
+ echo " SetDetailsView show" >> $of
+ echo " DetailPrint \"Download failed: \$R0\"" >> $of
+ echo " MessageBox MB_OK \"Download failed: \$R0\"" >> $of
+ echo " Goto ${t}_done" >> $of
+ echo " ${t}_found_2:" >> $of
+ echo " Strcpy \$1 \"\$INSTDIR\\Packages\\$outfile\"" >> $of
+ echo " ${t}_found:" >> $of
+ echo " DetailPrint \"Installing: \$1\"" >> $of
+ echo " ExecWait '\"\$1\" /S'" >> $of
+ echo " BringToFront" >> $of
+ echo " ${t}_done:" >> $of
+ echo "SectionEnd" >> $of
+ else
+ echo "Section -SecCommon" >> $of
+ echo " SetOutPath \"\$INSTDIR"\" >> $of
+ echo " File \"\${RTEMS_SOURCE}/AUTHORS"\" >> $of
+ echo " File \"\${RTEMS_SOURCE}/COPYING\"" >> $of
+ echo " File \"\${RTEMS_SOURCE}/README\"" >> $of
+ echo "SectionEnd" >> $of
+ fi
fi
+}
+
+create_autotools_installer()
+{
+ local p=$1
+ local t=$2
+ local n=$3
+
+ treloc=$relocation/$n
+ echo "Relocation path: $treloc"
+
+ echo "Clean the relocation directory: $treloc"
+ $rm -rf $treloc
+ check "removing the relocation directory: $treloc"
+ mkdir -p $treloc
+ check "creating relocation directory: $treloc"
+
+ rtems_binary=$rpm_topdir/mingw32/exe/$p
+ echo "mkdir -p $rtems_binary"
+ $mkdir -p $rtems_binary
+ check "make the RTEMS binary install point: $rtems_binary"
+
+ outfile=rtems$version-tools-$n-$tool_build.exe
+
+ of=$treloc/rtems.nsi
+ echo "!define RTEMS_TARGET \"$n\"" > $of
+ echo "!define RTEMS_VERSION \"$version\"" >> $of
+ echo "!define RTEMS_BUILD_VERSION \"$tool_build\"" >> $of
+ echo "!define RTEMS_PREFIX \"rtems-tools\"" >> $of
+ echo "!define RTEMS_SOURCE \"$source\"" >> $of
+ echo "!define RTEMS_PACKAGE_SOURCE \"$package_source\"" >> $of
+ echo "!define RTEMS_LOGO \"$source/rtems_logo.bmp\"" >> $of
+ echo "!define RTEMS_BINARY \"$rtems_binary\"" >> $of
+ echo "!define RTEMS_LICENSE_FILE \"$source/rtems-license.rtf\"" >> $of
+ echo "!define RTEMS_OUTFILE \"$outfile\"" >> $of
+ echo "!define TOOL_PREFIX \"$prefix\"" >> $of
+
+ . $source/autoconf.def
+
+ echo "!define RTEMS_AUTOCONF \"$package_name\"" >> $of
+ echo "!define RTEMS_AUTOCONF_SOURCE \"$package_source\"" >> $of
+ echo "!macro RTEMS_AUTOCONF_PATCHES" >> $of
+ for p in $package_patches
+ do
+ echo " File \"\${RTEMS_PACKAGE_SOURCE}/$p\"" >> $of
+ done
+ echo "!macroend" >> $of
+
+ echo "!macro RTEMS_DELETE_AUTOCONF_PATCHES" >> $of
+ for p in $package_patches
+ do
+ echo " Delete \"\$INSTDIR\\Packages\\Source\\$p\"" >> $of
+ done
+ echo "!macroend" >> $of
+
+ . $source/automake.def
+
+ echo "!define RTEMS_AUTOMAKE \"$package_name\"" >> $of
+ echo "!define RTEMS_AUTOMAKE_SOURCE \"$package_source\"" >> $of
+ echo "!macro RTEMS_AUTOMAKE_PATCHES" >> $of
+ for p in $package_patches
+ do
+ echo " File \"\${RTEMS_PACKAGE_SOURCE}/$p\"" >> $of
+ done
+ echo "!macroend" >> $of
+
+ echo "!macro RTEMS_DELETE_AUTOMAKE_PATCHES" >> $of
+ for p in $package_patches
+ do
+ echo " Delete \"\$INSTDIR\\Packages\\Source\\$p\"" >> $of
+ done
+ echo "!macroend" >> $of
+
+ echo "!include \"$source/rtems-autotools.nsi\"" >> $of
+
+ echo "cp $source/rtems.ini $treloc/rtems.ini"
+ $cp $source/rtems.ini $treloc/rtems.ini
+ check "coping the dialog definition file: $treloc/rtems.ini"
+
+ echo "makensis $of"
+ $makensis $of
+ check "making the installer: $of"
+
+ of=$relocation/rtems-sections.nsi
+ tst=${t}_section_text
+ echo "" >> $of
+ echo "; Target: $t" >> $of
+ echo "Section \"${!tst}\" Section_$t" >> $of
+ echo " StrCpy \$1 \$EXEDIR\\$outfile" >> $of
+ echo " IfFileExists \$1 ${t}_found" >> $of
+ echo " SetOutPath \"\$INSTDIR\Packages\"" >> $of
+ echo " DetailPrint \"Downloading $rtems_url/$outfile\"" >> $of
+ echo " NSISdl::download $rtems_url/$outfile $outfile" >> $of
+ echo " Pop \$R0" >> $of
+ echo " StrCmp \$R0 \"success\" ${t}_found_2 ${t}_not_found_2" >> $of
+ echo " ${t}_not_found_2:" >> $of
+ echo " SetDetailsView show" >> $of
+ echo " DetailPrint \"Download failed: \$R0\"" >> $of
+ echo " MessageBox MB_OK \"Download failed: \$R0\"" >> $of
+ echo " Goto ${t}_done" >> $of
+ echo " ${t}_found_2:" >> $of
+ echo " Strcpy \$1 \"\$INSTDIR\\Packages\\$outfile\"" >> $of
+ echo " ${t}_found:" >> $of
+ echo " DetailPrint \"Installing: \$1\"" >> $of
+ echo " ExecWait '\"\$1\" /S'" >> $of
+ echo " BringToFront" >> $of
+ echo " ${t}_done:" >> $of
+ echo "SectionEnd" >> $of
+}
+
+#
+# Handle each type of host processor.
+#
+for p in $mingw32_cpu_list
+do
+ echo "; Components based on each target." > $relocation/rtems-sections.nsi
+ create_autotools_installer noarch auto autotools
+ for t in $targets
+ do
+ create_installer $p $t $t
done
+ # Must be done last
+ create_installer $p $common_label $common_label
done
diff --git a/contrib/mingw/build-rpms.sh b/contrib/mingw/build-rpms.sh
index 22e079e65d..cfd5c02d77 100755
--- a/contrib/mingw/build-rpms.sh
+++ b/contrib/mingw/build-rpms.sh
@@ -30,14 +30,14 @@ check()
processor=$(uname -p)
-version=4.7
+. $source/version
base_tool_list="binutils gcc"
target_list=$(cat $source/targets)
host_list="cygwin freebsd5.2 freebsd6.0 freebsd6.1 mingw32"
-rtems_tool_list="autoconf automake $base_tool_list"
+rtems_tool_list="autoconf automake $base_tool_list gdb"
linux_tool_list="autoconf automake $base_tool_list"
cygwin_tool_list="w32api libs autoconf automake $base_tool_list"
freebsd_tool_list="libs autoconf automake $base_tool_list"
@@ -323,7 +323,7 @@ do
case $s in
autoconf|automake)
# Hack around the prefix in the spec files for autotools.
- ba="-ba $prefix/autotools/$rpm_prefix$s-rtems.spec"
+ ba="-ba $prefix/autotools/$rpm_prefix$s.spec"
;;
*)
ba="-ba $prefix/$sd/$p/$rpm_prefix$pth-$s.spec"
@@ -350,7 +350,7 @@ do
case $s in
autoconf|automake)
# Hack around the prefix in the spec files for autotools.
- ba="-ba $prefix/autotools/$rpm_prefix$s-rtems.spec"
+ ba="-ba $prefix/autotools/$rpm_prefix$s.spec"
;;
*)
ba="-ba $prefix/rtems$version/$t/$rpm_prefix$t-rtems$version-$s.spec"
diff --git a/contrib/mingw/msys-path.nsi b/contrib/mingw/msys-path.nsi
new file mode 100644
index 0000000000..3697ce3ac7
--- /dev/null
+++ b/contrib/mingw/msys-path.nsi
@@ -0,0 +1,109 @@
+Function MsysPath
+ Push $R0
+ ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MSYS-1.0_is1" "Inno Setup: App Path"
+ Exch $R0
+FunctionEnd
+
+Function MsysDTKPath
+ Push $R0
+ ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\MSYS-DTK_is1" "Inno Setup: App Path"
+ Exch $R0
+FunctionEnd
+
+Function MSYSCheckExes
+ Exch $R0
+ DetailPrint "Checking for MSYS $R0\bin\sh.exe."
+ IfFileExists "$R0\bin\sh.exe" +5 0
+ DetailPrint "Could not find $R0\bin\sh.exe."
+ StrCpy $R0 "$R0\bin\sh.exe"
+ Exch $R0
+ Return
+ DetailPrint "Checking for MSYS $R0\bin\m4.exe."
+ IfFileExists "$R0\bin\m4.exe" +5 0
+ DetailPrint "Could not find $R0\bin\m4.exe."
+ StrCpy $R0 "$R0\bin\m4.exe"
+ Exch $R0
+ Return
+ DetailPrint "Checking for MSYS $R0\bin\perl.exe."
+ IfFileExists "$R0\bin\perl.exe" +5 0
+ DetailPrint "Could not find $R0\bin\perl.exe."
+ StrCpy $R0 "$R0\bin\perl.exe"
+ Exch $R0
+ Return
+ StrCpy $R0 "ok"
+ Exch $R0
+FunctionEnd
+
+Function MSYSDetect
+ Push $R0
+ Push $R1
+ StrCpy $R1 "c:\msys\1.0"
+ DetailPrint "Checking MSYS default install path: $R1"
+ Push $R1
+ Call MSYSCheckExes
+ Pop $R0
+ StrCmp $R0 "ok" Found
+ DetailPrint "Checking Registry for MSYS Installed Path"
+ Call MsysPath
+ Pop $R0
+ ifErrors 0 +3
+ MessageBox MB_OK "MSYS Not Installed. Please install MSYS."
+ Abort
+ DetailPrint "Checking Registry for MSYS DTK Installed Path"
+ Call MsysDTKPath
+ Pop $R1
+ ifErrors 0 +3
+ MessageBox MB_OK "MSYS DTK Not Installed. Please install MSYS DTK."
+ Abort
+ StrCmp $R0 $R1 +3 0
+ MessageBox MB_OK "MSYS and MSYS DTK installed to different paths. This is not supported."
+ Abort
+ Push $R0
+ Call MSYSCheckExes
+ Pop $R0
+ StrCmp $R0 "ok" Found
+ MessageBox MB_OK "MSYS Executable '$R0' not found. Please install."
+ Abort
+ Found:
+ StrCpy $R0 $R1
+ DetailPrint "MSYS Found: $R0"
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+Function MSYSDetectSilent
+ Push $R0
+ Push $R1
+ StrCpy $R1 "c:\msys\1.0"
+ DetailPrint "Checking MSYS default install path: $R1"
+ Push $R1
+ Call MSYSCheckExes
+ Pop $R0
+ StrCmp $R0 "ok" Done
+ DetailPrint "Checking Registry for MSYS Installed Path"
+ Call MsysPath
+ Pop $R0
+ ifErrors 0 +3
+ StrCpy $R1 "not-found"
+ Goto Done
+ DetailPrint "Checking Registry for MSYS DTK Installed Path"
+ Call MsysDTKPath
+ Pop $R1
+ ifErrors 0 +3
+ StrCpy $R1 "not-found"
+ Goto Done
+ StrCmp $R0 $R1 +3 0
+ StrCpy $R1 "not-found"
+ Goto Done
+ Push $R0
+ Call MSYSCheckExes
+ Pop $R0
+ StrCmp $R0 "ok" Done
+ StrCpy $R1 "not-found"
+ Goto Done
+ Done:
+ StrCpy $R0 $R1
+ DetailPrint "MSYS Result: $R0"
+ Pop $R1
+ Exch $R0
+FunctionEnd
diff --git a/contrib/mingw/rtems-autotools.nsi b/contrib/mingw/rtems-autotools.nsi
new file mode 100644
index 0000000000..e426a913eb
--- /dev/null
+++ b/contrib/mingw/rtems-autotools.nsi
@@ -0,0 +1,391 @@
+;
+; $Id$
+;
+; RTEMS Autotools Installer.
+;
+; Copyright Chris Johns (chrisj@rtems.org)
+;
+
+;!define EMPTY_INSTALLER
+
+!define PRODUCT_NAME "RTEMS Autotools"
+!define PRODUCT_VERSION ${RTEMS_VERSION}
+!define PRODUCT_PUBLISHER "RTEM Project Team"
+!define PRODUCT_WEB_SITE "http://www.rtems.org/"
+
+; MUI 1.66 compatible ------
+!include "MUI.nsh"
+
+; MUI Settings
+!define MUI_ABORTWARNING
+!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\win-install.ico"
+!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\win-uninstall.ico"
+
+!define MUI_HEADERIMAGE
+!define MUI_HEADERIMAGE_BITMAP "${RTEMS_LOGO}"
+
+!define MUI_COMPONENTSPAGE_SMALLDESC
+
+; Welcome page
+!insertmacro MUI_PAGE_WELCOME
+; Details of what will happen.
+Page custom RTEMSMessage
+; License page
+;!define MUI_LICENSEPAGE_CHECKBOX
+!insertmacro MUI_PAGE_LICENSE "${RTEMS_LICENSE_FILE}"
+; Components page
+!insertmacro MUI_PAGE_COMPONENTS
+; Directory page
+!insertmacro MUI_PAGE_DIRECTORY
+; Instfiles page
+!insertmacro MUI_PAGE_INSTFILES
+; Finish page
+!insertmacro MUI_PAGE_FINISH
+
+; Uninstaller pages
+!insertmacro MUI_UNPAGE_INSTFILES
+
+; Language files
+!insertmacro MUI_LANGUAGE "English"
+
+; Reserve files
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+; MUI end ------
+
+ReserveFile "rtems.ini"
+!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
+
+Name "${PRODUCT_NAME} ${PRODUCT_VERSION} (${RTEMS_TARGET})"
+OutFile "${RTEMS_BINARY}/rtems${PRODUCT_VERSION}-tools-${RTEMS_TARGET}-${RTEMS_BUILD_VERSION}.exe"
+InstallDir "C:\opt\rtems-${PRODUCT_VERSION}"
+ShowInstDetails show
+ShowUnInstDetails show
+BrandingText "RTEMS ${RTEMS_TARGET} Tools v${PRODUCT_VERSION}"
+AllowRootDirInstall false
+AutoCloseWindow false
+CRCCheck force
+
+!include "${RTEMS_SOURCE}/msys-path.nsi"
+
+Section "RTEMS ${RTEMS_TARGET} Tools" SecTools
+ SetDetailsView show
+
+ /*
+ * Detect if MSYS is installed.
+ */
+ Call MSYSDetect
+ Pop $9
+
+ SetOutPath "$INSTDIR\Uninstall"
+ SetOutPath "$INSTDIR\Packages\Build"
+ SetOutPath "$INSTDIR\Packages\Build"
+ SetOutPath "$INSTDIR\Packages\Source"
+ File "${RTEMS_SOURCE}/build-autotools.sh"
+ File "${RTEMS_SOURCE}/ba-wrap.sh"
+ File "${RTEMS_PACKAGE_SOURCE}/${RTEMS_AUTOCONF_SOURCE}"
+ File "${RTEMS_SOURCE}/autoconf.def"
+ File "${RTEMS_SOURCE}/automake.def"
+ !insertmacro RTEMS_AUTOCONF_PATCHES
+ File "${RTEMS_PACKAGE_SOURCE}/${RTEMS_AUTOMAKE_SOURCE}"
+ !insertmacro RTEMS_AUTOMAKE_PATCHES
+
+ Delete "$INSTDIR\Packages\Source\at-log.txt"
+
+ /*
+ * Need to fix the slashes when using a Unix type shell.
+ */
+ Push "$INSTDIR\Packages\Source\ba-wrap.sh"
+ Push '\\'
+ Pop $R0
+ Call StrSlash
+ Pop $R1
+ Push "$INSTDIR\Packages\Build"
+ Push '\\'
+ Pop $R0
+ Call StrSlash
+ Pop $R2
+
+ /*
+ * Build Autoconf.
+ */
+ Push "$INSTDIR\Packages\Source\autoconf.def"
+ Push '\\'
+ Pop $R0
+ Call StrSlash
+ Pop $R0
+ DetailPrint "Building autoconf. Command window closes automatically."
+ ExecWait '"$9\bin\sh" --login -c "$R1 -p /opt/rtems-${PRODUCT_VERSION} -b $R2 -c $R0"' $0
+ BringToFront
+ IntCmp $0 0 +3
+ MessageBox MB_OK "Autoconf build failed. See $INSTDIR\Packages\Source\at-log.txt"
+ Abort
+
+ BringToFront
+
+ Push "$INSTDIR\Uninstall\${RTEMS_AUTOCONF}-files"
+ call InstallFilesFromFile
+
+ /*
+ * Build Automake.
+ */
+ Push "$INSTDIR\Packages\Source\automake.def"
+ Push '\\'
+ Pop $R0
+ Call StrSlash
+ Pop $R0
+ DetailPrint "Building automake. Command window closes automatically."
+ ExecWait '"$9\bin\sh" --login -c "$R1 -p /opt/rtems-${PRODUCT_VERSION} -b $R2 -c $R0"' $0
+ BringToFront
+ IntCmp $0 0 +3
+ MessageBox MB_OK "Automake build failed. See $INSTDIR\Packages\Source\at-log.txt"
+ Abort
+
+ BringToFront
+
+ Push "$INSTDIR\Uninstall\${RTEMS_AUTOMAKE}-files"
+ call InstallFilesFromFile
+
+ DetailPrint "Removing Build directory"
+ RMDir /r "$INSTDIR\Packages\Build"
+SectionEnd
+
+!macro FILE_WRITE_LINE Handle Text
+ FileWrite ${Handle} `${Text}`
+ FileWriteByte ${Handle} "13"
+ FileWriteByte ${Handle} "10"
+!macroend
+
+Function .onInit
+ ;Extract InstallOptions INI files
+ !insertmacro MUI_INSTALLOPTIONS_EXTRACT "rtems.ini"
+FunctionEnd
+
+Function RTEMSMessage
+
+ !insertmacro MUI_HEADER_TEXT \
+ "RTEMS Tools (Autoconf/Automake)" \
+ "A tool set for the RTEMS operating system."
+
+ ;Display the Install Options dialog
+
+ Push $R0
+ Push $R1
+ Push $R2
+
+ InstallOptions::initDialog /NOUNLOAD "$PLUGINSDIR\rtems.ini"
+ Pop $R0
+
+ GetDlgItem $R1 $R0 1200 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1201 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "12" "700"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1202 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1203 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1204 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1205 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ GetDlgItem $R1 $R0 1206 ;1200 + Field number - 1
+ ;$R1 contains the HWND of the first field
+ CreateFont $R2 "Tahoma" "8" "300"
+ SendMessage $R1 ${WM_SETFONT} $R2 0
+
+ InstallOptions::show
+ Pop $R0
+
+ Pop $R2
+ Pop $R1
+ Pop $R0
+
+FunctionEnd
+
+Var FileList
+
+Function InstallFilesFromFile
+ Pop $R6
+ Push $R7
+ Push $R8
+ Push $R9
+ DetailPrint "Installing file list: $R6"
+ SetFileAttributes "$R6" NORMAL
+ FileOpen $FileList "$R6" r
+ IfErrors 0 +3
+ MessageBox MB_OK "Internal error reading file list (0:$R6)."
+ Abort
+ ReadLoop:
+ FileRead $FileList $R7
+ IfErrors Done
+ StrCpy $R7 $R7 -1 # has a \n only at the end
+ StrCpy $R8 $R7
+ StrCpy $R7 $R7 1 # first character on the line
+ StrCpy $R8 $R8 256 2
+ StrCmpS $R7 "D" ReadLoop
+ StrCmpS $R7 "b" 0 +3
+ StrCpy $R9 $R8
+ Goto ReadLoop
+ StrCmpS $R7 "d" 0 +3
+ CreateDirectory "$INSTDIR\$R8"
+ Goto ReadLoop
+ StrCmpS $R7 "f" 0 +3
+ CopyFiles /SILENT "$INSTDIR\Packages\Build\$R9\$R8" "$INSTDIR\$R8"
+ Goto ReadLoop
+ MessageBox MB_OK "Internal error installing package (2:$R6)."
+ Abort
+ Done:
+ FileClose $FileList
+ ClearErrors
+ Pop $R9
+ Pop $R8
+ Pop $R7
+FunctionEnd
+
+Function un.RemoveFilesFromFile
+ ; Two passes, one to delete files then the directories
+ ; This is due to the order in the *-files list. Plus
+ ; RMDir seems to stuff things up (maybe a NSIS bug!)
+ Pop $R6
+ Push $R7
+ Push $R8
+ Push $R9
+ DetailPrint "Delete file list: $R6"
+ SetFileAttributes "$R6" NORMAL
+ FileOpen $FileList "$R6" r
+ IfErrors 0 +3
+ MessageBox MB_OK "Internal error reading file list (0:$R6)."
+ Abort
+ ReadLoop:
+ FileRead $FileList $R7
+ IfErrors Pass2
+ StrCpy $R7 $R7 -1 # has a \n only at the end
+ StrCpy $R8 $R7
+ StrCpy $R7 $R7 1 # first character on the line
+ StrCpy $R8 $R8 256 2
+ StrCmp $R7 "b" ReadLoop
+ StrCmp $R7 "d" ReadLoop
+ StrCmp $R7 "D" ReadLoop
+ StrCmp $R7 "f" 0 +3
+ Delete "$INSTDIR\$R8"
+ Goto ReadLoop
+ MessageBox MB_OK "Internal error removing package (2:$R6)."
+ Abort
+ Pass2:
+ ClearErrors
+ FileSeek $FileList 0 SET
+ ReadLoop2:
+ FileRead $FileList $R7
+ IfErrors Done
+ StrCpy $R7 $R7 -1 # has a \n only at the end
+ StrCpy $R8 $R7
+ StrCpy $R7 $R7 1 # first character on the line
+ StrCpy $R8 $R8 256 2
+ StrCmpS $R7 "b" ReadLoop2
+ StrCmpS $R7 "d" ReadLoop2
+ StrCmpS $R7 "f" ReadLoop2
+ StrCmpS $R7 "D" 0 Fail
+ ifFileExists "$INSTDIR\$R8\*.*" 0 ReadLoop2
+ RMDir "$INSTDIR\$R8" #is dir
+ Delete "$INSTDIR\$R8"
+ ClearErrors
+ Goto ReadLoop2
+ Fail:
+ MessageBox MB_OK "Internal error removing package (2:$R6)."
+ Abort
+ Done:
+ FileClose $FileList
+ ClearErrors
+ Delete $R6
+ Pop $R9
+ Pop $R8
+ Pop $R7
+FunctionEnd
+
+; Push $filenamestring (e.g. 'c:\this\and\that\filename.htm')
+; Push '\\'
+; Pop $R0
+; Call StrSlash
+; Pop $R0
+; ;Now $R0 contains 'c:/this/and/that/filename.htm'
+Function StrSlash
+ Exch $R0
+ Push $R1
+ Push $R2
+ StrCpy $R1 0
+loop:
+ IntOp $R1 $R1 - 1
+ StrCpy $R2 $R0 1 $R1
+ StrCmp $R2 "" done
+ StrCmp $R2 "\" 0 loop ;" keep to get Emacs for fontlock
+ StrCpy $R2 $R0 $R1
+ Push $R1
+ IntOp $R1 $R1 + 1
+ StrCpy $R1 $R0 "" $R1
+ StrCpy $R0 "$R2/$R1"
+ Pop $R1
+ IntOp $R1 $R1 - 1
+ Goto loop
+done:
+ Pop $R2
+ Pop $R1
+ Exch $R0
+FunctionEnd
+
+Section -Post
+ WriteUninstaller "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-${RTEMS_TARGET}-uninst.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
+ "DisplayName" "$(^Name)"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
+ "UninstallString" "$INSTDIR\uninst.exe"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
+ "DisplayVersion" "${PRODUCT_VERSION}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
+ "URLInfoAbout" "${PRODUCT_WEB_SITE}"
+ WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
+ "Publisher" "${PRODUCT_PUBLISHER}"
+SectionEnd
+
+Section Uninstall
+ SetDetailsView show
+ DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
+ DetailPrint "Delete the installed files"
+ Push "$INSTDIR\Uninstall\${RTEMS_AUTOCONF}-files"
+ call un.RemoveFilesFromFile
+ Push "$INSTDIR\Uninstall\${RTEMS_AUTOMAKE}-files"
+ call un.RemoveFilesFromFile
+ RMDir "$INSTDIR\Uninstall"
+ Delete "$INSTDIR\Packages\Source\build-autotools.sh"
+ Delete "$INSTDIR\Packages\Source\ba-wrap.sh"
+ Delete "$INSTDIR\Packages\Source\${RTEMS_AUTOCONF_SOURCE}"
+ Delete "$INSTDIR\Packages\Source\${RTEMS_AUTOMAKE_SOURCE}"
+ Delete "$INSTDIR\Packages\Source\autoconf.def"
+ Delete "$INSTDIR\Packages\Source\automake.def"
+ Delete "$INSTDIR\Packages\Source\at-log.txt"
+ !insertmacro RTEMS_DELETE_AUTOCONF_PATCHES
+ !insertmacro RTEMS_DELETE_AUTOMAKE_PATCHES
+ RMDir "$INSTDIR\Packages\Source"
+ RMDir "$INSTDIR\Packages\Build"
+ Delete $INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-${RTEMS_TARGET}-uninst.exe
+ RMDir "$INSTDIR"
+ DetailPrint "All done."
+ SetAutoClose false
+SectionEnd
diff --git a/contrib/mingw/rtems-tools.nsi b/contrib/mingw/rtems-tools.nsi
index 3558a3b380..e9115cac7f 100644
--- a/contrib/mingw/rtems-tools.nsi
+++ b/contrib/mingw/rtems-tools.nsi
@@ -10,7 +10,7 @@
!define PRODUCT_NAME "RTEMS Tools"
!define PRODUCT_VERSION ${RTEMS_VERSION}
-!define PRODUCT_PUBLISHER "RTEM Project Team"
+!define PRODUCT_PUBLISHER "RTEMS Project Team"
!define PRODUCT_WEB_SITE "http://www.rtems.org/"
; MUI 1.66 compatible ------
@@ -57,8 +57,12 @@ ReserveFile "rtems.ini"
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
Name "${PRODUCT_NAME} ${PRODUCT_VERSION} (${RTEMS_TARGET})"
-OutFile "${RTEMS_BINARY}/rtems${PRODUCT_VERSION}-${RTEMS_TARGET}-${RTEMS_BUILD_VERSION}.exe"
-InstallDir "C:\rtems\${RTEMS_TARGET}"
+!ifdef COMMON_FILES
+OutFile "${RTEMS_BINARY}/rtems${PRODUCT_VERSION}-tools-${RTEMS_BUILD_VERSION}.exe"
+!else
+OutFile "${RTEMS_BINARY}/${RTEMS_OUTFILE}"
+!endif
+InstallDir "C:\opt\rtems-${PRODUCT_VERSION}"
ShowInstDetails show
ShowUnInstDetails show
BrandingText "RTEMS ${RTEMS_TARGET} Tools v${PRODUCT_VERSION}"
@@ -66,13 +70,20 @@ AllowRootDirInstall false
AutoCloseWindow false
CRCCheck force
-Section "RTEMS ${RTEMS_TARGET} Tools" SecTools
+!include "${RTEMS_SOURCE}/msys-path.nsi"
+
+Section -SecFiles
+ !insertmacro RTEMS_INSTALL_FILES
+SectionEnd
+
+!ifdef COMMON_FILES
+Section -SecCommon
SetOutPath "$INSTDIR"
File "${RTEMS_SOURCE}/AUTHORS"
File "${RTEMS_SOURCE}/COPYING"
File "${RTEMS_SOURCE}/README"
- !insertmacro RTEMS_INSTALL_FILES
SectionEnd
+!endif
!macro FILE_WRITE_LINE Handle Text
FileWrite ${Handle} `${Text}`
@@ -159,7 +170,7 @@ loop:
IntOp $R1 $R1 - 1
StrCpy $R2 $R0 1 $R1
StrCmp $R2 "" done
- StrCmp $R2 "\" 0 loop
+ StrCmp $R2 "\" 0 loop ; "
StrCpy $R2 $R0 $R1
Push $R1
IntOp $R1 $R1 + 1
@@ -174,23 +185,24 @@ done:
Exch $R0
FunctionEnd
+!ifdef COMMON_FILES
Section -BatchFiles
FileOpen $9 $INSTDIR\rtems.bat w
!insertmacro FILE_WRITE_LINE $9 "@echo off"
- !insertmacro FILE_WRITE_LINE $9 "rem RTEMS batch file: ${RTEMS_TARGET} (${RTEMS_VERSION})"
+ !insertmacro FILE_WRITE_LINE $9 "rem RTEMS batch file: ${RTEMS_VERSION}-${RTEMS_BUILD_VERSION}"
!insertmacro FILE_WRITE_LINE $9 "set PATH=$INSTDIR\bin;c:\mingw\bin;c:\msys\1.0\bin;%PATH%"
- !insertmacro FILE_WRITE_LINE $9 "set PROMPT=RTEMS(${RTEMS_TARGET}) $$P$$G"
+ !insertmacro FILE_WRITE_LINE $9 "set PROMPT=RTEMS $$P$$G"
!insertmacro FILE_WRITE_LINE $9 "If $\"x%OS%x$\" == $\"xWindows_NTx$\" Goto WinNT_Title"
!insertmacro FILE_WRITE_LINE $9 "doskey > Nul"
!insertmacro FILE_WRITE_LINE $9 "goto Finished"
!insertmacro FILE_WRITE_LINE $9 ":WinNT_Title"
- !insertmacro FILE_WRITE_LINE $9 "Title RTEMS(${RTEMS_TARGET})"
+ !insertmacro FILE_WRITE_LINE $9 "Title RTEMS ${RTEMS_VERSION}-${RTEMS_BUILD_VERSION}"
!insertmacro FILE_WRITE_LINE $9 ":Finished"
FileClose $9
FileOpen $9 $INSTDIR\rtems-cmd.bat w
!insertmacro FILE_WRITE_LINE $9 "@echo off"
- !insertmacro FILE_WRITE_LINE $9 "rem RTEMS batch file: ${RTEMS_TARGET} (${RTEMS_VERSION})"
+ !insertmacro FILE_WRITE_LINE $9 "rem RTEMS batch file: ${RTEMS_VERSION}-${RTEMS_BUILD_VERSION}"
!insertmacro FILE_WRITE_LINE $9 "If $\"x%OS%x$\" == $\"xWindows_NTx$\" Goto WinNT"
!insertmacro FILE_WRITE_LINE $9 "start command.com /e:4096 /k $INSTDIR\rtems.bat %1 %2 %3 %4"
!insertmacro FILE_WRITE_LINE $9 "exit"
@@ -201,6 +213,7 @@ Section -BatchFiles
FileOpen $9 $INSTDIR\sh-run.bat w
!insertmacro FILE_WRITE_LINE $9 "@echo off"
+ !insertmacro FILE_WRITE_LINE $9 "rem RTEMS batch file: ${RTEMS_VERSION}-${RTEMS_BUILD_VERSION}"
!insertmacro FILE_WRITE_LINE $9 "rem We can only handle 9 parameters. More is too hard."
!insertmacro FILE_WRITE_LINE $9 "call $INSTDIR\rtems.bat"
!insertmacro FILE_WRITE_LINE $9 "%1 %2 %3 %4 %5 %6 %7 %8 %9"
@@ -208,6 +221,7 @@ Section -BatchFiles
FileOpen $9 $INSTDIR\vs-make.sh w
!insertmacro FILE_WRITE_LINE $9 "#! /bin/sh"
+ !insertmacro FILE_WRITE_LINE $9 "# RTEMS script: ${RTEMS_VERSION}-${RTEMS_BUILD_VERSION}"
!insertmacro FILE_WRITE_LINE $9 "if [ ! -d $$1 ]; then"
!insertmacro FILE_WRITE_LINE $9 " echo $\"error: no build directory found$\""
!insertmacro FILE_WRITE_LINE $9 " exit 1"
@@ -222,25 +236,43 @@ Section -BatchFiles
SectionEnd
Section -MSYSLinks
- FindFirst $8 $1 c:\msys\1.0\etc\fstab
- StrCmp $1 "" MSYSLinksdone
+ Call MSYSDetectSilent
+ Pop $R0
+ ifFileExists "$R0\etc\fstab" 0 Done
+ Push $R0
Push $INSTDIR
+ Push '\\'
+ Pop $R0
Call StrSlash
+ Pop $R1
Pop $R0
- DetailPrint "Setting MSYS fstab: $R0 -> ${TOOL_PREFIX}"
- FileOpen $9 "c:\msys\1.0\etc\fstab" a
+ DetailPrint "Setting MSYS fstab: $R1 -> /opt/rtems-${PRODUCT_VERSION}"
+ StrCpy $R1 "$R1 /opt/rtems-${PRODUCT_VERSION}$\n"
+ FileOpen $9 "$R0\etc\fstab" a
+ ifErrors 0 +3
+ MessageBox MB_OK "Cannot open $R0\etc\fstab. MSYS mount point no added."
+ Goto Close
+ FileSeek $9 0 SET
+ ReadLoop:
+ FileRead $9 $R2
+ ifErrors Append
+ StrCmp $R1 $R2 Close ReadLoop
+ Append:
FileSeek $9 0 END
- FileWrite $9 $R0
- FileWriteByte $9 "32"
- FileWrite $9 ${TOOL_PREFIX}
- FileWriteByte $9 "10"
+ FileWrite $9 $R1
+ Close:
FileClose $9
- MSYSLinksdone:
- FindClose $8
+ Done:
+ ClearErrors
SectionEnd
+!endif
Section -Post
- WriteUninstaller "$INSTDIR\rtems-${RTEMS_TARGET}-uninst.exe"
+!ifdef COMMON_FILES
+ WriteUninstaller "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-uninst.exe"
+!else
+ WriteUninstaller "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-${RTEMS_TARGET}-uninst.exe"
+!endif
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
"DisplayName" "$(^Name)"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" \
@@ -255,14 +287,27 @@ SectionEnd
Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 \
- "Are you sure you want to uninstall RTEMS Tools?" IDYES +2
+ "Are you sure you want to uninstall RTEMS Tools (${RTEMS_TARGET})?" IDYES +2
Abort
FunctionEnd
Section Uninstall
- Delete $INSTDIR\rtems-${RTEMS_TARGET}-uninst.exe
+ SetDetailsView show
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
- DetailPrint "Delete the install directory"
+ DetailPrint "Delete the installed files"
+ !insertmacro RTEMS_DELETE_FILES
+!ifdef COMMON_FILES
+ FindFirst $0 $1 "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-*-uninst.exe"
+ Uninstall_Targets:
+ StrCmp $1 "" Uninstall_Targets_Done
+ DetailPrint "Uninstalling $1"
+ ExecWait '"$INSTDIR\$1" /S'
+ Delete $1
+ BringToFront
+ FindNext $0 $1
+ Goto Uninstall_Targets
+ Uninstall_Targets_Done:
+ FindClose $0
Delete "$INSTDIR\AUTHORS"
Delete "$INSTDIR\COPYING"
Delete "$INSTDIR\README"
@@ -270,7 +315,12 @@ Section Uninstall
Delete "$INSTDIR\rtems-cmd.bat"
Delete "$INSTDIR\sh-run.bat"
Delete "$INSTDIR\vs-make.sh"
- !insertmacro RTEMS_DELETE_FILES
+ Delete "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-uninst.exe"
+!else
+ Delete "$INSTDIR\rtems${PRODUCT_VERSION}-${RTEMS_BUILD_VERSION}-tools-${RTEMS_TARGET}-uninst.exe"
+ Delete "$INSTDIR\Packages"
+!endif
+ RMDir "$INSTDIR"
DetailPrint "All done."
- SetAutoClose true
+ SetAutoClose false
SectionEnd
diff --git a/contrib/mingw/rtems.ini b/contrib/mingw/rtems.ini
index 6a55ecfc55..fcec74441e 100644
--- a/contrib/mingw/rtems.ini
+++ b/contrib/mingw/rtems.ini
@@ -7,7 +7,7 @@ NumFields=6
[Field 1]
Type=Label
-Text=RTEMS Tools for Windows is a set of MinGW tools suitable for compiling RTEMS and RTEMS applications. You should install download and install the MinGW runtime and if you wish to build RTEMS or need autoconf or automake support the MSYS packages as well. You can find the MinGW and MSYS installers on the MinGW web site.\r\n\r\nFurther information and the source code with patches can be located via the link below.
+Text=RTEMS Tools for Windows is a set of MinGW tools suitable for compiling RTEMS and RTEMS applications. You should install download and install the MinGW runtime and if you wish to build RTEMS and if you need autoconf or automake support the MSYS and MSYS DTK packages as well. You can find the MinGW and MSYS installers on the MinGW web site.\r\n\r\nFurther information and the source code with patches can be located via the link below.
Left=0
Right=292
Top=25
@@ -24,7 +24,7 @@ Bottom=12
[Field 3]
Type=Link
Text=Source Code with patches
-State=ftp://www.rtems.org/pub/rtems/SOURCES
+State=http://www.rtems.org/ftp/pub/rtems/SOURCES
Left=150
Right=275
Top=91
diff --git a/contrib/mingw/target-section-text b/contrib/mingw/target-section-text
new file mode 100644
index 0000000000..27c9baca4a
--- /dev/null
+++ b/contrib/mingw/target-section-text
@@ -0,0 +1,9 @@
+auto_section_text="Autoconf and Automake"
+arm_section_text="ARM Targets"
+h8300_section_text="H8300 16bit Target"
+i386_section_text="Intel i386 Targets"
+m68k_section_text="Coldfire and M68000 Targets"
+mips_section_text="MIPS Targets"
+powerpc_section_text="PowerPC Targets"
+sh_section_text="SH Targets"
+sparc_section_text="SPARC (Leon) Targets"
diff --git a/contrib/mingw/upload.sh b/contrib/mingw/upload.sh
new file mode 100755
index 0000000000..be0cd4a4a5
--- /dev/null
+++ b/contrib/mingw/upload.sh
@@ -0,0 +1,104 @@
+#! /bin/sh
+
+# $Id$
+#
+# RTEMS Installers and Source Upload script.
+#
+# This script copies the executable and source to the RTEMS FTP server. It is for
+# use on the RTEMS build server.
+#
+
+echo $0 $*
+
+source=$(dirname $0)
+top=$(pwd)
+
+terminate()
+{
+ echo "error: $*" >&2
+ exit 1
+}
+
+check()
+{
+ if [ $? -ne 0 ]; then
+ terminate
+ fi
+}
+
+. $source/version
+
+ftpbase=none
+prefix=none
+
+while [ $# -gt 0 ];
+do
+ case $1 in
+ -b)
+ shift
+ tool_build=$1
+ ;;
+ -d)
+ set -x
+ ;;
+ -f)
+ shift
+ ftpbase=$1
+ ;;
+ -p)
+ shift
+ prefix=$1
+ ;;
+ -v)
+ shift
+ version=$1
+ ;;
+ --help)
+ echo "$0 -d -b <build> -f <ftpbase> -p <prefix> -v <version>"
+ exit 2
+ ;;
+ *)
+ terminate "error: invalid option (try --help): $1"
+ ;;
+ esac
+ shift
+done
+
+if [ $ftpbase = none ]; then
+ terminate "no ftpbase set"
+fi
+
+if [ $prefix = none ]; then
+ terminate "no prefix set"
+fi
+
+exebase=${prefix}/${version}/packages/mingw32/exe
+srcbase=${prefix}/${version}/packages/mingw32/SRPMS
+
+mkdir -p ${ftpbase}/${version}/build-${tool_build}/source
+check "creating: ${ftpbase}/${version}/build-${tool_build}/source"
+
+exes=$(find $exebase -name \*.exe)
+for e in $exes
+do
+ echo "cp $e ${ftpbase}/${version}/build-${tool_build}/."
+ cp $e ${ftpbase}/${version}/build-${tool_build}/.
+ check "coping installer: $e"
+done
+
+cd ${ftpbase}/${version}/build-${tool_build}/source
+check "change directory: ${ftpbase}/${version}/build-${tool_build}/source"
+
+for s in ${srcbase}/*.rpm
+do
+ echo "rpm2cpio $s | cpio --extract --quiet"
+ rpm2cpio $s | cpio --extract --quiet
+ check "RPM to CPIO and CPIO Copy-In failed"
+done
+
+rm -f *.spec
+check "deleting spec files"
+
+cd $top
+
+exit 0
diff --git a/contrib/mingw/version b/contrib/mingw/version
new file mode 100644
index 0000000000..43b84096a5
--- /dev/null
+++ b/contrib/mingw/version
@@ -0,0 +1,2 @@
+version=4.8
+tool_build=14