1#!/bin/sh 2 3#-------------------------------------------------------------------------- 4# die prints argument string to stdout and exits this shell script. 5# 6die(){ 7 echo "buildconf: $@" 8 exit 1 9} 10 11#-------------------------------------------------------------------------- 12# findtool works as 'which' but we use a different name to make it more 13# obvious we aren't using 'which'! ;-) 14# 15findtool(){ 16 file="$1" 17 18 if { echo "$file" | grep "/" >/dev/null 2>&1; } then 19 # when file is given with a path check it first 20 if test -f "$file"; then 21 echo "$file" 22 return 23 fi 24 fi 25 26 old_IFS=$IFS; IFS=':' 27 for path in $PATH 28 do 29 IFS=$old_IFS 30 # echo "checks for $file in $path" >&2 31 if test -f "$path/$file"; then 32 echo "$path/$file" 33 return 34 fi 35 done 36 IFS=$old_IFS 37} 38 39#-------------------------------------------------------------------------- 40# removethis() removes all files and subdirectories with the given name, 41# inside and below the current subdirectory at invocation time. 42# 43removethis(){ 44 if test "$#" = "1"; then 45 find . -depth -name $1 -print > buildconf.tmp.$$ 46 while read fdname 47 do 48 if test -f "$fdname"; then 49 rm -f "$fdname" 50 elif test -d "$fdname"; then 51 rm -f -r "$fdname" 52 fi 53 done < buildconf.tmp.$$ 54 rm -f buildconf.tmp.$$ 55 fi 56} 57 58#-------------------------------------------------------------------------- 59# Ensure that buildconf runs from the subdirectory where configure.ac lives 60# 61if test ! -f configure.ac || 62 test ! -f ares_init.c || 63 test ! -f m4/cares-functions.m4; then 64 echo "Can not run buildconf from outside of c-ares source subdirectory!" 65 echo "Change to the subdirectory where buildconf is found, and try again." 66 exit 1 67fi 68 69#-------------------------------------------------------------------------- 70# GNU libtool preliminary check 71# 72want_lt_major=1 73want_lt_minor=4 74want_lt_patch=2 75want_lt_version=1.4.2 76 77# This approach that tries 'glibtoolize first is intended for systems that 78# have GNU libtool named as 'glibtoolize' and libtoolize not being GNU's. 79 80libtoolize=`findtool glibtoolize 2>/dev/null` 81if test ! -x "$libtoolize"; then 82 libtoolize=`findtool ${LIBTOOLIZE:-libtoolize}` 83fi 84if test -z "$libtoolize"; then 85 echo "buildconf: libtoolize not found." 86 echo " You need GNU libtoolize $want_lt_version or newer installed." 87 exit 1 88fi 89 90lt_pver=`$libtoolize --version 2>/dev/null|head -n 1` 91lt_qver=`echo $lt_pver|sed -e "s/([^)]*)//g" -e "s/^[^0-9]*//g"` 92lt_version=`echo $lt_qver|sed -e "s/[- ].*//" -e "s/\([a-z]*\)$//"` 93if test -z "$lt_version"; then 94 echo "buildconf: libtoolize not found." 95 echo " You need GNU libtoolize $want_lt_version or newer installed." 96 exit 1 97fi 98old_IFS=$IFS; IFS='.'; set $lt_version; IFS=$old_IFS 99lt_major=$1 100lt_minor=$2 101lt_patch=$3 102 103if test -z "$lt_major"; then 104 lt_status="bad" 105elif test "$lt_major" -gt "$want_lt_major"; then 106 lt_status="good" 107elif test "$lt_major" -lt "$want_lt_major"; then 108 lt_status="bad" 109elif test -z "$lt_minor"; then 110 lt_status="bad" 111elif test "$lt_minor" -gt "$want_lt_minor"; then 112 lt_status="good" 113elif test "$lt_minor" -lt "$want_lt_minor"; then 114 lt_status="bad" 115elif test -z "$lt_patch"; then 116 lt_status="bad" 117elif test "$lt_patch" -gt "$want_lt_patch"; then 118 lt_status="good" 119elif test "$lt_patch" -lt "$want_lt_patch"; then 120 lt_status="bad" 121else 122 lt_status="good" 123fi 124if test "$lt_status" != "good"; then 125 echo "buildconf: libtoolize version $lt_version found." 126 echo " You need GNU libtoolize $want_lt_version or newer installed." 127 exit 1 128fi 129 130#-------------------------------------------------------------------------- 131# perl check 132# 133PERL=`findtool ${PERL:-perl}` 134if test -z "$PERL"; then 135 echo "buildconf: perl not found" 136 exit 1 137fi 138 139#-------------------------------------------------------------------------- 140# Remove files generated on previous buildconf/configure run. 141# 142for fname in .deps \ 143 .libs \ 144 *.la \ 145 *.lo \ 146 *.a \ 147 *.o \ 148 Makefile \ 149 Makefile.in \ 150 aclocal.m4 \ 151 aclocal.m4.bak \ 152 ares_build.h \ 153 ares_config.h \ 154 ares_config.h.in \ 155 autom4te.cache \ 156 compile \ 157 config.guess \ 158 config.log \ 159 config.lt \ 160 config.status \ 161 config.sub \ 162 configure \ 163 depcomp \ 164 libcares.pc \ 165 libtool \ 166 libtool.m4 \ 167 libtool.m4.tmp \ 168 ltmain.sh \ 169 ltoptions.m4 \ 170 ltsugar.m4 \ 171 ltversion.m4 \ 172 lt~obsolete.m4 \ 173 missing \ 174 stamp-h1 \ 175 stamp-h2 ; do 176 removethis "$fname" 177done 178 179#-------------------------------------------------------------------------- 180# run the correct scripts now 181# 182 183echo "buildconf: running libtoolize" 184${libtoolize} --copy --automake --force || die "libtoolize command failed" 185 186# When using libtool 1.5.X (X < 26) we copy libtool.m4 to our local m4 187# subdirectory and this local copy is patched to fix some warnings that 188# are triggered when running aclocal and using autoconf 2.62 or later. 189 190if test "$lt_major" = "1" && test "$lt_minor" = "5"; then 191 if test -z "$lt_patch" || test "$lt_patch" -lt "26"; then 192 echo "buildconf: copying libtool.m4 to local m4 subdir" 193 ac_dir=`${ACLOCAL:-aclocal} --print-ac-dir` 194 if test -f $ac_dir/libtool.m4; then 195 cp -f $ac_dir/libtool.m4 m4/libtool.m4 196 else 197 echo "buildconf: $ac_dir/libtool.m4 not found" 198 fi 199 if test -f m4/libtool.m4; then 200 echo "buildconf: renaming some variables in local m4/libtool.m4" 201 $PERL -i.tmp -pe \ 202 's/lt_prog_compiler_pic_works/lt_cv_prog_compiler_pic_works/g; \ 203 s/lt_prog_compiler_static_works/lt_cv_prog_compiler_static_works/g;' \ 204 m4/libtool.m4 205 rm -f m4/libtool.m4.tmp 206 fi 207 fi 208fi 209 210if test -f m4/libtool.m4; then 211 echo "buildconf: converting all mv to mv -f in local m4/libtool.m4" 212 $PERL -i.tmp -pe 's/\bmv +([^-\s])/mv -f $1/g' m4/libtool.m4 213 rm -f m4/libtool.m4.tmp 214fi 215 216echo "buildconf: running aclocal" 217${ACLOCAL:-aclocal} -I m4 $ACLOCAL_FLAGS || die "aclocal command failed" 218 219echo "buildconf: converting all mv to mv -f in local aclocal.m4" 220$PERL -i.bak -pe 's/\bmv +([^-\s])/mv -f $1/g' aclocal.m4 221 222echo "buildconf: running autoheader" 223${AUTOHEADER:-autoheader} || die "autoheader command failed" 224 225echo "buildconf: running autoconf" 226${AUTOCONF:-autoconf} || die "autoconf command failed" 227 228echo "buildconf: running automake" 229${AUTOMAKE:-automake} --add-missing --copy || die "automake command failed" 230 231#-------------------------------------------------------------------------- 232# GNU libtool complementary check 233# 234# Depending on the libtool and automake versions being used, config.guess 235# might not be installed in the subdirectory until automake has finished. 236# So we can not attempt to use it until this very last buildconf stage. 237# 238if test ! -f ./config.guess; then 239 echo "buildconf: config.guess not found" 240else 241 buildhost=`./config.guess 2>/dev/null|head -n 1` 242 case $buildhost in 243 *-*-darwin*) 244 need_lt_major=1 245 need_lt_minor=5 246 need_lt_patch=26 247 need_lt_check="yes" 248 ;; 249 *-*-hpux*) 250 need_lt_major=1 251 need_lt_minor=5 252 need_lt_patch=24 253 need_lt_check="yes" 254 ;; 255 esac 256 if test ! -z "$need_lt_check"; then 257 if test -z "$lt_major"; then 258 lt_status="bad" 259 elif test "$lt_major" -gt "$need_lt_major"; then 260 lt_status="good" 261 elif test "$lt_major" -lt "$need_lt_major"; then 262 lt_status="bad" 263 elif test -z "$lt_minor"; then 264 lt_status="bad" 265 elif test "$lt_minor" -gt "$need_lt_minor"; then 266 lt_status="good" 267 elif test "$lt_minor" -lt "$need_lt_minor"; then 268 lt_status="bad" 269 elif test -z "$lt_patch"; then 270 lt_status="bad" 271 elif test "$lt_patch" -gt "$need_lt_patch"; then 272 lt_status="good" 273 elif test "$lt_patch" -lt "$need_lt_patch"; then 274 lt_status="bad" 275 else 276 lt_status="good" 277 fi 278 if test "$lt_status" != "good"; then 279 need_lt_version="$need_lt_major.$need_lt_minor.$need_lt_patch" 280 echo "buildconf: libtool version $lt_version found." 281 echo " $buildhost requires GNU libtool $need_lt_version or newer installed." 282 rm -f configure 283 exit 1 284 fi 285 fi 286fi 287 288#-------------------------------------------------------------------------- 289# Finished successfully. 290# 291echo "buildconf: OK" 292 293if test -f "test/buildconf"; then 294 cd test && ./buildconf 295fi 296 297exit 0 298