automake-patches
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[PATCH 2/8] Qt: cleanup, introduction of AM_MOCFLGS, libtool libraries s


From: Gergely Risko
Subject: [PATCH 2/8] Qt: cleanup, introduction of AM_MOCFLGS, libtool libraries support.
Date: Tue, 7 Jul 2009 14:27:53 +0300

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





reply via email to

[Prev in Thread] Current Thread [Next in Thread]