makefiles: Move Maketest.rules to the top level.
[wine] / Makefile.in
1 # This Makefile understands the following targets:
2 #
3 # all (default):   build wine
4 # clean:           remove all intermediate files
5 # distclean:       also remove all files created by configure
6 # test:            run tests
7 # testclean:       clean test results to force running all tests again
8 # crosstest:       build tests as native windows applications (requires MinGW)
9 # install-lib:     install libraries needed to run applications
10 # install-dev:     install development environment
11 # install:         install everything
12 # uninstall:       uninstall everything
13 # depend:          create the dependencies
14 # ctags:           create a tags file for vim and others.
15 # etags:           create a TAGS file for Emacs.
16 # manpages:        compile manpages for Wine API
17 # htmlpages:       compile html pages for Wine API
18 # sgmlpages:       compile sgml source for the Wine API Guide
19 # xmlpages:        compile xml source for the Wine API Guide
20
21 # Directories
22
23 TOPSRCDIR = @top_srcdir@
24 TOPOBJDIR = .
25 SRCDIR    = @srcdir@
26 VPATH     = @srcdir@
27 LIBEXT    = @LIBEXT@
28 MODULE    = none
29
30 ALL_STATICLIB_DIRS = @ALL_STATICLIB_DIRS@
31 ALL_TEST_DIRS      = @ALL_TEST_DIRS@
32 ALL_TOOL_DIRS      = @ALL_TOOL_DIRS@
33 ALL_TOP_DIRS       = @ALL_TOP_DIRS@
34
35 # Sub-directories to run make depend/clean into
36 SUBDIRS = \
37         dlls \
38         documentation \
39         fonts \
40         include \
41         libs/port \
42         libs/wine \
43         libs/wpp \
44         loader \
45         programs \
46         server \
47         $(ALL_TOOL_DIRS) \
48         $(ALL_STATICLIB_DIRS) \
49         $(ALL_TEST_DIRS)
50
51 # Sub-directories to run make all into
52 BUILDSUBDIRS = \
53         libs/wine \
54         $(ALL_TOOL_DIRS) \
55         $(ALL_TOP_DIRS) \
56         $(ALL_STATICLIB_DIRS) \
57         $(ALL_TEST_DIRS)
58
59 # Sub-directories to run make install/uninstall into
60 INSTALLSUBDIRS = \
61         libs/wine \
62         $(ALL_TOOL_DIRS) \
63         $(ALL_TOP_DIRS) \
64         $(ALL_STATICLIB_DIRS)
65
66 # Sub-directories to run make test into
67 TESTSUBDIRS = $(ALL_TEST_DIRS)
68
69 # Sub-directories that don't have a makefile
70 EXTRASUBDIRS = libs
71
72 all: wine
73         @echo "Wine build complete."
74
75 WINAPI_CHECK_EXTRA_FLAGS = --global
76
77 @MAKE_RULES@
78
79 $(SRCDIR)/configure: @MAINTAINER_MODE@ configure.ac aclocal.m4
80         cd $(SRCDIR) && autoconf --warnings=all
81
82 $(SRCDIR)/include/config.h.in: @MAINTAINER_MODE@ include/stamp-h.in
83 $(SRCDIR)/include/stamp-h.in: configure.ac aclocal.m4
84         cd $(SRCDIR) && autoheader --warnings=all
85         @echo timestamp > $@
86
87 config.status: configure
88         @./config.status --recheck
89
90 include/config.h: include/stamp-h
91 include/stamp-h: include/config.h.in config.status
92         @./config.status include/config.h include/stamp-h
93
94 # Installation rules
95
96 uninstall::
97         -rmdir $(DESTDIR)$(datadir)/wine
98
99 # Import libraries
100
101 STATIC_LIBS = @ALL_STATIC_LIBS@
102 IMPORT_LIBS = @ALL_IMPORT_LIBS@
103
104 implib: $(ALL_STATICLIB_DIRS) $(IMPORT_LIBS)
105 .PHONY: implib
106
107 # Dependencies between directories
108
109 all: $(BUILDSUBDIRS)
110
111 # dependencies needed to build any dll or program
112 __builddeps__: libs/port libs/wine libs/wpp $(ALL_TOOL_DIRS) include $(ALL_STATICLIB_DIRS) $(IMPORT_LIBS)
113 __buildcrossdeps__: libs/port libs/wine $(ALL_TOOL_DIRS) include $(STATIC_LIBS:.a=.cross.a) $(IMPORT_LIBS:.def=.cross.a)
114 .PHONY: __builddeps__ __buildcrossdeps__
115
116 dlls programs: __builddeps__
117 loader server: libs/port libs/wine tools
118 fonts: tools
119 include: tools/widl
120 programs: $(ALL_TEST_DIRS)
121 libs/wine $(ALL_TOOL_DIRS): libs/port
122 tools/wmc tools/wrc: tools
123 tools tools/wmc tools/wrc: libs/wine
124 tools/widl tools/wmc tools/wrc: libs/wpp
125
126 dlls/__install__ dlls/__install-lib__ dlls/__install-dev__: __builddeps__
127 programs/__install__ programs/__install-lib__: __builddeps__
128 fonts/__install__ fonts/__install-lib__: tools
129 include/__install__ include/__install-dev__: include
130 libs/wine/__install__ libs/wine/__install-lib__ libs/wine/__install-dev__: libs/wine
131 loader/__install__ loader/__install-lib__: libs/port libs/wine tools
132 server/__install__ server/__install-lib__: libs/port libs/wine tools
133 tools/__install__ tools/__install-lib__ tools/__install-dev__: tools
134 tools/widl/__install__ tools/widl/__install-dev__: tools/widl
135 tools/winebuild/__install__ tools/winebuild/__install-dev__: tools/winebuild
136 tools/winedump/__install__ tools/winedump/__install-dev__: tools/winedump
137 tools/winegcc/__install__ tools/winegcc/__install-dev__: tools/winegcc
138 tools/wmc/__install__ tools/wmc/__install-dev__: tools/wmc
139 tools/wrc/__install__ tools/wrc/__install-dev__: tools/wrc
140
141 RECURSE_TARGETS = \
142         __clean__ \
143         __depend__ \
144         __install__ \
145         __instal-dev__ \
146         __install-lib__ \
147         __uninstall__ \
148         __crosstest__
149
150 dlls $(RECURSE_TARGETS:%=dlls/%): $(MAKEDEP)
151 programs $(RECURSE_TARGETS:%=programs/%): $(MAKEDEP)
152 depend: $(MAKEDEP)
153
154 $(MAKEDEP): include/config.h tools/Makefile
155         @cd $(TOOLSDIR)/tools && $(MAKE) makedep$(TOOLSEXT)
156
157 # Misc rules
158
159 TAGS etags:
160         $(RM) TAGS
161         (test -d .git && git ls-files '*.[chly]' '*.idl' || find -L $(TOPSRCDIR) -name '*.[ch]' -print) | xargs etags -a
162
163 tags ctags:
164         $(RM) tags
165         (test -d .git && git ls-files '*.[chly]' '*.idl' || find -L $(TOPSRCDIR) -name '*.[ch]' -print) | xargs ctags -a
166
167 manpages htmlpages sgmlpages xmlpages: dummy
168         @cd documentation && $(MAKE) $@
169
170 distclean:: clean
171         $(RM) config.* configure.lineno TAGS tags include/config.h include/stamp-h
172         $(RM) -r autom4te.cache
173
174 .PHONY: manpages htmlpages sgmlpages xmlpages distclean
175
176 # Makefile rules
177
178 ALL_MAKEFILES = @ALL_MAKEFILES@
179 ALL_CONFIGS   = Makefile $(ALL_MAKEFILES) @ALL_MAKERULES@ @ALL_SYMLINKS@
180
181 $(ALL_CONFIGS):
182         @./config.status $@
183 .INIT: Makefile
184 .BEGIN: Makefile
185 .MAKEFILEDEPS:
186
187 dlls $(RECURSE_TARGETS:%=dlls/%): $(ALL_MAKEFILES)
188 programs $(RECURSE_TARGETS:%=programs/%): $(ALL_MAKEFILES)
189
190 distclean::
191         $(RM) $(ALL_CONFIGS)
192
193 @ALL_MAKEFILE_DEPENDS@