ViewVC Help
View File | Revision Log | Show Annotations | Root Listing
root/cvsroot/COMP/SCRAM/src/BuildSetup.pm
Revision: 1.5.2.12
Committed: Wed Dec 1 15:46:39 1999 UTC (25 years, 5 months ago) by williamc
Content type: text/plain
Branch: V0_9branch
CVS Tags: V0_10_12, V0_10_11, V0_10_10, V0_10_9, V0_10_8, V0_10_7, V0_10_6
Changes since 1.5.2.11: +1 -2 lines
Log Message:
move datestamp target to main gmake call

File Contents

# Content
1 package BuildSetup;
2 require 5.001;
3 require Exporter;
4 @ISA=qw(Exporter);
5 @EXPORT=qw(BuildSetup);
6 use Interface;
7 use BuildFile;
8 use Utilities::AddDir;
9
10 sub BuildSetup {
11 my $THISDIR=shift;
12 my @Targets=@_;
13 my $DefaultBuildFile="";
14 $Class="";
15
16 # Create working directory
17 chdir $ENV{LOCALTOP};
18 AddDir::adddir($ENV{INTwork}."/".$THISDIR);
19
20 GetClass($THISDIR);
21 #print "Class = $Class\n";
22 #print "ClassDir = $ClassDir\n";
23 if ( grep /none/i , @BuildFile::groups) {
24 print "Nothing to be done - empty group\n";
25 exit
26 }
27 shift;
28
29 # set up the workdir variable
30 $ENV{workdir}=$ENV{INTwork}."/".$ClassDir;
31 $fullworkdir=$ENV{LOCALTOP}."/".$ENV{workdir};
32
33
34 # set up projdeps variable
35 $projectfile=$ENV{projconfigdir}."/External_Dependencies";
36 if ( -e $ENV{LOCALTOP}."/".$projectfile ) {
37 $ENV{projdeps}=$ENV{LOCALTOP}."/".$projectfile;
38 }
39 elsif ( -e $ENV{RELEASETOP}."/".$projectfile ) {
40 $ENV{projectfile}=$ENV{RELEASETOP}."/".$projectfile;
41 }
42 else {
43 print "Warning : Unable to find $projectfile\n";
44 }
45 # Assume always overrides for now : TODO add merge
46 if ( $DefaultBuildFile eq "" ) {
47 # Map Relevant makefile classmakefile directory
48 $classmakefile=$ENV{projconfigdir}."/".$Class."_makefile.mk";
49 if ( -e $ENV{LOCALTOP}."/".$classmakefile ) {
50 $ENV{classmakefile}=$ENV{LOCALTOP}."/".$classmakefile;
51 }
52 elsif ( -e $ENV{RELEASETOP}."/".$classmakefile ) {
53 $ENV{classmakefile}=$ENV{RELEASETOP}."/".$classmakefile;
54 }
55 else {
56 print "\nUnable to locate $classmakefile\n";
57 print " Not in $ENV{LOCALTOP}\n";
58 print " Not in $ENV{RELEASETOP}\n";
59 exit 1;
60 }
61 $DefaultBuildFile=$ENV{classmakefile}; # TODO - only for override
62 }
63
64 $ENV{ClassDir}=$ClassDir;
65 $ENV{Class}=$Class;
66 $ENV{DefaultBuildFile}=$DefaultBuildFile;
67
68 chdir $fullworkdir || die "Unable to enter working directory $!";
69
70 # Set up some other useful variables fo the Build
71 # list of directories available
72 opendir IDR, "$ENV{LOCALTOP}/$THISDIR";
73 @allfiles= grep !/^\.\.?$/, readdir IDR;
74 foreach $file ( @allfiles ) {
75 if ( -d "$ENV{LOCALTOP}/$THISDIR/$file" ) { # only add if its a directory
76 $ENV{SCRAM_AVAILDIRS}=$ENV{SCRAM_AVAILDIRS}." ".$file;
77 }
78 else {
79 $ENV{SCRAM_AVAILFILES}=$ENV{SCRAM_AVAILFILES}." ".$file;
80 }
81 }
82 $targetnumber=$#Targets;
83 foreach $word ( @Targets ) {
84 if ( $word=~/.*=.*/ ) { # if we have an assignment it cant be a target
85 $targetnumber--;
86 }
87 else {
88 $ENV{"MAKETARGET_".$word}=$word;
89 }
90 }
91
92 # If not specified default to the class name target
93 if ( $targetnumber == -1 ) {
94 push @Targets,$Class;
95 }
96
97 $ENV{DefaultMakefile}="$ENV{TOOL_HOME}/basics.mk";
98
99 $SCRAM_GROUPSDIR=$ENV{LOCALTOP}."/".$ENV{projconfigdir}."/groups.mk";
100 if ( -f $SCRAM_GROUPSDIR ) {
101 $ENV{SCRAM_GROUPSDIR}=$SCRAM_GROUPSDIR;
102 }
103 # Set up scram configuration files
104 system("gmake","--no-print-directory","-r","-s","-j 1","-f","$ENV{TOOL_HOME}/clientmakefile.mk","-I$ENV{TOOL_HOME}", "client");
105
106 # Do a datestamp check so that make will build files that have changed rather
107 # than just those which are older than their dependencies
108 # The main build here
109 system("gmake","--no-print-directory","-r","-f","$ENV{DefaultMakefile}","-I$ENV{TOOL_HOME}",datestamp, @Targets);
110 }