Browse Source

nmake option

cxgeorge 25 years ago
parent
commit
7148a9fd2d
1 changed files with 49 additions and 17 deletions
  1. 49 17
      pandatool/src/scripts/builder.pl

+ 49 - 17
pandatool/src/scripts/builder.pl

@@ -40,7 +40,6 @@ $ENV{'WINTOOLS'} = '/home/builder/player/wintools';
 $ENV{'PPREMAKE_CONFIG'} = $ENV{'WINTOOLS'}.'/panda/etc/Config.pp';
 $ENV{'PPREMAKE_CONFIG'} = $ENV{'WINTOOLS'}.'/panda/etc/Config.pp';
 $ENV{'TCSH_NO_CSHRC_CHDIR'}='1';
 $ENV{'TCSH_NO_CSHRC_CHDIR'}='1';
 $ENV{'ENABLE_PROFILING'}='1';    # generate .map files
 $ENV{'ENABLE_PROFILING'}='1';    # generate .map files
-$ENV{'PANDA_BUILD_TYPE'} = 'gmsvc';
 
 
 # needed to add this to fix version.rc path in ppremake?
 # needed to add this to fix version.rc path in ppremake?
 $ENV{'DTOOL'} = '/home/builder/player/dtool';
 $ENV{'DTOOL'} = '/home/builder/player/dtool';
