📄 am_edit
字号:
foreach $source (@progsources) { my $suffix = $source; $suffix =~ s/^.*\.([^\.]+)$/$1/; $sourcelist{$suffix} .= "$source "; } foreach my $mocFile (keys (%globalmocs)) { my ($dir, $hFile, $cppFile) = split ("\035", $globalmocs{$mocFile}, 3); if (defined ($cppFile)) { $mocs .= " $mocFile.moc" if exists $shash{$cppFile}; } else { $sourcelist{$cxxsuffix} .= "$mocFile.moc.$cxxsuffix "; $moc_cpp_added = 1; } } foreach $suffix (keys %sourcelist) { # See if this file contains c++ code. (i.e., just check the file's suffix against c++ extensions) my $suffix_is_cxx = 0; if($suffix =~ /($cppExt)$/) { $cxxsuffix = $1; $suffix_is_cxx = 1; } my $mocfiles_in = ($suffix eq $cxxsuffix) && $moc_cpp_added; my @sourcelist = split(/[\034\s]+/, $sourcelist{$suffix}); if ((@sourcelist == 1 && !$mocfiles_in) || $suffix_is_cxx != 1 ) { # we support IDL on our own if ($suffix eq "skel" || $suffix =~ /^stub/ || $suffix =~ /^signals/ # obsolete, remove in KDE-4 || $suffix eq "h" || $suffix eq "ui" ) { next; } foreach $file (@sourcelist) { $file =~ s/\Q$suffix\E$//; $finalObjs{$program} .= $file; if ($program =~ /_la$/) { $finalObjs{$program} .= "lo "; } else { $finalObjs{$program} .= "o "; } } next; # suffix } my $source_deps = ""; foreach $source (@sourcelist) { if (-f $source) { $source_deps .= " \$(srcdir)/$source"; } else { $source_deps .= " $source"; } } $handling = "$program.all_$suffix.$suffix: \$(srcdir)/Makefile.in" . $source_deps . " " . join(' ', $mocs) . "\n"; $handling .= "\t\@echo 'creating $program.all_$suffix.$suffix ...'; \\\n"; $handling .= "\trm -f $program.all_$suffix.files $program.all_$suffix.final; \\\n"; $handling .= "\techo \"#define KDE_USE_FINAL 1\" >> $program.all_$suffix.final; \\\n"; $handling .= "\tfor file in " . $sourcelist{$suffix} . "; do \\\n"; $handling .= "\t echo \"#include \\\"\$\$file\\\"\" >> $program.all_$suffix.files; \\\n"; $handling .= "\t test ! -f \$\(srcdir\)/\$\$file || egrep '^#pragma +implementation' \$\(srcdir\)/\$\$file >> $program.all_$suffix.final; \\\n"; $handling .= "\tdone; \\\n"; $handling .= "\tcat $program.all_$suffix.final $program.all_$suffix.files > $program.all_$suffix.$suffix; \\\n"; $handling .= "\trm -f $program.all_$suffix.final $program.all_$suffix.files\n"; appendLines($handling); push(@final_names, "$program.all_$suffix.$suffix"); my $finalObj = "$program.all_$suffix."; if ($program =~ /_la$/) { $finalObj .= "lo"; } else { $finalObj .= "o"; } $finalObjs{$program} .= $finalObj . " "; } } if (!$kdeopts{"nofinal"} && @final_names >= 1) { # add clean-final target my $lines = "$cleantarget-final:\n"; $lines .= "\t-rm -f " . join(' ', @final_names) . "\n" if (@final_names); appendLines($lines); $target_adds{"$cleantarget-am"} .= "$cleantarget-final "; foreach $finalfile (@final_names) { $finalfile =~ s/\.[^.]*$/.P/; $dep_finals .= " \$(DEPDIR)/$finalfile"; } }}sub tag_KDEINIT(){ my @progs = (); my $ltlibs = ""; my $lookup = 'kdeinit_LTLIBRARIES\s*=[ \t]*(.*)'; if ($MakefileData =~ m/\n$lookup/) { @kdeinits = split(/[\034\s]+/, $1); my $lines = ""; foreach my $kdeinit (@kdeinits) { if ($kdeinit =~ m/\.la$/) { $kdeinit =~ s/\.la$//; push(@progs, $kdeinit); $lines .= "\n${kdeinit}.la.$cxxsuffix:\n"; $lines .= "\techo 'extern \"C\" int kdemain(int argc, char* argv[]);' > ${kdeinit}.la.$cxxsuffix; \\\n"; $lines .= "\techo 'int main(int argc, char* argv[]) { return kdemain(argc,argv); }' >> ${kdeinit}.la.$cxxsuffix\n"; $lines .= "\n${kdeinit}_dummy.$cxxsuffix:\n"; $lines .= "\t echo > ${kdeinit}_dummy.$cxxsuffix\n"; push(@cleanfiles, "${kdeinit}.la.$cxxsuffix"); push(@cleanfiles, "${kdeinit}_dummy.$cxxsuffix"); # add dependency $dep_files .= " \$(DEPDIR)/${kdeinit}.la.Po" if($dep_files !~/${kdeinit}.la.Po/ ); $dep_files .= " \$(DEPDIR)/${kdeinit}_dummy.Plo" if($dep_files !~/${kdeinit}_dummy.Plo/ ); # make library $lookup = $kdeinit . '_la_LIBADD\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { my $libadd = $1; substituteLine($lookup, "${kdeinit}_la_LIBADD = libkdeinit_${kdeinit}.la"); appendLines("libkdeinit_${kdeinit}_la_LIBADD = $libadd\n"); } appendLines("libkdeinit_${kdeinit}_la_LDFLAGS = \$(all_libraries)\n"); # add library dependencies $lookup = $kdeinit . '_la_DEPENDENCIES\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { my $libdeps = $1; substituteLine($lookup, "${kdeinit}_la_DEPENDENCIES = libkdeinit_${kdeinit}.la"); appendLines("libkdeinit_${kdeinit}_la_DEPENDENCIES = $libdeps\n"); } # make library objects $lookup = "am_${kdeinit}_la_OBJECTS" . '\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { my $libobjects = $1; substituteLine($lookup, "am_${kdeinit}_la_OBJECTS = ${kdeinit}_dummy.lo"); appendLines("am_libkdeinit_${kdeinit}_la_OBJECTS = $libobjects\n"); my $prog = "libkdeinit_${kdeinit}_la"; push(@programs, $prog); $realObjs{$prog} = $libobjects; $realname{$prog} = "libkdeinit_${kdeinit}.la"; } $target_adds{"libkdeinit_${kdeinit}.la"} = "\$(libkdeinit_${kdeinit}_la_OBJECTS) \$(libkdeinit_${kdeinit}_la_DEPENDENCIES)\n" . "\t\$(CXXLINK) -rpath \$(libdir) \$(libkdeinit_${kdeinit}_la_LDFLAGS) ". "\$(libkdeinit_${kdeinit}_la_OBJECTS) " . "\$(libkdeinit_${kdeinit}_la_LIBADD) " . "\$(LIBS)\n"; # make libkdeinit sources $lookup = $kdeinit . '_la_SOURCES\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { my $srces = $1; $sources_changed{"libkdeinit_${kdeinit}_la"} = 1; $sources{"libkdeinit_${kdeinit}_la"} = $srces; } # make libkdeinit metasources $lookup = $kdeinit . '_la_METASOURCES\s*=[ \t]*(.*)'; substituteLine($lookup, "libkdeinit_${kdeinit}_la_METASOURCES = $1") if($MakefileData =~ m/\n$lookup/);=cut # make binary sources $lookup = $kdeinit. '_SOURCES\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { substituteLine($lookup, "${kdeinit}_SOURCES = ${kdeinit}.la.$cxxsuffix"); $lookup = 'SOURCES\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { my $srces = $1; $srces =~ s/\b$kdeinit\.c\b/\$(${kdeinit}_SOURCES)/; $srces =~ s/\$\(${kdeinit}_la_SOURCES\)/\$(libkdeinit_${kdeinit}_la_SOURCES)/; substituteLine($lookup, "SOURCES = $srces"); } $lookup = 'DIST_SOURCES\s*=[ \t](.*)'; if($MakefileData =~ m/\n$lookup/) { my $srces = $1; $srces =~ s/\b$kdeinit\.c\b/\$(${kdeinit}_SOURCES)/; $srces =~ s/\$\(${kdeinit}_la_SOURCES\)/\$(libkdeinit_${kdeinit}_la_SOURCES)/; substituteLine($lookup, "DIST_SOURCES = $srces"); } } # make binary objects / libs $lookup = $kdeinit . '_OBJECTS\s*=[ \t]*.*'; if($MakefileData =~ m/\n$lookup/) { $realObjs{$kdeinit} = "${kdeinit}.la.\$(OBJEXT)"; substituteLine("${kdeinit}_LDFLAGS\\s*=.*", "${kdeinit}_LDFLAGS = \$(all_libraries)"); substituteLine("${kdeinit}_LDADD\\s*=.*", "${kdeinit}_LDADD = libkdeinit_${kdeinit}.la"); substituteLine("${kdeinit}_DEPENDENCIES\\s*=.*", "${kdeinit}_DEPENDENCIES = libkdeinit_${kdeinit}.la"); }=cut # add binary push(@programs, $kdeinit); $realObjs{$kdeinit} = "${kdeinit}.la.\$(OBJEXT)"; $realname{$kdeinit} = $kdeinit; $sources{$kdeinit} = "${kdeinit}.la.$cxxsuffix"; $lines .= "${kdeinit}_LDFLAGS = \$(all_libraries)\n"; $lines .= "${kdeinit}_LDADD = libkdeinit_${kdeinit}.la\n"; $lines .= "${kdeinit}_DEPENDENCIES = libkdeinit_${kdeinit}.la\n"; $target_adds{"${kdeinit}\$(EXEEXT)"} = "\$(${kdeinit}_OBJECTS) \$(${kdeinit}_DEPENDENCIES)\n" . "\t\@rm -f ${kdeinit}\$(EXEEXT)\n" . "\t\$(CXXLINK) \$(${kdeinit}_LDFLAGS) \$(${kdeinit}_OBJECTS) \$(${kdeinit}_LDADD) \$(LIBS)\n"; $ltlibs .= " libkdeinit_${kdeinit}.la"; } } appendLines($lines); # add libkdeinit target $lookup = 'lib_LTLIBRARIES\s*=[ \t]*(.*)'; if($MakefileData =~ m/\n$lookup/) { substituteLine($lookup, "lib_LTLIBRARIES = $1 $ltlibs"); } else { print STDERR "Error: lib_LTLIBRARIES missing in $printname (required for kdeinit_LTLIBRARIES).\n"; $errorflag = 1; } } if($#progs >= 0) { if($MakefileData !~ m/\nbin_PROGRAMS\s*=/) { print STDERR "Error: bin_PROGRAMS missing in $printname (required for bin_PROGRAMS).\n"; $errorflag = 1; } else { # add our new progs to SOURCES, DIST_SOURCES and bin_PROGRAMS my $progsources = ""; my $progexes = ""; foreach my $p (@progs) { $progsources .= "\$(${p}_SOURCES) "; $progexes .= "${p}\$(EXEEXT) "; } $lookup = 'SOURCES\s*=[ \t]*(.*)'; if($MakefileData =~ /\n$lookup/) { substituteLine($lookup, "SOURCES = $1 $progsources"); } $lookup = 'DIST_SOURCES\s*=[ \t]*(.*)'; if($MakefileData =~ /\n$lookup/) { substituteLine($lookup, "DIST_SOURCES = $1 $progsources"); } # bin_PROGRAMS is complicated, as it exists twice, so we do a little # magic trick here $lookup = 'PROGRAMS\s*=[ \t]*(.*)'; if ($MakefileData =~ /\n$lookup/) { substituteLine($lookup, "bin_PROGRAMS += $progexes\nPROGRAMS = $1"); } } }}#-----------------------------------------------------------------------------sub tag_COMPILE_FIRST(){ foreach $program (@programs) { my $lookup = "$program" . '_COMPILE_FIRST\s*=[ \t]*(.*)'; if ($MakefileData =~ m/\n$lookup\n/) { my $compilefirst_str = $1; my @compilefirst = split(/[\034\s]+/, $compilefirst_str); my @progsources = split(/[\034\s]+/, $sources{$program}); my %donesources = (); foreach $source (@progsources) { my @deps = (); my $sdeps = ""; if (-f $source) { $sdeps = "\$(srcdir)/$source"; } else { $sdeps = "$source"; } foreach $depend (@compilefirst) { next if ($source eq $depend); # avoid cyclic dependencies next if defined($donesources{$depend}); push @deps, $depend; } $target_adds{$sdeps} = join(' ', @deps) if (@deps); $donesources{$source} = 1; } } }}#-----------------------------------------------------------------------------# Organises the list of headers that we'll use to produce moc files# from.sub tag_METASOURCES (){ local @newObs = (); # here we add to create object files local @depend = (); # here we add to create moc files local $mocExt = ".moc"; local %mocFiles = (); my $line = ""; my $postEqual = ""; my $lookup; my $found = ""; if ($metasourceTags > 1) { $lookup = $program . '_METASOURCES\s*=\s*(.*)'; return 1 if ($MakefileData !~ /\n($lookup)\n/); $found = $1; } else { $lookup = $program . '_METASOURCES\s*=\s*(.*)'; if ($MakefileData !~ /\n($lookup)\n/) { $lookup = 'METASOURCES\s*=\s*(.*)'; return 1 if ($MakefileData !~ /\n($lookup)\n/); $found = $1; $metasourceTags = 0; # we can use the general target only once } else { $found = $1; } } print STDOUT "METASOURCE processing <$found>)\n" if ($verbose); $postEqual = $found; $postEqual =~ s/[^=]*=//; removeLine ($lookup, $found); # Always find the header files that could be used to "moc" return 1 if (findMocCandidates ()); if ($postEqual =~ /AUTO\s*(\S*)|USE_AUTOMOC\s*(\S*)/) { print STDERR "$printname: the argument for AUTO|USE_AUTOMOC is obsolete" if ($+); $mocExt = ".moc.$cxxsuffix"; $haveAutomocTag = 1; } else { # Not automoc so read the list of files supplied which # should be .moc files. $postEqual =~ tr/\034/ /; # prune out extra headers - This also checks to make sure that # the list is valid. pruneMocCandidates ($postEqual); } checkMocCandidates (); if (@newObs) { my $ext = ($program =~ /_la$/) ? ".moc.lo " : ".moc.o "; $realObjs{$program} .= "\034" . join ($ext, @newObs) . $ext; $dependmocs{$program} = join (".moc.$cxxsuffix " , @newObs) . ".moc.$cxxsuffix"; foreach $file (@newObs) { $dep_files .= " \$(DEPDIR)/$file.moc.P" if($dep_files !~/$file.moc.P/); }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -