Improved support for Makefiles that need to recurse in subdirectories.
diff --git a/Make.rules.in b/Make.rules.in
index b488fcd..1a9e54b 100644
--- a/Make.rules.in
+++ b/Make.rules.in
@@ -1,19 +1,23 @@
# Global rules shared by all makefiles -*-Makefile-*-
#
-# Each individual makefile should define the following variables:
+# Each individual makefile must define the following variables:
# TOPSRCDIR : top-level source directory
# TOPOBJDIR : top-level object directory
# SRCDIR : source directory for this module
# MODULE : name of the module being built
-# C_SRCS : C sources for the module (optional)
-# ASM_SRCS : assembly sources (optional)
-# GEN_ASM_SRCS : generated assembly sources (optional)
-# RC_SRCS : resource source files (optional)
-# SPEC_SRCS : interface definition files (optional)
-# GLUE : C sources for which glue code needs to be generated (optional)
-# EXTRA_SRCS : extra source files for make depend (optional)
-# EXTRA_OBJS : extra object files (optional)
-# WRCEXTRA : extra wrc flags (e.g. '-p _SysRes') (optional)
+#
+# Each individual makefile may define the following additional variables:
+# C_SRCS : C sources for the module
+# ASM_SRCS : assembly sources
+# GEN_ASM_SRCS : generated assembly sources
+# RC_SRCS : resource source files
+# SPEC_SRCS : interface definition files
+# GLUE : C sources for which glue code needs to be generated
+# EXTRA_SRCS : extra source files for make depend
+# EXTRA_OBJS : extra object files
+# WRCEXTRA : extra wrc flags (e.g. '-p _SysRes')
+# SUBDIRS : subdirectories that contain a Makefile
+# EXTRASUBDIRS : subdirectories that do not contain a Makefile
# First some useful definitions
@@ -241,6 +245,25 @@
winapi_check::
$(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) .
+# Rules for dependencies
+
+$(SUBDIRS:%=%/__depend__): $(MAKEDEP) dummy
+ cd `dirname $@` && $(MAKE) depend
+
+depend: $(MAKEDEP) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS) $(SUBDIRS:%=%/__depend__)
+ $(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
+
+# Rules for cleaning
+
+$(SUBDIRS:%=%/__clean__): dummy
+ cd `dirname $@` && $(MAKE) clean
+
+$(EXTRASUBDIRS:%=%/__clean__): dummy
+ -cd `dirname $@` && $(RM) $(CLEAN_FILES)
+
+clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
+ $(RM) $(CLEAN_FILES) $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.s) $(RC_SRCS:.rc=.h) $(PROGRAMS)
+
# Misc. rules
$(SPEC_SRCS:.spec=.spec.c): $(BUILD) $(TOPSRCDIR)/include/builtin16.h $(TOPSRCDIR)/include/builtin32.h
@@ -249,11 +272,8 @@
$(RC_SRCS:.rc=.s): $(WRC)
-depend:: $(MAKEDEP) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
- $(MAKEDEP) $(DIVINCL) -C$(SRCDIR) $(C_SRCS) $(RC_SRCS) $(EXTRA_SRCS)
-
-clean::
- $(RM) $(CLEAN_FILES) $(GEN_ASM_SRCS) $(RC_SRCS:.rc=.s) $(RC_SRCS:.rc=.h) $(PROGRAMS)
+$(SUBDIRS): dummy
+ @cd $@ && $(MAKE)
dummy:
diff --git a/Makefile.in b/Makefile.in
index fd5a4a3..998bf5c 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -23,9 +23,7 @@
SOVERSION = 1.0
SONAME = libwine.so
-TOOLSUBDIRS = \
- tools \
- tools/wrc
+TOOLSUBDIRS = tools
LIBSUBDIRS = \
controls \
@@ -74,16 +72,14 @@
windows/x11drv/wineclipsrv
# Sub-directories to run make into
-BUILDSUBDIRS = \
+SUBDIRS = \
$(TOOLSUBDIRS) \
$(LIBSUBDIRS) \
$(DLLDIR) \
$(EMUSUBDIRS) \
$(PROGSUBDIRS) \
- $(DOCSUBDIRS)
-
-# Sub-directories to run make depend into
-DEPENDSUBDIRS = $(LIBSUBDIRS) $(DLLDIR) $(EMUSUBDIRS) $(DOCSUBDIRS)
+ $(DOCSUBDIRS) \
+ include
# Sub-directories to run make install into
INSTALLSUBDIRS = $(DLLDIR) $(DOCSUBDIRS) $(INCSUBDIRS)
@@ -91,9 +87,6 @@
# Sub-directories to run make lint into
LINTSUBDIRS = $(LIBSUBDIRS) $(DLLDIR) $(EMUSUBDIRS) $(DOCSUBDIRS)
-# Extra sub-directories to clean
-CLEANSUBDIRS = dlls include include/bitmaps include/wine tools/cvdump
-
LIBOBJS = \
controls/controls.o \
console/console.o \
@@ -201,9 +194,6 @@
$(EMUOBJS) $(LIBOBJS) $(DLLOBJS) $(PROGRAMS): $(TOOLSUBDIRS) dummy
@cd `dirname $@` && $(MAKE) `basename $@`
-$(BUILDSUBDIRS): dummy
- @cd $@ && $(MAKE)
-
$(LIBLINTS) $(EMULINTS): dummy
@cd `dirname $@` && $(MAKE) lint
@@ -220,9 +210,6 @@
uninstall::
for i in $(INSTALLSUBDIRS); do (cd $$i && $(MAKE) uninstall) || exit 1; done
-depend::
- for i in $(DEPENDSUBDIRS); do (cd $$i && $(MAKE) depend) || exit 1; done
-
checklink::
@cd dlls && $(MAKE) checklink
@@ -238,8 +225,6 @@
for i in $(LIBSUBDIRS); do (cd $$i && $(MAKE) html); done
clean::
- for i in $(BUILDSUBDIRS); do (cd $$i && $(MAKE) clean) || exit 1; done
- for i in $(CLEANSUBDIRS); do (cd $$i && $(RM) $(CLEAN_FILES)); done
$(RM) wine wine.sym libwine.so.1.0 TAGS
distclean: clean
diff --git a/debugger/Makefile.in b/debugger/Makefile.in
index 54328b4..df5677b 100644
--- a/debugger/Makefile.in
+++ b/debugger/Makefile.in
@@ -29,7 +29,7 @@
all: $(MODULE).o
-depend:: y.tab.h
+depend: y.tab.h
#
# This is a special test program that helps debug the internal debugger.
diff --git a/dlls/Makefile.in b/dlls/Makefile.in
index f78abdc..e0f8703 100644
--- a/dlls/Makefile.in
+++ b/dlls/Makefile.in
@@ -84,6 +84,52 @@
winaspi \
winsock
+SUBDIRS = \
+ avifil32 \
+ comctl32 \
+ commdlg \
+ dciman32 \
+ ddraw \
+ dinput \
+ dplayx \
+ dsound \
+ gdi \
+ icmp \
+ imagehlp \
+ imm32 \
+ lzexpand \
+ mpr \
+ msacm \
+ msacm32 \
+ msnet32 \
+ msvideo \
+ odbc32 \
+ ole32 \
+ oleaut32 \
+ olecli \
+ oledlg \
+ olepro32 \
+ olesvr \
+ psapi \
+ rasapi32 \
+ setupx \
+ shell32 \
+ sound \
+ stress \
+ tapi32 \
+ ttydrv \
+ user \
+ version \
+ win32s \
+ win87em \
+ winaspi \
+ windebug \
+ wing \
+ winmm \
+ winsock \
+ winspool \
+ x11drv
+
@MAKE_RULES@
all: $(DLLS:%=lib%.@LIBEXT@) $(EXTRADLLNAMES:%=lib%.@LIBEXT@)
@@ -252,9 +298,6 @@
$(DLLFILES): dummy
@cd `dirname $@` && $(MAKE)
-$(DLLFILES:%=%_depend_): dummy
- @cd `dirname $@` && $(MAKE) depend
-
$(DLLFILES:%=%_install_): dummy
@cd `dirname $@` && $(MAKE) install
@@ -264,15 +307,8 @@
$(DLLFILES:%=%_checklink_): dummy
@cd `dirname $@` && $(MAKE) checklink
-$(DLLFILES:%=%_clean_): dummy
- @cd `dirname $@` && $(MAKE) clean
-
-depend:: $(DLLFILES:%=%_depend_)
-
install:: $(DLLFILES:%=%_install_)
uninstall:: $(DLLFILES:%=%_uninstall_)
checklink:: $(DLLFILES:%=%_checklink_)
-
-clean:: $(DLLFILES:%=%_clean_)
diff --git a/dlls/ddraw/Makefile.in b/dlls/ddraw/Makefile.in
index 66e6922..f8da63a 100644
--- a/dlls/ddraw/Makefile.in
+++ b/dlls/ddraw/Makefile.in
@@ -46,7 +46,7 @@
helper.c \
main.c
-SUBDIRS = \
+EXTRASUBDIRS = \
d3ddevice \
dclipper \
ddraw \
@@ -56,7 +56,4 @@
@MAKE_DLL_RULES@
-clean::
- for i in $(SUBDIRS); do (cd $$i && $(RM) $(CLEAN_FILES)); done
-
### Dependencies:
diff --git a/dlls/ttydrv/Makefile.in b/dlls/ttydrv/Makefile.in
index 809467e..251ad9b 100644
--- a/dlls/ttydrv/Makefile.in
+++ b/dlls/ttydrv/Makefile.in
@@ -23,11 +23,5 @@
$(EXTRA_OBJS): $(TOOLSUBDIRS) dummy
@cd `dirname $@` && $(MAKE) `basename $@`
-depend::
- for i in $(SUBDIRS); do (cd $$i && $(MAKE) depend) || exit 1; done
-
-clean::
- for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit 1; done
-
### Dependencies:
diff --git a/dlls/winmm/Makefile.in b/dlls/winmm/Makefile.in
index 2429d9d..79fbdc1 100644
--- a/dlls/winmm/Makefile.in
+++ b/dlls/winmm/Makefile.in
@@ -41,7 +41,4 @@
all: check_wrc
-$(SUBDIRS): dummy
- @cd $@ && $(MAKE)
-
### Dependencies:
diff --git a/dlls/x11drv/Makefile.in b/dlls/x11drv/Makefile.in
index 6a07c31..96d38bc 100644
--- a/dlls/x11drv/Makefile.in
+++ b/dlls/x11drv/Makefile.in
@@ -25,11 +25,4 @@
$(EXTRA_OBJS): $(TOOLSUBDIRS) dummy
@cd `dirname $@` && $(MAKE) `basename $@`
-depend::
- for i in $(SUBDIRS); do (cd $$i && $(MAKE) depend) || exit 1; done
-
-clean::
- for i in $(SUBDIRS); do (cd $$i && $(MAKE) clean) || exit 1; done
-
### Dependencies:
-
diff --git a/documentation/Makefile.in b/documentation/Makefile.in
index b8c0389..bef83b3 100644
--- a/documentation/Makefile.in
+++ b/documentation/Makefile.in
@@ -24,6 +24,7 @@
DVIFILES = wine.dvi
+EXTRASUBDIRS = samples status
all: $(INFOFILES) $(DVIFILES) $(HTMLFILES)
diff --git a/include/Makefile.in b/include/Makefile.in
index 5fda48d..f20a2ca 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -10,6 +10,8 @@
wingdi.h \
winuser.h
+EXTRASUBDIRS = bitmaps wine
+
@MAKE_RULES@
install::
diff --git a/ole/Makefile.in b/ole/Makefile.in
index 9b01d4f..7746030 100644
--- a/ole/Makefile.in
+++ b/ole/Makefile.in
@@ -9,6 +9,8 @@
guid.c \
ole2nls.c
+EXTRASUBDIRS = nls
+
all: $(MODULE).o
@MAKE_RULES@
diff --git a/programs/Makefile.in b/programs/Makefile.in
index f9dcd57..8b96580 100644
--- a/programs/Makefile.in
+++ b/programs/Makefile.in
@@ -1,3 +1,9 @@
+TOPSRCDIR = @top_srcdir@
+TOPOBJDIR = ..
+SRCDIR = @srcdir@
+VPATH = @srcdir@
+MODULE = none
+
SUBDIRS = \
avitools \
clock \
@@ -16,19 +22,12 @@
all: $(SUBDIRS)
-$(SUBDIRS): dummy
- @cd $@; $(MAKE)
+@MAKE_RULES@
-depend:
- for i in $(SUBDIRS); do (cd $$i; $(MAKE) depend) || exit 1; done
-
-install:
+install::
for i in $(SUBDIRS); do (cd $$i; $(MAKE) install) || exit 1; done
-uninstall:
+uninstall::
for i in $(SUBDIRS); do (cd $$i; $(MAKE) uninstall) || exit 1; done
-clean:
- for i in $(SUBDIRS); do (cd $$i; $(MAKE) clean) || exit 1; done
-
-dummy:
+### Dependencies:
diff --git a/programs/winhelp/Makefile.in b/programs/winhelp/Makefile.in
index 17cce10..67a0f5b 100644
--- a/programs/winhelp/Makefile.in
+++ b/programs/winhelp/Makefile.in
@@ -23,7 +23,7 @@
all: check_wrc check_winestub $(PROGRAMS)
-depend:: y.tab.h
+depend: y.tab.h
@MAKE_RULES@
diff --git a/tools/Makefile.in b/tools/Makefile.in
index 7745fb7..76affff 100644
--- a/tools/Makefile.in
+++ b/tools/Makefile.in
@@ -9,6 +9,16 @@
C_SRCS = build.c makedep.c fnt2bdf.c bin2res.c
+SUBDIRS = \
+ cvdump \
+ wrc
+
+EXTRASUBDIRS = \
+ winapi_check \
+ winapi_check/win16 \
+ winapi_check/win32 \
+ wineconf.libs
+
all: $(PROGRAMS)
@MAKE_RULES@
diff --git a/tools/wrc/Makefile.in b/tools/wrc/Makefile.in
index 85eae63..5f544f2 100644
--- a/tools/wrc/Makefile.in
+++ b/tools/wrc/Makefile.in
@@ -22,7 +22,7 @@
all: $(PROGRAMS)
-depend:: y.tab.h
+depend: y.tab.h
@MAKE_RULES@