@@ -354,7 +353,7 @@ sub archivetree() {
     # delete old browse files
     # delete old browse files
     &myexecstr("del /q ".$archdirname."\\*.bsc","nomsg","DO_LOG","NT cmd");
     &myexecstr("del /q ".$archdirname."\\*.bsc","nomsg","DO_LOG","NT cmd");
 
 
-	# delete wintools, right now its too big to archive
+    # delete wintools, right now its too big to archive
     &myexecstr("rd /s /q ".$archdirname."\\wintools","nomsg","DO_LOG","NT cmd");
     &myexecstr("rd /s /q ".$archdirname."\\wintools","nomsg","DO_LOG","NT cmd");
     &myexecstr("rd /s /q ".$archdirname."\\wintools","nomsg","DO_LOG","NT cmd");
     &myexecstr("rd /s /q ".$archdirname."\\wintools","nomsg","DO_LOG","NT cmd");
 
 
@@ -415,7 +414,7 @@ sub buildall() {
     # cant do attachment, since that often hangs on NT
     # cant do attachment, since that often hangs on NT
     # must use non-attachment build system  (BUILD_TYPE 'gmsvc', not 'stopgap', in $PPREMAKE_CONFIG)
     # must use non-attachment build system  (BUILD_TYPE 'gmsvc', not 'stopgap', in $PPREMAKE_CONFIG)
     
     
-    # hacks to fix multiproc build issue (cp file to dir occurs before dir creation)
+    # hacks to fix multiproc build issue (cp file to dir occurs before dir creation, need to adjust makefiles to fix this)
     foreach my $dir1 (@dirstodolist) {    
     foreach my $dir1 (@dirstodolist) {    
         &mymkdir($CYGBLDROOT."/".$dir1."/etc"); 
         &mymkdir($CYGBLDROOT."/".$dir1."/etc"); 
         &mymkdir($CYGBLDROOT."/".$dir1."/bin"); 
         &mymkdir($CYGBLDROOT."/".$dir1."/bin"); 
@@ -427,7 +426,7 @@ sub buildall() {
     foreach my $dir1 (@dirstodolist) {    
     foreach my $dir1 (@dirstodolist) {    
         my $dir1_upcase = uc($dir1);
         my $dir1_upcase = uc($dir1);
 
 
-        &logmsg("*** PPREMAKE ".$dir1_upcase." ***");
+        &logmsg("*** PPREMAKE ".$dir1_upcase." (BUILDTYPE=".$ENV{'PANDA_BUILD_TYPE'}.") ***");
         &mychdir($CYGBLDROOT."/".$dir1);
         &mychdir($CYGBLDROOT."/".$dir1);
         &myexecstr("ppremake",$dir1_upcase." ppremake failed!","DO_LOG","NO_PANDA_ATTACH");
         &myexecstr("ppremake",$dir1_upcase." ppremake failed!","DO_LOG","NO_PANDA_ATTACH");
     }
     }
@@ -436,12 +435,19 @@ sub buildall() {
     # &mychdir($CYGBLDROOT);
     # &mychdir($CYGBLDROOT);
     # &myexecstr("dir dtool","dir failed","DO_LOG","NT cmd");
     # &myexecstr("dir dtool","dir failed","DO_LOG","NT cmd");
 
 
+    $makecmd="make";
+    $shellarg="NO_PANDA_ATTACH";
+
+    if($ENV{'PANDA_BUILD_TYPE'} eq 'msvc') {
+       $makecmd="nmake";
+       $shellarg="NT cmd";
+    }
+
     foreach my $dir1 (@dirstodolist) {    
     foreach my $dir1 (@dirstodolist) {    
         my $dir1_upcase = uc($dir1);
         my $dir1_upcase = uc($dir1);
-
         &logmsg("*** BUILDING ".$dir1_upcase." ***");
         &logmsg("*** BUILDING ".$dir1_upcase." ***");
         &mychdir($CYGBLDROOT."/".$dir1);
         &mychdir($CYGBLDROOT."/".$dir1);
-        &myexecstr("make install",$dir1_upcase." make install failed!","DO_LOG","NO_PANDA_ATTACH");
+        &myexecstr($makecmd." install",$dir1_upcase." ".$makecmd." install failed!","DO_LOG",$shellarg);
     }
     }
 
 
     &mychdir($CYGBLDROOT);  # get out of src dirs to allow them to be moved/renamed
     &mychdir($CYGBLDROOT);  # get out of src dirs to allow them to be moved/renamed
@@ -526,20 +532,30 @@ close(LOGFILE);
 
 
 &logmsg("*** Panda Build Log Started at ".&gettimestr()." ***");
 &logmsg("*** Panda Build Log Started at ".&gettimestr()." ***");
 
 
-my @do_install_dir=(1,1,1,1);
+my @do_install_dir=(0,0,0,0);
+my @dir_build_type=(0,0,0,0);
+
+my $g_last_dirnum=0;
+
+if($#ARGV<0) {
+   @dir_build_type=(1,1,1,1);  
+}
 
 
-if($#ARGV>=0) {
-    @do_install_dir=(0,0,0,0);
-    if($ARGV[0] eq $inst_dirnames[$INSTALLNUM]) {
-        $do_install_dir[$INSTALLNUM]=1;
-    } elsif($ARGV[0] eq $inst_dirnames[$DEBUGNUM]) {
-        $do_install_dir[$DEBUGNUM]=1;
-    } elsif($ARGV[0] eq $inst_dirnames[$RELEASENUM]) {
-        $do_install_dir[$RELEASENUM]=1;
+for($ii=0;$ii<=$#ARGV;$ii++) {
+    if(uc($ARGV[$ii]) eq uc($inst_dirnames[$INSTALLNUM])) {
+        $g_last_dirnum=$INSTALLNUM;
+    } elsif(uc($ARGV[$ii]) eq uc($inst_dirnames[$DEBUGNUM])) {
+        $g_last_dirnum=$DEBUGNUM;
+    } elsif(uc($ARGV[$ii]) eq uc($inst_dirnames[$RELEASENUM])) {
+        $g_last_dirnum=$RELEASENUM;
+    } elsif(uc($ARGV[$ii]) eq "NMAKE") {
+       $dir_build_type[$g_last_dirnum]=1;
+       next;
     } else {
     } else {
         &logmsg("invalid argument '".$ARGV[0]."' to builder.pl.  arg must be 'install','debug', or 'release'\n");
         &logmsg("invalid argument '".$ARGV[0]."' to builder.pl.  arg must be 'install','debug', or 'release'\n");
         exit(1);
         exit(1);
     }
     }
+    $do_install_dir[$g_last_dirnum]=1;
 }
 }
 
 
 if(!(-e $WIN_INSTALLDIR)) {
 if(!(-e $WIN_INSTALLDIR)) {
@@ -598,18 +614,34 @@ SKIP_REMOVE:
 # bombs if dirs exist but CVS dirs do not. 
 # bombs if dirs exist but CVS dirs do not. 
 
 
 if($do_install_dir[$INSTALLNUM]) {
 if($do_install_dir[$INSTALLNUM]) {
+  if($dir_build_type[$INSTALLNUM]) {
+    $ENV{'PANDA_BUILD_TYPE'} = 'msvc';
+  } else {
+    $ENV{'PANDA_BUILD_TYPE'} = 'gmsvc';
+  }
+
   $ENV{'PANDA_OPTIMIZE'}='2';
   $ENV{'PANDA_OPTIMIZE'}='2';
   &buildall($INSTALLNUM);
   &buildall($INSTALLNUM);
 }
 }
 
 
 if($do_install_dir[$RELEASENUM]) {
 if($do_install_dir[$RELEASENUM]) {
-    $ENV{'PANDA_OPTIMIZE'}='3';
-    &buildall($RELEASENUM);
+  if($dir_build_type[$RELEASENUM]) {
+    $ENV{'PANDA_BUILD_TYPE'} = 'msvc';
+  } else {
+    $ENV{'PANDA_BUILD_TYPE'} = 'gmsvc';
+  }
+  $ENV{'PANDA_OPTIMIZE'}='3';
+  &buildall($RELEASENUM);
 }
 }
 
 
 BEFORE_DBGBUILD:
 BEFORE_DBGBUILD:
 
 
 if($do_install_dir[$DEBUGNUM]) {
 if($do_install_dir[$DEBUGNUM]) {
+    if($dir_build_type[$DEBUGNUM]) {
+      $ENV{'PANDA_BUILD_TYPE'} = 'msvc';
+     } else {
+       $ENV{'PANDA_BUILD_TYPE'} = 'gmsvc';
+     }
     $ENV{'USE_BROWSEINFO'}='1';   # make .sbr files, this is probably obsolete
     $ENV{'USE_BROWSEINFO'}='1';   # make .sbr files, this is probably obsolete
     if(! $DEBUG_GENERATE_PYTHON_CODE_ONLY) {
     if(! $DEBUG_GENERATE_PYTHON_CODE_ONLY) {
        $ENV{'PANDA_OPTIMIZE'}='1';
        $ENV{'PANDA_OPTIMIZE'}='1';