summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorJonas Häggqvist <rasher@rasher.dk>2009-10-12 18:49:29 +0000
committerJonas Häggqvist <rasher@rasher.dk>2009-10-12 18:49:29 +0000
commitb285a77be5145e6e4214fec54b78e29285b3c091 (patch)
tree5f801d183c435a33c837fc3db88d3c8d09aefdcd /tools
parente1439fa010c3e5d42d08978b8864e0407ae573dc (diff)
downloadrockbox-b285a77be5145e6e4214fec54b78e29285b3c091.zip
rockbox-b285a77be5145e6e4214fec54b78e29285b3c091.tar.gz
rockbox-b285a77be5145e6e4214fec54b78e29285b3c091.tar.bz2
rockbox-b285a77be5145e6e4214fec54b78e29285b3c091.tar.xz
Change the Windows crosscompiling logic:
- It is now an option under (A)dvanced. - Configure will look through PATH for a sdl-config of a crosscompiled SDL. - It should now in theory work on other platforms besides Linux. Untested. - Should be easy to adapt to also work for the database and checkwps tools. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@23136 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'tools')
-rwxr-xr-xtools/configure71
1 files changed, 38 insertions, 33 deletions
diff --git a/tools/configure b/tools/configure
index 790be27..3e54f81 100755
--- a/tools/configure
+++ b/tools/configure
@@ -38,27 +38,6 @@ prefixtools () {
OC=${prefix}objcopy
}
-crosswincc () {
- # naive approach to selecting a mingw cross-compiler on linux/*nix
- echo "Enabling win32 crosscompiling"
-
- sdl=`findtool sdl-config`
- sdl_cflags=""
- sdl_libs=""
- prefixtools i586-mingw32msvc-
- if [ $1 = "sdl" -a -n "$sdl" ]; then
- sdl_cflags="`sdl-config --cflags`"
- sdl_libs="`sdl-config --libs`"
- fi
- # add cross-compiler option(s)
- GCCOPTS="$GCCOPTS $sdl_cflags"
- LDOPTS="-mconsole $sdl_libs"
-
- output="rockboxui.exe" # use this as output binary name
- crosscompile="yes"
- endian="little" # windows is little endian
-}
-
# scan the $PATH for the given command
findtool(){
file="$1"
@@ -78,6 +57,29 @@ findtool(){
fi
}
+# scan the $PATH for sdl-config - if crosscompiling, require that it is
+# a mingw32 sdl-config
+findsdl(){
+ file="sdl-config"
+
+ IFS=":"
+ for path in $PATH
+ do
+ #echo "checks for $file in $path" >&2
+ if test -f "$path/$file"; then
+ if [ "yes" = "${crosscompile}" ]; then
+ if [ "0" != `$path/$file --libs |grep -c mwindows` ]; then
+ echo "$path/$file"
+ return
+ fi
+ else
+ echo "$path/$file"
+ return
+ fi
+ fi
+ done
+}
+
simcc () {
# default tool setup for native building
@@ -88,7 +90,7 @@ simcc () {
GCCOPTIMIZE=''
output="rockboxui" # use this as default output binary name
- sdl=`findtool sdl-config`
+ sdl=`findsdl`
sdl_cflags=""
sdl_libs=""
@@ -100,8 +102,8 @@ simcc () {
exit 1
else
# generic sdl-config checker
- sdl_cflags=`sdl-config --cflags`
- sdl_libs=`sdl-config --libs`
+ sdl_cflags=`$sdl --cflags`
+ sdl_libs=`$sdl --libs`
fi
fi
@@ -133,14 +135,6 @@ simcc () {
echo "Linux host detected"
GCCOPTS="$GCCOPTS $sdl_cflags"
LDOPTS="$sdl_libs"
- # cannot crosscompile without SDL installed
- if [ -n "$sdl" ]; then
- if [ "0" != `sdl-config --libs |grep -c mwindows` ]; then
- # Enable crosscompiling if sdl-config is from Windows SDL
- # overrides GCCOPTS and LDOPTS
- crosswincc $1
- fi
- fi
;;
FreeBSD)
@@ -207,6 +201,13 @@ EOF
# use wildcard here to make it work even if it was named *.exe like
# on cygwin
rm -f $tmpdir/conftest-$id*
+ else
+ # We are crosscompiling
+ # add cross-compiler option(s)
+ prefixtools i586-mingw32msvc-
+ LDOPTS="-mconsole $sdl_libs"
+ output="rockboxui.exe" # use this as output binary name
+ endian="little" # windows is little endian
fi
}
@@ -332,7 +333,7 @@ whichadvanced () {
interact=1
echo ""
echo "Enter your developer options (press enter when done)"
- printf "(D)EBUG, (L)ogf, (S)imulator, (P)rofiling, (V)oice"
+ printf "(D)EBUG, (L)ogf, (S)imulator, (P)rofiling, (V)oice, (W)in32 crosscompile"
if [ "$memory" = "2" ]; then
printf ", (8)MB MOD"
fi
@@ -420,6 +421,10 @@ whichadvanced () {
echo "RTC functions enabled (DS1339/DS3231)"
fi
;;
+ [Ww])
+ echo "Enabling Windows 32 cross-compiling"
+ crosscompile="yes"
+ ;;
*)
if [ "$interact" ]; then
cont=0