4627d299784f04b36ec5f161302849801c01c977
2 ###############################################################################
3 # Copyright (c) 2000-2016 Ericsson Telecom AB
4 # All rights reserved. This program and the accompanying materials
5 # are made available under the terms of the Eclipse Public License v1.0
6 # which accompanies this distribution, and is available at
7 # http://www.eclipse.org/legal/epl-v10.html
12 ###############################################################################
17 # ancient perl, we must be on Solaris :(
18 my @perlloc = qw( /proj/TTCN/Tools/perl-5.10.1/bin/perl /mnt/TTCN/Tools/perl-5.10.1/bin/perl );
21 warn "Let's try with $_ instead";
22 exec( $_, $0, @ARGV ) or die "That didn't work either: $!";
30 die "Need an argument" unless 0 < @ARGV;
31 open(PRJ
, '<' . $ARGV[0]) or die "open prj: $!";
33 my $prj_dir = $ARGV[0]; # ARGV[0] is the .prj name
35 # Strip all non-slash characters (filename) after the last slash;
36 # this keeps the directory part. If ARGV[0] was just a filename with no dirs,
37 # then it's the current directory.
41 } unless $prj_dir =~ s!/[^/]+$!/!;
43 # Pick up parameters from the environment
44 my $split = defined $ENV{CODE_SPLIT
} ?
'-Utype' : '';
45 my $rt2 = defined $ENV{RT2
} ?
'-R' : '';
51 # Line-by-line analysis of an XML file...
56 if (($loc) = m/path="([^"]+)"/ or ($loc) = m/<(?:Module|Other_Source)>([^<]+)<\/(?
:Module
|Other_Source
)>/) {
57 # If it has no path, it's next to the .prj
58 # If it has no absolute path, base it off the .prj dir
60 $loc = $prj_dir . $loc;
62 # Testports are stored locally
63 $loc =~ s!^.*vobs/.*?/.*?/TestPorts!..!;
66 elsif ( ($loc) = m{<UnUsed_List>([^<]+)</UnUsed_List>} ) {
67 die "Didn't expect another UnUsed_List" if scalar @excluded;
68 @excluded = split /,/, $loc;
70 elsif ( m
[<Config
>([^<]+)</Config
>] ) {
72 # If it has no path, it's next to the .prj
73 if ($cfgfile !~ m{/}) {
74 $cfgfile = $prj_dir . $cfgfile;
79 close(PRJ
) or die "close prj: $!";
81 # hash slice deletion: deletes all keys in @excluded from %files
82 delete @files{ @excluded };
84 my @files = keys %files;
86 # Filter out files which are in the current directory.
87 # They should not be symlinked
88 my @symlinkfiles = $local_prj ?
@files : grep { $_ !~ m
(^./) } @files;
90 # Symlink all files into bin/
91 print "Symlinking " . scalar @symlinkfiles . " files\n";
92 system("ln -s @symlinkfiles ./");
94 # Remove the path from the filenames
95 map { s!.+/!!g } @files;
97 # Generate the makefile
98 print("$ENV{TTCN3_DIR}/bin/ttcn3_makefilegen -gs $split $rt2 -e XmlTest @files\n");
100 system( "\$TTCN3_DIR/bin/ttcn3_makefilegen -gs $split $rt2 -e XmlTest -o Makefile.1 @files");
102 # Post-process the generated makefile
103 open(MAKEFILE_IN
, '<' . 'Makefile.1') or die "open input: $!";
104 open(MAKEFILE_OUT
, '>' . 'Makefile' ) or die "open output: $!";
107 # Uncomment the TTCN3_DIR in the makefile
108 # (which points to the TTCN3_DIR set in Makefile.cfg)
109 # Add the bin directory to the fromt of the PATH,
110 # so calls to xsd2ttcn without full path still find the "right" one.
111 while (<MAKEFILE_IN
>) {
114 # Don't bother editing these settings in the Makefile by hand
115 next if s
{^(PLATFORM
|CXX
|CPPFLAGS
|CXXFLAGS
|LDFLAGS
|OPENSSL_DIR
|XMLDIR
) [:+]?
=.*}
116 {# $1 Overridden by Makefile.cfg};
118 # remove Makefile.1 from OTHER_FILES (added by makefilegen due to -o)
119 next if s!(OTHER_FILES = .*) Makefile.1!$1!;
121 # Always put in location info; emit GCC-style messages
122 next if s/(COMPILER_FLAGS) =.*/$1 := /;
124 # RT2 flag is added into TTCN3_COMPILER by Makefile.regression
125 next if s!\$\(TTCN3_DIR\)/bin/compiler!\$(TTCN3_COMPILER)!;
127 # Include common settings for the regression test.
128 # It overrides local settings in the Makefile.
129 if ( /Rules for building the executable/ ) {
130 print MAKEFILE_OUT
<<MKF;
132 include ../../../Makefile.regression
133 export PATH+=:\$(TTCN3_DIR)/bin:
134 export LD_LIBRARY_PATH+=:\$(ABS_SRC):\$(TTCN3_DIR)/lib:
142 # Add the 'run' target and a rule to rebuild the Makefile
144 print MAKEFILE_OUT
<<MMM;
145 run: \$(TARGET) $cfgfile
148 Makefile: prj2mk.pl ../src/xmlTest.prj
149 \tmake -C .. bin/Makefile
153 close(MAKEFILE_OUT
) or die "close output: $!";
154 close(MAKEFILE_IN
) or die "close input: $!";
155 unlink('Makefile.1');
159 perl
-nwle
'print $1 if /path="([^"]+)"/' xmlTest
.prj
| xargs ttcn3_makefilegen
-gs
-e XmlTest
This page took 0.037184 seconds and 5 git commands to generate.