From b285a77be5145e6e4214fec54b78e29285b3c091 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonas=20H=C3=A4ggqvist?= Date: Mon, 12 Oct 2009 18:49:29 +0000 Subject: 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 --- tools/configure | 71 ++++++++++++++++++++++++++++++--------------------------- 1 file 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 -- cgit v1.1