Cleanup: merged output rule creation into handle_source_transform, so this branch only modifies this, and this way we can get rid of lang_header_finish. --- automake.in | 73 ++++++++++++++-------------------------------------------- 1 files changed, 18 insertions(+), 55 deletions(-)
diff --git a/automake.in b/automake.in index 415d883..abfb539 100755 --- a/automake.in +++ b/automake.in @@ -809,7 +809,7 @@ register_language ('name' => 'header', # No output. 'output_extensions' => sub { return () }, # Nothing to do. - '_finish' => \&lang_header_finish); + '_finish' => sub { }); # Vala register_language ('name' => 'vala', @@ -2269,6 +2269,8 @@ sub handle_source_transform ($$$$%) my $var = set_seen $one_file . '_QTSOURCES'; if ($var) { + # check that all of the qtsources are defined as sources + my @mocobjects = (); foreach my $file ($var->value_as_list_recursive) { @@ -2276,16 +2278,29 @@ sub handle_source_transform ($$$$%) # (e.g. the extension list from the language 'header') if ($file =~ s/\.h$//) { - # add %.h files as %.o to target_QTOBJECTS - push @mocobjects, 'moc_' . $file . '.$(OBJEXT)' ; + # add %.h files as moc_%.o to target_QTOBJECTS + push @mocobjects, 'moc_' . $file . + ( $transform{'LIBTOOL'} ? '.lo' : '.$(OBJEXT)' ); # also add moc resulting source file to mostlyclean $compile_clean_files{"moc_$file.cpp"} = MOSTLY_CLEAN; + # and create a make rule for the actual moccing + # moc_foo.cpp: foo.h + # $(MOC) -o $@ $< + $output_rules .= "moc_$file.cpp: \$(srcdir)/$file.h\n". + "\t\$(MOC) \$(AM_MOCFLAGS) -o \$\@ \$<\n"; } else { + my $origname = $file; $file =~ s/\.[^.]+$//; # also add moc resulting source file to mostlyclean $compile_clean_files{"$file.moc"} = MOSTLY_CLEAN; + # make rule for the moccing + # foo.moc: foo.cpp + # $(MOC) -o $@ $< + $file =~ s/\.[^.]+$//; + $output_rules .= "$file.moc: \$(srcdir)/$origname\n". + "\t\$(MOC) \$(AM_MOCFLAGS) -o \$\@ \$<\n"; } } # if there were .h files, then add target_QTOBJECTS to @@ -5962,58 +5977,6 @@ sub lang_c_finish } } -sub lang_header_finish_target ($$) -{ - my ($self, $name) = @_; - - my $derived = canonicalize ($name); - - # handle target_QTSOURCES variable: create rules for each source - # in the form of - # moc_foo.cpp: foo.h - # $(MOC) -o $@ $< - # for headers and - # foo.moc: foo.cpp - # $(MOC) -o $@ $< - # for non-header files. - my $var = var ($derived . '_QTSOURCES'); - if ($var) - { - # FIXME: subdir-objects handling - foreach my $file ($var->value_as_list_recursive) - { - # FIXME: instead of .h use something more general - # (e.g. the extension list from the language 'header') - if ($file =~ s/\.h$//) - { - $output_rules .= "moc_$file.cpp: \$(srcdir)/$file.h\n". - "\t\$(MOC) -o \$\@ \$<\n"; - } - else - { - my $origname = $file; - $file =~ s/\.[^.]+$//; - $output_rules .= "$file.moc: \$(srcdir)/$origname\n". - "\t\$(MOC) -o \$\@ \$<\n"; - } - } - } -} - -sub lang_header_finish -{ - my ($self) = @_; - foreach my $prog (keys %known_programs) - { - lang_header_finish_target ($self, $prog); - } - - while (my ($name) = each %known_libraries) - { - lang_header_finish_target ($self, $name); - } -} - sub lang_vala_finish_target ($$) { my ($self, $name) = @_; -- 1.6.3.3