[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 1/8] Qt integration
From: |
Gergely Risko |
Subject: |
[PATCH 1/8] Qt integration |
Date: |
Tue, 7 Jul 2009 11:46:50 +0300 |
---
automake.in | 86 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 85 insertions(+), 1 deletions(-)
diff --git a/automake.in b/automake.in
index bab8c42..415d883 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' => sub { });
+ '_finish' => \&lang_header_finish);
# Vala
register_language ('name' => 'vala',
@@ -2265,6 +2265,38 @@ sub handle_source_transform ($$$$%)
else
{
@keys = map { '$(' . $_ . $one_file . '_OBJECTS)' } @keys;
+ # handle target_QTSOURCES variable:
+ my $var = set_seen $one_file . '_QTSOURCES';
+ if ($var)
+ {
+ my @mocobjects = ();
+ 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$//)
+ {
+ # add %.h files as %.o to target_QTOBJECTS
+ push @mocobjects, 'moc_' . $file . '.$(OBJEXT)' ;
+ # also add moc resulting source file to mostlyclean
+ $compile_clean_files{"moc_$file.cpp"} = MOSTLY_CLEAN;
+ }
+ else
+ {
+ $file =~ s/\.[^.]+$//;
+ # also add moc resulting source file to mostlyclean
+ $compile_clean_files{"$file.moc"} = MOSTLY_CLEAN;
+ }
+ }
+ # if there were .h files, then add target_QTOBJECTS to
+ # target_OBJECTS
+ if (@mocobjects)
+ {
+ my $where = $var->rdef (TRUE)->location;
+ define_pretty_variable ($one_file . '_QTOBJECTS', TRUE, $where,
@mocobjects);
+ push @keys, '$(' . $one_file . '_QTOBJECTS)' if $var;
+ }
+ }
define_pretty_variable ($one_file . '_OBJECTS', TRUE, $where, @keys);
}
@@ -5930,6 +5962,58 @@ 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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH 1/8] Qt integration,
Gergely Risko <=