]> granicus.if.org Git - curl/commitdiff
added new --target option for autobuilding other targets than GNU-like.
authorGunter Knauf <gk@gknw.de>
Tue, 22 Jun 2004 20:02:49 +0000 (20:02 +0000)
committerGunter Knauf <gk@gknw.de>
Tue, 22 Jun 2004 20:02:49 +0000 (20:02 +0000)
tests/testcurl.pl

index 1efbba3751faf6e3d323c63b32c4a0b4c89ecea1..ff9c13399214391c7d36ca2d8bd64b577f7a1e2e 100755 (executable)
 
 # USAGE:
 # testcurl.pl [curl-daily-name] > output
+# or:
+# testcurl.pl --target=your_os > output
 
 # Updated:
-# v1.2 8-Mar-04 - rewritten in perl
-# v1.1 6-Nov-03 - to take an optional parameter, the name of a daily-build
-#                 directory.  If present, build from that directory, otherwise
-#                 perform a normal CVS build.
+# v1.7 22-Jun-04 - added --target option for other platform targets.
+# v1.2  8-Mar-04 - rewritten in perl
+# v1.1  6-Nov-03 - to take an optional parameter, the name of a daily-build
+#                  directory.  If present, build from that directory, otherwise
+#                  perform a normal CVS build.
 
 use strict;
 
@@ -49,20 +52,44 @@ use Cwd;
 # Turn on warnings (equivalent to -w, which can't be used with /usr/bin/env)
 BEGIN { $^W = 1; }
 
-use vars qw($version $fixed $infixed $CURLDIR $CVS $pwd $build $buildlog $buildlogname $gnulikebuild);
+use vars qw($version $fixed $infixed $CURLDIR $CVS $pwd $build $buildlog
+            $buildlogname $gnulikebuild $targetos $confsuffix $binext);
 use vars qw($name $email $desc $confopts);
 
 # version of this script
 $version='$Revision$';
 $fixed=0;
 
-# Determine if we're running from CVS or a canned copy of curl
+# Determine if we're running from CVS or a canned copy of curl,
+# or if we got a specific target option
+$CURLDIR="curl";
+$CVS=1;
 if (@ARGV && $ARGV[0]) {
-  $CURLDIR=$ARGV[0];
-  $CVS=0;
-} else {
-  $CURLDIR="curl";
-  $CVS=1;
+  if ($ARGV[0] =~ /--target=/) {
+    $targetos = (split(/=/, $ARGV[0]))[1];
+  } else {
+    $CURLDIR=$ARGV[0];
+    $CVS=0;
+  }
+}
+
+# Do the platform-specific stuff here
+$gnulikebuild = 1;
+$confsuffix = '';
+$binext = '';
+if ($^O eq 'MSWin32' || defined($targetos)) {
+  $gnulikebuild = 0;
+  if (!defined($targetos)) {
+    # If no target defined on Win32 lets assume vc
+    $targetos = 'vc';
+  }
+  if ($targetos =~ /vc/ || $targetos =~ /mingw32/) {
+    $confsuffix = '-win32';
+    $binext = '.exe';
+  } elsif ($targetos =~ /netware/) {
+    $confsuffix = '-netware';
+    $binext = '.nlm';
+  }
 }
 
 $ENV{LANG}="C";
@@ -118,11 +145,6 @@ sub mydie($){
     exit 1;
 }
 
-$gnulikebuild = 1;
-if ($^O eq 'MSWin32') {
-  $gnulikebuild = 0;
-}
-
 if (open(F, "setup")) {
   while (<F>) {
     if (/(\w+)=(.*)/) {
@@ -183,6 +205,7 @@ logit "DESC = $desc";
 logit "CONFOPTS = $confopts";
 logit "CFLAGS = ".($ENV{CFLAGS} ? $ENV{CFLAGS} : "");
 logit "CC = ".($ENV{CC} ? $ENV{CC} : "");
+logit "target = ".($targetos ? $targetos : "");
 logit "version = $version";
 logit "date = ".(scalar gmtime)." UTC";
 
@@ -286,7 +309,8 @@ if ($CVS) {
        mydie "buildconf was NOT successful";
     }
   } else {
-    system("buildconf.bat");
+    system("buildconf.bat") if ($^O eq 'MSWin32');
+    # logit "buildconf was successful (dummy message)" if ($^O eq 'linux');
   }
 
 }
@@ -314,24 +338,28 @@ if ($gnulikebuild) {
     mydie "configure didn't work";
   }
 } else {
-  system("xcopy /s /q ..\\$CURLDIR .");
+  system("xcopy /s /q ..\\$CURLDIR .") if ($^O eq 'MSWin32');
+  if ($^O eq 'linux') {
+    system("cp -ar ../$CURLDIR/* ."); 
+    system("cp -a ../$CURLDIR/Makefile.dist Makefile"); 
+  }
 }
 
-logit "display lib/config.h";
-open(F, $gnulikebuild ? "lib/config.h" : "lib/config-win32.h") or die;
+logit "display lib/config$confsuffix.h";
+open(F, "lib/config$confsuffix.h") or die;
 while (<F>) {
   print if /^ *#/;
 }
 close(F);
 
-logit "display src/config.h";
-open(F, $gnulikebuild ? "src/config.h" : "src/config-win32.h") or die;
+logit "display src/config$confsuffix.h";
+open(F, "src/config$confsuffix.h") or die;
 while (<F>) {
   print if /^ *#/;
 }
 close(F);
 
-if (grepfile("define USE_ARES", $gnulikebuild ? "lib/config.h" : "lib/config-win32.h")) {
+if (grepfile("define USE_ARES", "lib/config$confsuffix.h")) {
   logit "setup to build ares";
 
   logit "build ares";
@@ -362,7 +390,15 @@ if ($gnulikebuild) {
   }
   close(F);
 } else {
-  open(F, "nmake -i vc|") or die;
+  if ($^O eq 'MSWin32') {
+    if ($targetos =~ /vc/) {
+      open(F, "nmake -i $targetos|") or die;
+    } else {
+      open(F, "make -i $targetos |") or die;
+    }
+  } else {
+    open(F, "make -i $targetos 2>&1 |") or die;
+  }
   while (<F>) {
     s/$pwd//g;
     print;
@@ -370,16 +406,19 @@ if ($gnulikebuild) {
   close(F);
 }
 
-my $exe = $gnulikebuild ? "curl" : "curl.exe";
-if (-f "src/$exe") {
-  logit "src/curl was created fine ($exe)";
+if (-f "src/curl$binext") {
+  logit "src/curl was created fine (curl$binext)";
 } else {
-  mydie "src/curl was not created ($exe)";
+  mydie "src/curl was not created (curl$binext)";
 }
 
-logit "display $exe --version output";
+if (defined($targetos) && $targetos =~ /netware/) {
+  #system('../../curlver.sh');
+} else {
+logit "display curl$binext --version output";
 
-system("./src/$exe --version");
+system("./src/curl$binext --version");
+}
 
 if ($gnulikebuild) {
   logit "run make test-full";