Added make_progs tool to generate the programs makefile. Create symlinks for all the Winelib apps.
diff --git a/programs/Makefile.in b/programs/Makefile.in index 904755c..ce6ec71 100644 --- a/programs/Makefile.in +++ b/programs/Makefile.in
@@ -1,3 +1,5 @@ +# Automatically generated by make_progs; DO NOT EDIT!! + TOPSRCDIR = @top_srcdir@ TOPOBJDIR = .. SRCDIR = @srcdir@ @@ -59,7 +61,6 @@ winver # Programs to install in bin directory -# We don't install everything to avoid polluting /usr/bin too much INSTALLPROGS = \ notepad \ progman \ @@ -78,13 +79,34 @@ # Symlinks to apps that we want to run from inside the source tree SYMLINKS = \ + aviinfo.exe \ + aviplay.exe \ + clock.exe \ + cmdlgtst.exe \ + control.exe \ + expand.exe \ + icinfo.exe \ + notepad.exe \ + progman.exe \ + regedit.exe \ + regsvr32.exe \ rpcss.exe \ + rundll32.exe \ + start.exe \ + uninstaller.exe \ + view.exe \ wcmd.exe \ + wineboot.exe \ + winecfg.exe \ wineconsole.exe \ winedbg.exe \ + winefile.exe \ winemenubuilder.exe \ + winemine.exe \ + winepath.exe \ winevdm.exe \ - winhelp.exe + winhelp.exe \ + winver.exe @MAKE_RULES@ @@ -129,32 +151,117 @@ # Rules for symlinks +aviinfo.exe$(DLLEXT): avitools/aviinfo.exe$(DLLEXT) + $(RM) $@ && $(LN_S) avitools/aviinfo.exe$(DLLEXT) $@ + +aviplay.exe$(DLLEXT): avitools/aviplay.exe$(DLLEXT) + $(RM) $@ && $(LN_S) avitools/aviplay.exe$(DLLEXT) $@ + +clock.exe$(DLLEXT): clock/clock.exe$(DLLEXT) + $(RM) $@ && $(LN_S) clock/clock.exe$(DLLEXT) $@ + +cmdlgtst.exe$(DLLEXT): cmdlgtst/cmdlgtst.exe$(DLLEXT) + $(RM) $@ && $(LN_S) cmdlgtst/cmdlgtst.exe$(DLLEXT) $@ + +control.exe$(DLLEXT): control/control.exe$(DLLEXT) + $(RM) $@ && $(LN_S) control/control.exe$(DLLEXT) $@ + +expand.exe$(DLLEXT): expand/expand.exe$(DLLEXT) + $(RM) $@ && $(LN_S) expand/expand.exe$(DLLEXT) $@ + +icinfo.exe$(DLLEXT): avitools/icinfo.exe$(DLLEXT) + $(RM) $@ && $(LN_S) avitools/icinfo.exe$(DLLEXT) $@ + +notepad.exe$(DLLEXT): notepad/notepad.exe$(DLLEXT) + $(RM) $@ && $(LN_S) notepad/notepad.exe$(DLLEXT) $@ + +progman.exe$(DLLEXT): progman/progman.exe$(DLLEXT) + $(RM) $@ && $(LN_S) progman/progman.exe$(DLLEXT) $@ + +regedit.exe$(DLLEXT): regedit/regedit.exe$(DLLEXT) + $(RM) $@ && $(LN_S) regedit/regedit.exe$(DLLEXT) $@ + +regsvr32.exe$(DLLEXT): regsvr32/regsvr32.exe$(DLLEXT) + $(RM) $@ && $(LN_S) regsvr32/regsvr32.exe$(DLLEXT) $@ + rpcss.exe$(DLLEXT): rpcss/rpcss.exe$(DLLEXT) $(RM) $@ && $(LN_S) rpcss/rpcss.exe$(DLLEXT) $@ +rundll32.exe$(DLLEXT): rundll32/rundll32.exe$(DLLEXT) + $(RM) $@ && $(LN_S) rundll32/rundll32.exe$(DLLEXT) $@ + +start.exe$(DLLEXT): start/start.exe$(DLLEXT) + $(RM) $@ && $(LN_S) start/start.exe$(DLLEXT) $@ + +uninstaller.exe$(DLLEXT): uninstaller/uninstaller.exe$(DLLEXT) + $(RM) $@ && $(LN_S) uninstaller/uninstaller.exe$(DLLEXT) $@ + +view.exe$(DLLEXT): view/view.exe$(DLLEXT) + $(RM) $@ && $(LN_S) view/view.exe$(DLLEXT) $@ + wcmd.exe$(DLLEXT): wcmd/wcmd.exe$(DLLEXT) $(RM) $@ && $(LN_S) wcmd/wcmd.exe$(DLLEXT) $@ +wineboot.exe$(DLLEXT): wineboot/wineboot.exe$(DLLEXT) + $(RM) $@ && $(LN_S) wineboot/wineboot.exe$(DLLEXT) $@ + +winecfg.exe$(DLLEXT): winecfg/winecfg.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winecfg/winecfg.exe$(DLLEXT) $@ + wineconsole.exe$(DLLEXT): wineconsole/wineconsole.exe$(DLLEXT) $(RM) $@ && $(LN_S) wineconsole/wineconsole.exe$(DLLEXT) $@ winedbg.exe$(DLLEXT): winedbg/winedbg.exe$(DLLEXT) $(RM) $@ && $(LN_S) winedbg/winedbg.exe$(DLLEXT) $@ +winefile.exe$(DLLEXT): winefile/winefile.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winefile/winefile.exe$(DLLEXT) $@ + winemenubuilder.exe$(DLLEXT): winemenubuilder/winemenubuilder.exe$(DLLEXT) $(RM) $@ && $(LN_S) winemenubuilder/winemenubuilder.exe$(DLLEXT) $@ +winemine.exe$(DLLEXT): winemine/winemine.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winemine/winemine.exe$(DLLEXT) $@ + +winepath.exe$(DLLEXT): winepath/winepath.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winepath/winepath.exe$(DLLEXT) $@ + winevdm.exe$(DLLEXT): winevdm/winevdm.exe$(DLLEXT) $(RM) $@ && $(LN_S) winevdm/winevdm.exe$(DLLEXT) $@ winhelp.exe$(DLLEXT): winhelp/winhelp.exe$(DLLEXT) $(RM) $@ && $(LN_S) winhelp/winhelp.exe$(DLLEXT) $@ +winver.exe$(DLLEXT): winver/winver.exe$(DLLEXT) + $(RM) $@ && $(LN_S) winver/winver.exe$(DLLEXT) $@ + +avitools/aviinfo.exe$(DLLEXT): avitools +avitools/aviplay.exe$(DLLEXT): avitools +clock/clock.exe$(DLLEXT): clock +cmdlgtst/cmdlgtst.exe$(DLLEXT): cmdlgtst +control/control.exe$(DLLEXT): control +expand/expand.exe$(DLLEXT): expand +avitools/icinfo.exe$(DLLEXT): avitools +notepad/notepad.exe$(DLLEXT): notepad +progman/progman.exe$(DLLEXT): progman +regedit/regedit.exe$(DLLEXT): regedit +regsvr32/regsvr32.exe$(DLLEXT): regsvr32 +rpcss/rpcss.exe$(DLLEXT): rpcss +rundll32/rundll32.exe$(DLLEXT): rundll32 +start/start.exe$(DLLEXT): start +uninstaller/uninstaller.exe$(DLLEXT): uninstaller +view/view.exe$(DLLEXT): view wcmd/wcmd.exe$(DLLEXT): wcmd +wineboot/wineboot.exe$(DLLEXT): wineboot +winecfg/winecfg.exe$(DLLEXT): winecfg wineconsole/wineconsole.exe$(DLLEXT): wineconsole winedbg/winedbg.exe$(DLLEXT): winedbg +winefile/winefile.exe$(DLLEXT): winefile winemenubuilder/winemenubuilder.exe$(DLLEXT): winemenubuilder +winemine/winemine.exe$(DLLEXT): winemine +winepath/winepath.exe$(DLLEXT): winepath winevdm/winevdm.exe$(DLLEXT): winevdm winhelp/winhelp.exe$(DLLEXT): winhelp +winver/winver.exe$(DLLEXT): winver ### Dependencies:
diff --git a/programs/make_progs b/programs/make_progs new file mode 100755 index 0000000..1c786c6 --- /dev/null +++ b/programs/make_progs
@@ -0,0 +1,212 @@ +#!/usr/bin/perl -w +# +# Update the dependencies in the programs main Makefile.in. +# Must be run in the programs/ directory of the Wine tree. +# +# Copyright 2003 Alexandre Julliard +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +use strict; + +my $makefiles = `find . -name Makefile.in -print`; + +my %directories = (); + +# Programs that we want to install in the bin directory too +my %bin_install = +( + "notepad" => 1, + "progman" => 1, + "regedit" => 1, + "regsvr32" => 1, + "uninstaller" => 1, + "wcmd" => 1, + "wineboot" => 1, + "winecfg" => 1, + "wineconsole" => 1, + "winedbg" => 1, + "winefile" => 1, + "winemine" => 1, + "winepath" => 1, + "winhelp" => 1, +); + +# Programs that we don't want to install at all +my %dont_install = +( + "cmdlgtst" => 1, + "view" => 1, +); + +foreach my $i (split(/\s/,$makefiles)) +{ + my $module; + + next if $i =~ /\/tests\/Makefile.in/; + + open MAKE,$i; + + $module = undef; + while (<MAKE>) + { + chop; + # hack to disable this program... the MKPROG_SKIP comment must appear + # at the very top of the Makefile.in + last if (/^\#\s*MKPROG_SKIP/); + + if (/^MODULE\s*=\s*([a-zA-Z0-9_.]+)/) + { + $module = $1; + next if ($module eq "none"); + ($directories{$module} = $i) =~ s/^\.\/(.*)\/[^\/]+$/$1/; + last; + } + if (/^PROGRAMS\s*=((\s*[a-zA-Z0-9_.]+)+)/) + { + my @programs = split / /, $1; + foreach my $prog (@programs) + { + next unless $prog =~ /\.exe$/; + ($directories{$prog} = $i) =~ s/^\.\/(.*)\/[^\/]+$/$1/; + } + last; + } + } + close MAKE; +} + +open NEWMAKE,">Makefile.in.new" or die "cannot create Makefile.in.new"; + +################################################################ +# makefile header + +print NEWMAKE <<EOF; +# Automatically generated by make_progs; DO NOT EDIT!! + +TOPSRCDIR = \@top_srcdir\@ +TOPOBJDIR = .. +SRCDIR = \@srcdir\@ +VPATH = \@srcdir\@ + +EOF + +################################################################ +# output the subdirs list + +# get rid of duplicates +my %alldirs = (); +foreach my $dir (sort values %directories) { $alldirs{$dir} = 1; } + +print NEWMAKE "SUBDIRS ="; +foreach my $dir (sort keys %alldirs) +{ + printf NEWMAKE " \\\n\t%s", $dir; +} + +print NEWMAKE "\n\n# Sub-directories to run make install into\nINSTALLSUBDIRS ="; +foreach my $dir (sort keys %alldirs) +{ + next if $dont_install{$dir}; + printf NEWMAKE " \\\n\t%s", $dir; +} + +print NEWMAKE "\n\n# Programs to install in bin directory\nINSTALLPROGS ="; +foreach my $dir (sort keys %alldirs) +{ + printf NEWMAKE " \\\n\t%s", $dir if $bin_install{$dir}; +} + +print NEWMAKE "\n\n# Symlinks to apps that we want to run from inside the source tree\nSYMLINKS ="; +foreach my $mod (sort keys %directories) +{ + printf NEWMAKE " \\\n\t%s", $mod; +} + +################################################################ +# output the build and install targets + +print NEWMAKE <<EOF; + + +\@MAKE_RULES\@ + +all: wineapploader winelauncher \$(SUBDIRS) \$(SYMLINKS:%=%\$(DLLEXT)) + +wineapploader: wineapploader.in + sed -e 's,\@bindir\\\@,\$(bindir),g' \$(SRCDIR)/wineapploader.in >\$\@ || (\$(RM) \$\@ && false) + +winelauncher: winelauncher.in + sed -e 's,\@bindir\\\@,\$(bindir),g' -e 's,\@libdir\\\@,\$(libdir),g' -e 's,\@dlldir\\\@,\$(dlldir),g' \$(SRCDIR)/winelauncher.in >\$\@ || (\$(RM) \$\@ && false) + +# Rules for installation + +.PHONY: install-apploader install-progs install-progs.so \$(INSTALLPROGS:%=%/__installprog__) + +install-apploader: wineapploader dummy + \$(MKINSTALLDIRS) \$(bindir) + \$(INSTALL_SCRIPT) wineapploader \$(bindir)/wineapploader + +\$(INSTALLPROGS:%=%/__installprog__): install-apploader + \$(RM) \$(bindir)/`dirname \$\@` && \$(LN) \$(bindir)/wineapploader \$(bindir)/`dirname \$\@` + +install-progs.so: \$(INSTALLPROGS:%=%/__installprog__) + \$(RM) \$(bindir)/wineapploader + +install-progs: # nothing to do here + +install:: winelauncher install-progs\$(DLLEXT) + \$(MKINSTALLDIRS) \$(bindir) + \$(INSTALL_SCRIPT) winelauncher \$(bindir)/winelauncher + +uninstall:: + \$(RM) \$(bindir)/wineapploader \$(bindir)/winelauncher \$(INSTALLPROGS:%=\$(bindir)/%) + -rmdir \$(dlldir) + +clean:: + \$(RM) wineapploader winelauncher \$(SYMLINKS) + +# Rules for testing + +check test:: \$(SUBDIRS:%=%/__test__) + +EOF + +################################################################ +# output the symlinks rules + +print NEWMAKE "# Rules for symlinks\n\n"; + +foreach my $mod (sort keys %directories) +{ + printf NEWMAKE "%s\$(DLLEXT)", $mod; + printf NEWMAKE ": %s/%s\$(DLLEXT)\n", $directories{$mod}, $mod; + printf NEWMAKE "\t\$(RM) \$@ && \$(LN_S) %s/%s\$(DLLEXT) \$@\n\n", $directories{$mod}, $mod; +} + +foreach my $mod (sort keys %directories) +{ + printf NEWMAKE "%s/%s\$(DLLEXT): %s\n", $directories{$mod}, $mod, $directories{$mod}; +} + +################################################################ +# makefile trailer + +print NEWMAKE "\n### Dependencies:\n"; + +close NEWMAKE; +rename "Makefile.in.new", "Makefile.in"; +printf "Successfully updated Makefile.in\n";