'ansi' => '$',
'autodep' => '$',
+
# Name of the compiling variable (COMPILE).
'compiler' => '$',
# Content of the compiling variable.
'derived_autodep' => '$',
'extensions' => '@',
'flags' => '$',
+
# Name of the linking variable (LINK).
'linker' => '$',
# Content of the linking variable.
'link' => '$',
+
+ # Name of the linker variable (LD).
+ 'lder' => '$',
+ # Content of the linker variable ($(CC)).
+ 'ld' => '$',
+
# Flag to specify the output file (-o).
'output_flag' => '$',
# `pure' is `1' or `'. A `pure' language is one where, if
'ansi' => 1,
'autodep' => '',
'flags' => 'CFLAGS',
- 'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
'compiler' => 'COMPILE',
+ 'compile' => '$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)',
+ 'lder' => 'CCLD',
+ 'ld' => '$(CC)',
+ 'linker' => 'LINK',
+ 'link' => '$(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@',
'compile_flag' => '-c',
'extensions' => ['c'],
'_finish' => \&lang_c_finish);
'compiler' => 'CXXCOMPILE',
'compile_flag' => '-c',
'output_flag' => '-o',
+ 'lder' => 'CXXLD',
+ 'ld' => '$(CXX)',
'pure' => 1,
'extensions' => ['c++', 'cc', 'cpp', 'cxx', 'C'],
'_finish' => \&lang_cxx_finish);
'compiler' => 'OBJCCOMPILE',
'compile_flag' => '-c',
'output_flag' => '-o',
+ 'lder' => 'OBJCLD',
+ 'ld' => '$(OBJC)',
'pure' => 1,
'extensions' => ['m'],
'_finish' => \&lang_objc_finish);
'compiler' => 'F77COMPILE',
'compile_flag' => '-c',
'output_flag' => '-o',
+ 'lder' => 'F77LD',
+ 'ld' => '$(F77)',
'pure' => 1,
'extensions' => ['f', 'for', 'f90'],
'_finish' => \&lang_f77_finish);
'compiler' => 'GCJCOMPILE',
'compile_flag' => '-c',
'output_flag' => '-o',
+ 'lder' => 'GCJLD',
+ 'ld' => '$(GCJ)',
'pure' => 1,
'extensions' => ['java', 'class', 'zip', 'jar'],
'_finish' => \&lang_java_finish);
&define_variable ('depcomp', '');
}
- my ($ltcompile, $ltlink) = &libtool_compiler;
my %done;
# Is the c linker needed?
&define_configure_variable ($languages{'c'}->flags);
&define_compiler_variable ($languages{'c'});
}
- &define_variable ('CCLD', '$(CC)');
- &define_variable ('LINK',
- $ltlink . '$(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@');
+ define_linker_variable ($languages{'c'});
}
}
sub lang_cxx_finish
{
- my ($ltcompile, $ltlink) = &libtool_compiler;
-
- &define_variable ('CXXLD', '$(CXX)');
- &define_variable ('CXXLINK', $ltlink . $languages{'cxx'}->link);
+ define_linker_variable ($languages{'cxx'});
if (! defined $configure_vars{'CXX'})
{
# FIXME: this function can be called more than once. We should
# arrange for it to only do anything the first time through.
- my ($ltcompile, $ltlink) = &libtool_compiler;
-
- &define_variable ('F77LD', '$(F77)');
- &define_variable ('F77LINK', $ltlink . $languages{'f77'}->link);
+ define_linker_variable ($languages{'f77'});
if (! defined $configure_vars{'F77'})
{
sub lang_objc_finish
{
- my ($ltcompile, $ltlink) = &libtool_compiler;
-
- &define_variable ('OBJCLD', '$(OBJC)');
- &define_variable ('OBJCLINK', $ltlink . $languages{'objc'}->link);
+ define_linker_variable ($languages{'objc'});
if (! defined $configure_vars{'OBJC'})
{
sub lang_java_finish
{
- my ($ltcompile, $ltlink) = &libtool_compiler;
-
- &define_variable ('GCJLD', '$(GCJ)');
- &define_variable ('GCJLINK', $ltlink . $languages{'java'}->link);
+ define_linker_variable ($languages{'java'});
if (! defined $configure_vars{'GCJ'})
{
}
-# A helper which decides whether libtool is needed. Returns prefix
-# for compiler and linker.
-sub libtool_compiler
-{
- my ($ltcompile, $ltlink) = ('', '');
- if ($seen_libtool)
- {
- $ltcompile = '$(LIBTOOL) --mode=compile ';
- $ltlink = '$(LIBTOOL) --mode=link ';
- }
- return ($ltcompile, $ltlink);
-}
-
# Given a hash table of linker names, pick the name that has the most
# precedence. This is lame, but something has to have global
# knowledge in order to eliminate the conflict. Add more linkers as
if $seen_libtool;
}
+
+# define_linker_variable ($LANG)
+# ------------------------------
+# Define linker variables.
+sub define_linker_variable ($)
+{
+ my ($lang) = @_;
+
+ my ($var, $value) = ($lang->lder, $lang->ld);
+ # CCLD = $(CC).
+ &define_variable ($lang->lder, $lang->ld);
+ # CCLINK = $(CCLD) blah blah...
+ &define_variable ($lang->linker,
+ (($seen_libtool ? '$(LIBTOOL) --mode=link ' : '')
+ . $lang->link));
+}
+
################################################################
## ---------------- ##