fix "configure --prefix=" and improve path/arg handling in configure
authorRich Felker <dalias@aerifal.cx>
Thu, 8 Nov 2012 22:20:50 +0000 (17:20 -0500)
committerRich Felker <dalias@aerifal.cx>
Thu, 8 Nov 2012 22:20:50 +0000 (17:20 -0500)
previously, empty string was treated as "use default". this is
apparently not compatible with standard configure semantics where an
empty prefix puts everything under /. the new logic should be a lot
cleaner and not suffer from such issues.

configure

index 46d83fcf0da392cf037b89e330dc96044cbacd5e..cee817e4dbbea4a3ef6e1467cbfe6b528cc7026a 100755 (executable)
--- a/configure
+++ b/configure
@@ -50,9 +50,8 @@ fnmatch () { eval "case \"\$2\" in $1) return 0 ;; *) return 1 ;; esac" ; }
 cmdexists () { type "$1" >/dev/null 2>&1 ; }
 trycc () { test -z "$CC" && cmdexists "$1" && CC=$1 ; }
 
-setdir () {
-if eval "test -z \"\${$1}\"" ; then eval "$1=\$2"
-else eval "fnmatch '*/' \"\${$1}\"" && eval "$1=\${$1%/}" ; fi
+stripdir () {
+while eval "fnmatch '*/' \"\${$1}\"" ; do eval "$1=\${$1%/}" ; done
 }
 
 tryflag () {
@@ -90,15 +89,15 @@ fi
 CFLAGS_C99FSE=
 CFLAGS_AUTO=
 LDFLAGS_AUTO=
-prefix=
-exec_prefix=
-bindir=
-libdir=
-includedir=
-syslibdir=
+prefix=/usr/local/musl
+exec_prefix='$(prefix)'
+bindir='$(exec_prefix)/bin'
+libdir='$(prefix)/lib'
+includedir='$(prefix)/include'
+syslibdir='/lib'
 target=
 debug=no
-warnings=
+warnings=no
 shared=yes
 static=yes
 
@@ -135,12 +134,9 @@ LIBCC=*) LIBCC=${arg#*=} ;;
 esac
 done
 
-setdir prefix /usr/local/musl
-setdir exec_prefix '$(prefix)'
-setdir bindir '$(exec_prefix)/bin'
-setdir libdir '$(prefix)/lib'
-setdir includedir '$(prefix)/include'
-setdir syslibdir '/lib'
+for i in prefix exec_prefix bindir libdir includedir syslibdir ; do
+stripdir $i
+done
 
 #
 # Get a temp filename we can use