1*c2c66affSColin FinckTOPSRCDIR = ../..
2*c2c66affSColin FinckTOPOBJDIR = ../..
3*c2c66affSColin FinckSRCDIR    = .
4*c2c66affSColin Finck
5*c2c66affSColin FinckMODULE    = explorer.exe
6*c2c66affSColin FinckAPPMODE   = gui
7*c2c66affSColin FinckIMPORTS   = shell32 comctl32 msimg32 ole32 user32 gdi32 kernel32 advapi32 oleaut32
8*c2c66affSColin FinckEXTRADEFS = -D__WINE__ -D_WIN32_IE=0x0600 -D_WIN32_WINNT=0x0501 -DWINVER=0x0500 -D__MINGW32__ -DCINTERFACE
9*c2c66affSColin FinckEXTRA_OBJS = notifyhook.dll
10*c2c66affSColin FinckEXTRALIBS = $(LIBUUID)
11*c2c66affSColin Finck
12*c2c66affSColin FinckC_SRCS = \
13*c2c66affSColin Finck	services/startup.c \
14*c2c66affSColin Finck	utility/splitpath.c
15*c2c66affSColin Finck
16*c2c66affSColin FinckCPP_SRCS = \
17*c2c66affSColin Finck	explorer.cpp \
18*c2c66affSColin Finck	desktop/desktop.cpp \
19*c2c66affSColin Finck	utility/shellclasses.cpp \
20*c2c66affSColin Finck	utility/utility.cpp \
21*c2c66affSColin Finck	utility/window.cpp \
22*c2c66affSColin Finck	utility/dragdropimpl.cpp \
23*c2c66affSColin Finck	utility/shellbrowserimpl.cpp \
24*c2c66affSColin Finck	utility/xmlstorage.cpp \
25*c2c66affSColin Finck	utility/xmlstorage.cpp \
26*c2c66affSColin Finck	utility/xs-native.cpp
27*c2c66affSColin Finck	shell/entries.cpp \
28*c2c66affSColin Finck	shell/winfs.cpp \
29*c2c66affSColin Finck	shell/unixfs.cpp \
30*c2c66affSColin Finck	shell/shellfs.cpp \
31*c2c66affSColin Finck	shell/mainframe.cpp \
32*c2c66affSColin Finck	shell/filechild.cpp \
33*c2c66affSColin Finck	shell/pane.cpp \
34*c2c66affSColin Finck	shell/shellbrowser.cpp \
35*c2c66affSColin Finck	shell/ntobjfs.cpp \
36*c2c66affSColin Finck	shell/regfs.cpp \
37*c2c66affSColin Finck	shell/fatfs.cpp \
38*c2c66affSColin Finck	shell/webchild.cpp \
39*c2c66affSColin Finck	services/shellservices.cpp \
40*c2c66affSColin Finck	taskbar/desktopbar.cpp \
41*c2c66affSColin Finck	taskbar/taskbar.cpp \
42*c2c66affSColin Finck	taskbar/startmenu.cpp \
43*c2c66affSColin Finck	taskbar/traynotify.cpp \
44*c2c66affSColin Finck	taskbar/quicklaunch.cpp \
45*c2c66affSColin Finck	taskbar/favorites.cpp \
46*c2c66affSColin Finck	dialogs/searchprogram.cpp \
47*c2c66affSColin Finck	dialogs/settings.cpp
48*c2c66affSColin Finck
49*c2c66affSColin FinckRC_SRCS = explorer_intres.rc
50*c2c66affSColin FinckEXTRARCFLAGS = -D__WRC__ -D_WIN32
51*c2c66affSColin Finck
52*c2c66affSColin Finck
53*c2c66affSColin Finck# Global rules for building a Winelib program     -*-Makefile-*-
54*c2c66affSColin Finck#
55*c2c66affSColin Finck# Each individual makefile should define the following variables:
56*c2c66affSColin Finck# MODULE       : name of the main module being built
57*c2c66affSColin Finck# APPMODE      : program mode (cui,gui,cuiw,guiw)
58*c2c66affSColin Finck# EXTRALIBS    : extra libraries to link in (optional)
59*c2c66affSColin Finck# EXTRADEFS    : extra symbol definitions, like -DWINELIB (optional)
60*c2c66affSColin Finck#
61*c2c66affSColin Finck# plus all variables required by the global Make.rules.in
62*c2c66affSColin Finck#
63*c2c66affSColin Finck
64*c2c66affSColin FinckDEFS        = -D_REENTRANT -fPIC $(EXTRADEFS)
65*c2c66affSColin FinckLDDLLFLAGS  = -Wl,-Bsymbolic,-z,defs
66*c2c66affSColin FinckALL_OBJS    = $(OBJS) $(MODULE).dbg.o
67*c2c66affSColin FinckALL_LIBS    = $(LIBWINE) $(EXTRALIBS) $(LIBPORT) $(LDFLAGS) $(LIBS)
68*c2c66affSColin FinckBASEMODULE  = $(MODULE:.exe=)
69*c2c66affSColin FinckTESTIMPORTS = $(DELAYIMPORTS) $(IMPORTS)
70*c2c66affSColin FinckRUNTESTFLAGS= -q -P wine -T $(TOPOBJDIR) $(PLTESTPROGRAM:%=-p %)
71*c2c66affSColin Finck
72*c2c66affSColin Finck
73*c2c66affSColin Finck# Global rules shared by all makefiles     -*-Makefile-*-
74*c2c66affSColin Finck#
75*c2c66affSColin Finck# Each individual makefile must define the following variables:
76*c2c66affSColin Finck# TOPSRCDIR    : top-level source directory
77*c2c66affSColin Finck# TOPOBJDIR    : top-level object directory
78*c2c66affSColin Finck# SRCDIR       : source directory for this module
79*c2c66affSColin Finck# MODULE       : name of the module being built
80*c2c66affSColin Finck#
81*c2c66affSColin Finck# Each individual makefile may define the following additional variables:
82*c2c66affSColin Finck# C_SRCS       : C sources for the module
83*c2c66affSColin Finck# CPP_SRCS     : C++ sources for the module
84*c2c66affSColin Finck# C_SRCS16     : 16-bit C sources for the module
85*c2c66affSColin Finck# RC_SRCS      : resource source files
86*c2c66affSColin Finck# EXTRA_SRCS   : extra source files for make depend
87*c2c66affSColin Finck# EXTRA_OBJS   : extra object files
88*c2c66affSColin Finck# IMPORTS      : dlls to import
89*c2c66affSColin Finck# DELAYIMPORTS : dlls to import in delayed mode
90*c2c66affSColin Finck# SUBDIRS      : subdirectories that contain a Makefile
91*c2c66affSColin Finck# EXTRASUBDIRS : subdirectories that do not contain a Makefile
92*c2c66affSColin Finck# INSTALLSUBDIRS : subdirectories to run make install/uninstall into
93*c2c66affSColin Finck
94*c2c66affSColin Finck# First some useful definitions
95*c2c66affSColin Finck
96*c2c66affSColin FinckSHELL     = /bin/sh
97*c2c66affSColin FinckCC        = gcc
98*c2c66affSColin FinckCXX       = g++
99*c2c66affSColin FinckCPP       = gcc -E
100*c2c66affSColin Finck#CFLAGS    = -g -O2
101*c2c66affSColin FinckCFLAGS    = -g
102*c2c66affSColin FinckCPPFLAGS  =
103*c2c66affSColin FinckLIBS      = -lm -lstdc++
104*c2c66affSColin FinckYACC      = bison -y
105*c2c66affSColin FinckLEX       = flex
106*c2c66affSColin FinckLEXLIB    = -lfl
107*c2c66affSColin FinckEXEEXT    =
108*c2c66affSColin FinckOBJEXT    = o
109*c2c66affSColin FinckLIBEXT    = so
110*c2c66affSColin FinckDLLEXT    = .so
111*c2c66affSColin FinckIMPLIBEXT = def
112*c2c66affSColin FinckLDSHARED  = $(CC) -shared $(SONAME:%=-Wl,-soname,%)
113*c2c66affSColin FinckDLLTOOL   = false
114*c2c66affSColin FinckDLLWRAP   =
115*c2c66affSColin FinckAR        = ar rc
116*c2c66affSColin FinckRANLIB    = ranlib
117*c2c66affSColin FinckSTRIP     = strip
118*c2c66affSColin FinckWINDRES   = mingw32-windres
119*c2c66affSColin FinckLN        = ln
120*c2c66affSColin FinckLN_S      = ln -s
121*c2c66affSColin FinckTOOLSDIR  = $(TOPOBJDIR)
122*c2c66affSColin FinckAS        = as
123*c2c66affSColin FinckLD        = ld
124*c2c66affSColin FinckLDFLAGS   =
125*c2c66affSColin FinckLDCOMBINE = $(LD) -r
126*c2c66affSColin FinckRM        = rm -f
127*c2c66affSColin FinckMV        = mv
128*c2c66affSColin FinckLINT      =
129*c2c66affSColin FinckLINTFLAGS =
130*c2c66affSColin FinckINCLUDES     = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL)
131*c2c66affSColin FinckEXTRACFLAGS  = -mpreferred-stack-boundary=2 -fno-strict-aliasing -gstabs+ -Wpointer-arith
132*c2c66affSColin FinckALLCFLAGS    = $(INCLUDES) $(DEFS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS)
133*c2c66affSColin FinckALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS)
134*c2c66affSColin FinckMKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755
135*c2c66affSColin FinckWINAPI_CHECK = $(TOPSRCDIR)/tools/winapi_check/winapi_check
136*c2c66affSColin FinckWINEWRAPPER  = $(TOPSRCDIR)/tools/winewrapper
137*c2c66affSColin FinckC2MAN        = $(TOPSRCDIR)/tools/c2man.pl
138*c2c66affSColin FinckRUNTEST      = $(TOPSRCDIR)/tools/runtest
139*c2c66affSColin FinckWINEBUILD    = $(TOOLSDIR)/tools/winebuild/winebuild
140*c2c66affSColin FinckMAKEDEP      = $(TOOLSDIR)/tools/makedep
141*c2c66affSColin FinckWRC          = $(TOOLSDIR)/tools/wrc/wrc
142*c2c66affSColin FinckWMC          = $(TOOLSDIR)/tools/wmc/wmc
143*c2c66affSColin FinckWIDL         = $(TOOLSDIR)/tools/widl/widl
144*c2c66affSColin FinckRC           = $(WRC)
145*c2c66affSColin FinckRC16         = $(WRC)
146*c2c66affSColin FinckRCFLAGS      = --nostdinc $(INCLUDES) $(EXTRARCFLAGS)
147*c2c66affSColin FinckRC16FLAGS    = -O res16 $(RCFLAGS)
148*c2c66affSColin FinckLDPATH       = LD_LIBRARY_PATH="$(TOOLSDIR)/libs/unicode:$$LD_LIBRARY_PATH"
149*c2c66affSColin FinckDLLDIR       = $(TOPOBJDIR)/dlls
150*c2c66affSColin FinckLIBDIR       = $(TOPOBJDIR)/libs
151*c2c66affSColin FinckLIBPORT      = -L$(TOPOBJDIR)/libs/port -lwine_port
152*c2c66affSColin FinckLIBUNICODE   = -L$(TOPOBJDIR)/libs/unicode -lwine_unicode
153*c2c66affSColin FinckLIBUUID      = -L$(TOPOBJDIR)/libs/uuid -lwine_uuid
154*c2c66affSColin FinckLIBWINE      = -L$(TOPOBJDIR)/libs/wine -lwine
155*c2c66affSColin Finck
156*c2c66affSColin Finck
157*c2c66affSColin Finck
158*c2c66affSColin Finck# Installation infos
159*c2c66affSColin Finck
160*c2c66affSColin FinckINSTALL         = /usr/bin/install -c $(INSTALL_FLAGS)
161*c2c66affSColin FinckINSTALL_PROGRAM = ${INSTALL} $(INSTALL_PROGRAM_FLAGS)
162*c2c66affSColin FinckINSTALL_SCRIPT  = ${INSTALL} $(INSTALL_SCRIPT_FLAGS)
163*c2c66affSColin FinckINSTALL_DATA    = ${INSTALL} -m 644 $(INSTALL_DATA_FLAGS)
164*c2c66affSColin Finckprefix          = /usr/local
165*c2c66affSColin Finckexec_prefix     = ${prefix}
166*c2c66affSColin Finckbindir          = ${exec_prefix}/bin
167*c2c66affSColin Fincklibdir          = ${exec_prefix}/lib
168*c2c66affSColin Finckdatadir         = ${prefix}/share
169*c2c66affSColin Finckinfodir         = ${prefix}/info
170*c2c66affSColin Finckmandir          = ${prefix}/man
171*c2c66affSColin Fincksysconfdir      = ${prefix}/etc
172*c2c66affSColin Finckincludedir      = ${prefix}/include/wine
173*c2c66affSColin Finckdlldir          = ${exec_prefix}/lib/wine
174*c2c66affSColin Finckprog_manext     = 1
175*c2c66affSColin Finckapi_manext      = 3w
176*c2c66affSColin Finckconf_manext     = 5
177*c2c66affSColin FinckCLEAN_FILES     = *.o *.a *.so *.ln *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej \
178*c2c66affSColin Finck                  *.flc *.spec.c *.spec.def *.dbg.c y.tab.c y.tab.h lex.yy.c core */*.o
179*c2c66affSColin Finck
180*c2c66affSColin FinckOBJS = $(C_SRCS:.c=.o) $(CPP_SRCS:.cpp=.o) $(EXTRA_OBJS)
181*c2c66affSColin Finck
182*c2c66affSColin FinckRCOBJS = $(RC_SRCS:.rc=.res.o)
183*c2c66affSColin FinckLINTS  = $(C_SRCS:.c=.ln) $(CPP_SRCS:.cpp=.ln)
184*c2c66affSColin Finck
185*c2c66affSColin Finck# Implicit rules
186*c2c66affSColin Finck
187*c2c66affSColin Finck.SUFFIXES: .mc .rc .mc.rc .res .res.o .coff .spec .spec.c .spec.def .ok
188*c2c66affSColin Finck
189*c2c66affSColin Finck.c.o:
190*c2c66affSColin Finck	$(CC) -c $(ALLCFLAGS) -o $@ $<
191*c2c66affSColin Finck
192*c2c66affSColin Finck.cpp.o:
193*c2c66affSColin Finck	$(CXX) -c $(ALLCFLAGS) -o $@ $<
194*c2c66affSColin Finck
195*c2c66affSColin Finck.s.o:
196*c2c66affSColin Finck	$(AS) -o $@ $<
197*c2c66affSColin Finck
198*c2c66affSColin Finck.mc.mc.rc:
199*c2c66affSColin Finck	$(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $<
200*c2c66affSColin Finck
201*c2c66affSColin Finck.rc.res:
202*c2c66affSColin Finck	$(LDPATH) $(RC) $(RCFLAGS) -fo$@ $<
203*c2c66affSColin Finck
204*c2c66affSColin Finck.res.res.o:
205*c2c66affSColin Finck	$(WINDRES) -i $< -o $@
206*c2c66affSColin Finck
207*c2c66affSColin Finck.rc.coff:
208*c2c66affSColin Finck	$(WINDRES) -i $<  -o $@
209*c2c66affSColin Finck
210*c2c66affSColin Finck.spec.spec.c:
211*c2c66affSColin Finck	$(WINEBUILD) $(DEFS) -o $@ --main-module $(MODULE) --spec $<
212*c2c66affSColin Finck
213*c2c66affSColin Finck.spec.spec.def:
214*c2c66affSColin Finck	$(WINEBUILD) $(DEFS) -o $@ --def $<
215*c2c66affSColin Finck
216*c2c66affSColin Finck.c.ln:
217*c2c66affSColin Finck	$(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 )
218*c2c66affSColin Finck
219*c2c66affSColin Finck.c.ok:
220*c2c66affSColin Finck	$(RUNTEST) $(RUNTESTFLAGS) $< && touch $@
221*c2c66affSColin Finck
222*c2c66affSColin Finck# 'all' target first in case the enclosing Makefile didn't define any target
223*c2c66affSColin Finck
224*c2c66affSColin Finckall: Makefile
225*c2c66affSColin Finck
226*c2c66affSColin Finckfilter:
227*c2c66affSColin Finck	@$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all
228*c2c66affSColin Finck
229*c2c66affSColin Finck.PHONY: all filter
230*c2c66affSColin Finck
231*c2c66affSColin Finck# Rule for main module debug channels
232*c2c66affSColin Finck
233*c2c66affSColin Finck$(MODULE).dbg.c: $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(WINEBUILD)
234*c2c66affSColin Finck	$(WINEBUILD) $(DEFS) -o $@ --debug -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16)
235*c2c66affSColin Finck
236*c2c66affSColin Finck# Rule to rebuild the tools
237*c2c66affSColin Finck
238*c2c66affSColin Finck$(MAKEDEP):
239*c2c66affSColin Finck	cd $(TOOLSDIR)/tools && $(MAKE) `basename $@`
240*c2c66affSColin Finck
241*c2c66affSColin Finck# Rules for makefile
242*c2c66affSColin Finck
243*c2c66affSColin FinckMakefile: Makefile.in $(TOPSRCDIR)/configure
244*c2c66affSColin Finck	@echo Makefile is older than $?, please rerun $(TOPSRCDIR)/configure
245*c2c66affSColin Finck	@exit 1
246*c2c66affSColin Finck
247*c2c66affSColin Finck# Rule for linting
248*c2c66affSColin Finck
249*c2c66affSColin Finck$(MODULE).ln : $(LINTS)
250*c2c66affSColin Finck	if test "$(LINTS)" ; \
251*c2c66affSColin Finck	then \
252*c2c66affSColin Finck		$(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \
253*c2c66affSColin Finck	        $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \
254*c2c66affSColin Finck	else \
255*c2c66affSColin Finck		$(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \
256*c2c66affSColin Finck	fi
257*c2c66affSColin Finck
258*c2c66affSColin Fincklint:: $(MODULE).ln
259*c2c66affSColin Finck
260*c2c66affSColin Finck# Rules for Windows API checking
261*c2c66affSColin Finck
262*c2c66affSColin Finckwinapi_check:: dummy
263*c2c66affSColin Finck	$(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) .
264*c2c66affSColin Finck
265*c2c66affSColin Finck.PHONY: winapi_check
266*c2c66affSColin Finck
267*c2c66affSColin Finck# Rules for dependencies
268*c2c66affSColin Finck
269*c2c66affSColin Finck$(SUBDIRS:%=%/__depend__): $(MAKEDEP) dummy
270*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) depend
271*c2c66affSColin Finck
272*c2c66affSColin Finckdepend: $(MAKEDEP) $(SUBDIRS:%=%/__depend__)
273*c2c66affSColin Finck	$(MAKEDEP) $(INCLUDES) -C$(SRCDIR) $(C_SRCS) $(CPP_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(IDL_SRCS) $(EXTRA_SRCS)
274*c2c66affSColin Finck
275*c2c66affSColin Finck.PHONY: depend $(SUBDIRS:%=%/__depend__)
276*c2c66affSColin Finck
277*c2c66affSColin Finck# Rules for cleaning
278*c2c66affSColin Finck
279*c2c66affSColin Finck$(SUBDIRS:%=%/__clean__): dummy
280*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) clean
281*c2c66affSColin Finck
282*c2c66affSColin Finck$(SUBDIRS:%=%/__testclean__): dummy
283*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) testclean
284*c2c66affSColin Finck
285*c2c66affSColin Finck$(EXTRASUBDIRS:%=%/__clean__): dummy
286*c2c66affSColin Finck	-cd `dirname $@` && $(RM) $(CLEAN_FILES)
287*c2c66affSColin Finck
288*c2c66affSColin Fincktestclean:: $(SUBDIRS:%=%/__testclean__)
289*c2c66affSColin Finck
290*c2c66affSColin Finckclean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__)
291*c2c66affSColin Finck	$(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(PROGRAMS)
292*c2c66affSColin Finck
293*c2c66affSColin Finck.PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__)
294*c2c66affSColin Finck
295*c2c66affSColin Finck# Rules for installing
296*c2c66affSColin Finck
297*c2c66affSColin Finck$(SUBDIRS:%=%/__install__): dummy
298*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) install
299*c2c66affSColin Finck
300*c2c66affSColin Finck$(SUBDIRS:%=%/__install-lib__): dummy
301*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) install-lib
302*c2c66affSColin Finck
303*c2c66affSColin Finck$(SUBDIRS:%=%/__install-dev__): dummy
304*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) install-dev
305*c2c66affSColin Finck
306*c2c66affSColin Finck$(SUBDIRS:%=%/__uninstall__): dummy
307*c2c66affSColin Finck	cd `dirname $@` && $(MAKE) uninstall
308*c2c66affSColin Finck
309*c2c66affSColin Finckinstall:: $(INSTALLSUBDIRS:%=%/__install__)
310*c2c66affSColin Finck
311*c2c66affSColin Finckuninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__)
312*c2c66affSColin Finck
313*c2c66affSColin Finck.PHONY: install install-lib install-dev uninstall \
314*c2c66affSColin Finck	$(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \
315*c2c66affSColin Finck	$(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__)
316*c2c66affSColin Finck
317*c2c66affSColin Finck# Rules for checking that no imports are missing
318*c2c66affSColin Finck
319*c2c66affSColin Finck$(SUBDIRS:%=%/__checklink__): dummy
320*c2c66affSColin Finck	@cd `dirname $@` && $(MAKE) checklink
321*c2c66affSColin Finck
322*c2c66affSColin Finck.PHONY: checklink $(SUBDIRS:%=%/__checklink__)
323*c2c66affSColin Finck
324*c2c66affSColin Finck# Rules for testing
325*c2c66affSColin Finck
326*c2c66affSColin Finck$(SUBDIRS:%=%/__test__): dummy
327*c2c66affSColin Finck	@cd `dirname $@` && $(MAKE) test
328*c2c66affSColin Finck
329*c2c66affSColin Finck$(SUBDIRS:%=%/__crosstest__): dummy
330*c2c66affSColin Finck	@cd `dirname $@` && $(MAKE) crosstest
331*c2c66affSColin Finck
332*c2c66affSColin Finck.PHONY: check test crosstest $(SUBDIRS:%=%/__test__) $(SUBDIRS:%=%/__crosstest__)
333*c2c66affSColin Finck
334*c2c66affSColin Finck# Misc. rules
335*c2c66affSColin Finck
336*c2c66affSColin Finck$(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res): $(WRC)
337*c2c66affSColin Finck
338*c2c66affSColin Finck$(MC_SRCS:.mc=.mc.rc): $(WMC)
339*c2c66affSColin Finck
340*c2c66affSColin Finck$(IDL_SRCS:.idl=.h): $(WIDL)
341*c2c66affSColin Finck
342*c2c66affSColin Finck$(SUBDIRS): dummy
343*c2c66affSColin Finck	@cd $@ && $(MAKE)
344*c2c66affSColin Finck
345*c2c66affSColin Finckdummy:
346*c2c66affSColin Finck
347*c2c66affSColin Finck.PHONY: dummy $(SUBDIRS)
348*c2c66affSColin Finck
349*c2c66affSColin Finck# End of global rules
350*c2c66affSColin Finck
351*c2c66affSColin Finckall: $(MODULE)$(DLLEXT) $(BASEMODULE)$(EXEEXT)
352*c2c66affSColin Finck
353*c2c66affSColin Finck# Rule for main module spec file
354*c2c66affSColin Finck
355*c2c66affSColin Finck$(MODULE).spec.c: $(RC_SRCS:.rc=.res) $(ALL_OBJS) $(WINEBUILD)
356*c2c66affSColin Finck	$(WINEBUILD) $(DEFS) -o $@ --exe $(MODULE) $(APPMODE:%=--exe-mode %) $(RC_SRCS:.rc=.res) $(ALL_OBJS) -L$(DLLDIR) $(DELAYIMPORTS:%=-d%) $(IMPORTS:%=-l%)
357*c2c66affSColin Finck
358*c2c66affSColin Finck# Rules for .so main module
359*c2c66affSColin Finck
360*c2c66affSColin Finck$(MODULE).so: $(MODULE).spec.o $(ALL_OBJS) Makefile.in
361*c2c66affSColin Finck	$(LDSHARED) $(LDDLLFLAGS) $(MODULE).spec.o $(ALL_OBJS) -o $@ $(ALL_LIBS) -lc
362*c2c66affSColin Finck
363*c2c66affSColin Finck$(BASEMODULE): $(WINEWRAPPER)
364*c2c66affSColin Finck	$(RM) $@ && $(LN_S) $(WINEWRAPPER) $@
365*c2c66affSColin Finck
366*c2c66affSColin Finck# Rules for .exe main module
367*c2c66affSColin Finck
368*c2c66affSColin Finck$(MODULE): $(ALL_OBJS) $(RCOBJS) Makefile.in
369*c2c66affSColin Finck	$(CC) $(ALL_OBJS) $(RCOBJS) -o $@ $(DELAYIMPORTS:%=-l%) $(IMPORTS:%=-l%) $(ALL_LIBS)
370*c2c66affSColin Finck
371*c2c66affSColin Finck# Rules for testing
372*c2c66affSColin Finck
373*c2c66affSColin Finckcheck test:: $(SUBDIRS:%=%/__test__)
374*c2c66affSColin Finck
375*c2c66affSColin Finck$(TESTRESULTS): $(MODULE)$(DLLEXT)
376*c2c66affSColin Finck
377*c2c66affSColin Finck# Rules for installation
378*c2c66affSColin Finck
379*c2c66affSColin Finck.PHONY: install_prog install_prog.so uninstall_prog uninstall_prog.so
380*c2c66affSColin Finck
381*c2c66affSColin Finckinstall_prog.so: $(MODULE).so dummy
382*c2c66affSColin Finck	$(MKINSTALLDIRS) $(dlldir)
383*c2c66affSColin Finck	$(INSTALL_PROGRAM) $(MODULE).so $(dlldir)/$(MODULE).so
384*c2c66affSColin Finck
385*c2c66affSColin Finckinstall_prog: $(MODULE) dummy
386*c2c66affSColin Finck	$(MKINSTALLDIRS) $(bindir)
387*c2c66affSColin Finck	$(INSTALL_PROGRAM) $(MODULE) $(bindir)/$(MODULE)
388*c2c66affSColin Finck
389*c2c66affSColin Finckuninstall_prog.so: dummy
390*c2c66affSColin Finck	$(RM) $(dlldir)/$(MODULE).so
391*c2c66affSColin Finck
392*c2c66affSColin Finckuninstall_prog: dummy
393*c2c66affSColin Finck	$(RM) $(bindir)/$(MODULE)
394*c2c66affSColin Finck
395*c2c66affSColin Finckinstall:: install_prog$(DLLEXT)
396*c2c66affSColin Finck
397*c2c66affSColin Finckuninstall:: uninstall_prog$(DLLEXT)
398*c2c66affSColin Finck
399*c2c66affSColin Finckclean::
400*c2c66affSColin Finck	$(RM) $(BASEMODULE) $(MODULE)
401*c2c66affSColin Finck
402*c2c66affSColin Finck### Dependencies:
403