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";