CNF_ASFLAGS={- join('', $target{asflags} || (),
@{$config{asflags}}) -}
-CNF_DEFINES={- our $defines2 = join('', map { ",$_" } @{$target{defines}},
- @{$config{defines}}) -}
+CNF_DEFINES={- our $defines2 = join('', (map { ",$_" } @{$target{defines}},
+ @{$config{defines}}),
+ "'extradefines'") -}
CNF_INCLUDES={- our $includes2 = join(',', @{$target{includes}},
@{$config{includes}}) -}
CNF_CPPFLAGS={- our $cppflags2 = join('', $target{cppflags} || (),
if ($args{src} =~ /\.ld$/) {
(my $target = $args{src}) =~ s/\.ld$/.OPT/;
my $mkdef = sourcefile('util', 'mkdef.pl');
+ my $ord_ver = $args{intent} eq 'lib' ? ' --version $(VERSION)' : '';
+ my $ord_name =
+ $args{generator}->[1] || basename($args{product}, '.EXE');
+ my $case_insensitive =
+ $target{$args{intent}.'_cflags'} =~ m|/NAMES=[^/]*AS_IS|i
+ ? '' : ' --case-insensitive';
return <<"EOF";
-$target : $args{generator}->[0] $deps
- \$(PERL) $mkdef $args{generator}->[1] "VMS" > $target
+$target : $args{generator}->[0] $deps $mkdef
+ \$(PERL) $mkdef$ord_ver --ordinals $args{generator}->[0] --name $ord_name "--OS" "VMS"$case_insensitive > $target
EOF
} elsif ($target !~ /\.[sS]$/) {
my $target = $args{src};
@{$args{incs}});
my $incs_on = join("\n\t\@ ", @{$incs_cmds[0]}) || '!';
my $incs_off = join("\n\t\@ ", @{$incs_cmds[1]}) || '!';
+ my $defs = join("", map { ",".$_ } @{$args{defs}});
if (defined($generator)) {
# If the target is named foo.S in build.info, we want to
# end up generating foo.s in two steps.
$target : $args{generator}->[0] $deps
$generator \$\@-S
\@ $incs_on
+ \@ extradefines = "$defs"
PIPE \$(CPP) $cppflags \$\@-S | -
\$(PERL) -ne "/^#(\\s*line)?\\s*[0-9]+\\s+""/ or print" > \$\@-i
+ \@ DELETE/SYMBOL/LOCAL extradefines
\@ $incs_off
RENAME \$\@-i \$\@
DELETE \$\@-S
return <<"EOF";
$target : $args{generator}->[0] $deps
\@ $incs_on
+ \@ extradefines = "$defs"
SHOW SYMBOL qual_includes
PIPE \$(CPP) $cppflags $args{generator}->[0] | -
\$(PERL) "-ne" "/^#(\\s*line)?\\s*[0-9]+\\s+""/ or print" > \$\@
+ \@ DELETE/SYMBOL/LOCAL extradefines
\@ $incs_off
EOF
}
lib => '$(LIB_CPPFLAGS)',
dso => '$(DSO_CPPFLAGS)',
bin => '$(BIN_CPPFLAGS)' } -> {$args{intent}};
+ my $defs = join("", map { ",".$_ } @{$args{defs}});
my @incs_cmds = includes({ shlib => '$(LIB_INCLUDES)',
lib => '$(LIB_INCLUDES)',
${before}
SET DEFAULT $forward
\@ $incs_on
+ \@ extradefines = "$defs"
\$(CC) ${cflags}${depbuild} /OBJECT=${objd}${objn}.OBJ /REPOSITORY=$backward $srcs
+ \@ DELETE/SYMBOL/LOCAL extradefines
\@ $incs_off
SET DEFAULT $backward
${after}
grep { $_ =~ m|\.o$| }
@{$args{objs}};
my @defs = map { (my $x = $_) =~ s|\.ld$|.OPT|; $x }
- grep { $_ =~ /\.ld$/ }
+ grep { $_ =~ m|\.ld$| }
@{$args{objs}};
my @deps = compute_lib_depends(@{$args{deps}});
die "More than one symbol vector" if scalar @defs > 1;
my $libd = dirname($lib);
my $libn = basename($lib);
(my $libn_nolib = $libn) =~ s/^lib//;
- my @objs = map { (my $x = $_) =~ s|\.o$|.OBJ|; $x } @{$args{objs}};
+ my @objs = map { (my $x = $_) =~ s|\.o$|.OBJ|; $x }
+ grep { $_ =~ m|\.o$| }
+ @{$args{objs}};
+ my @defs = map { (my $x = $_) =~ s|\.ld$|.OPT|; $x }
+ grep { $_ =~ m|\.ld$| }
+ @{$args{objs}};
my @deps = compute_lib_depends(@{$args{deps}});
- my $deps = join(", -\n\t\t", @objs, @deps);
+ my $deps = join(", -\n\t\t", @objs, @defs, @deps);
+ die "More than one symbol vector" if scalar @defs > 1;
my $shlib_target = $disabled{shared} ? "" : $target{shared_target};
- my $engine_opt = abs2rel(rel2abs(catfile($config{sourcedir},
- "VMS", "engine.opt")),
- rel2abs($config{builddir}));
# The "[]" hack is because in .OPT files, each line inherits the
# previous line's file spec as default, so if no directory spec
# is present in the current line and the previous line has one that
|| "\@ !";
return <<"EOF"
$lib.EXE : $deps
- OPEN/WRITE/SHARE=READ OPT_FILE $lib.OPT
- TYPE $engine_opt /OUTPUT=OPT_FILE:
+ OPEN/WRITE/SHARE=READ OPT_FILE $lib-components.OPT
$write_opt1
$write_opt2
CLOSE OPT_FILE
- LINK \$(DSO_LDFLAGS)/SHARE=\$\@ $lib.OPT/OPT \$(DSO_EX_LIBS)
+ LINK \$(DSO_LDFLAGS)/SHARE=\$\@ $defs[0]/OPT,-
+ $lib-components.OPT/OPT \$(DSO_EX_LIBS)
- PURGE $lib.EXE,$lib.OPT,$lib.MAP
EOF
. ($config{target} =~ m|alpha| ? "" : <<"EOF"