|  | # Global rules shared by all makefiles     -*-Makefile-*- | 
|  | # | 
|  | # 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 | 
|  | # | 
|  | # Each individual makefile may define the following additional variables: | 
|  | # C_SRCS       : C sources for the module | 
|  | # C_SRCS16     : 16-bit C sources for the module | 
|  | # RC_SRCS      : resource source files | 
|  | # EXTRA_SRCS   : extra source files for make depend | 
|  | # EXTRA_OBJS   : extra object files | 
|  | # IMPORTS      : dlls to import | 
|  | # DELAYIMPORTS : dlls to import in delayed mode | 
|  | # SUBDIRS      : subdirectories that contain a Makefile | 
|  | # EXTRASUBDIRS : subdirectories that do not contain a Makefile | 
|  | # INSTALLSUBDIRS : subdirectories to run make install/uninstall into | 
|  | # MODCFLAGS    : extra CFLAGS for this module | 
|  |  | 
|  | # First some useful definitions | 
|  |  | 
|  | SHELL     = /bin/sh | 
|  | CC        = @CC@ | 
|  | CFLAGS    = @CFLAGS@ | 
|  | CPPFLAGS  = @CPPFLAGS@ | 
|  | LIBS      = @LIBS@ | 
|  | BISON     = @BISON@ | 
|  | LEX       = @LEX@ | 
|  | LEXLIB    = @LEXLIB@ | 
|  | EXEEXT    = @EXEEXT@ | 
|  | OBJEXT    = @OBJEXT@ | 
|  | LIBEXT    = @LIBEXT@ | 
|  | DLLEXT    = @DLLEXT@ | 
|  | IMPLIBEXT = @IMPLIBEXT@ | 
|  | LDSHARED  = @LDSHARED@ | 
|  | DLLTOOL   = @DLLTOOL@ | 
|  | DLLWRAP   = @DLLWRAP@ | 
|  | AR        = @AR@ rc | 
|  | RANLIB    = @RANLIB@ | 
|  | STRIP     = @STRIP@ | 
|  | WINDRES   = @WINDRES@ | 
|  | LN        = @LN@ | 
|  | LN_S      = @LN_S@ | 
|  | TOOLSDIR  = @TOOLSDIR@ | 
|  | AS        = @AS@ | 
|  | LD        = @LD@ | 
|  | LDFLAGS   = @LDFLAGS@ | 
|  | PRELINK   = @PRELINK@ | 
|  | RM        = rm -f | 
|  | MV        = mv | 
|  | LINT      = @LINT@ | 
|  | LINTFLAGS = @LINTFLAGS@ | 
|  | FONTFORGE = @FONTFORGE@ | 
|  | INCLUDES     = -I$(SRCDIR) -I. -I$(TOPSRCDIR)/include -I$(TOPOBJDIR)/include $(EXTRAINCL) | 
|  | EXTRACFLAGS  = @EXTRACFLAGS@ | 
|  | ALLCFLAGS    = $(INCLUDES) $(DEFS) $(DLLFLAGS) $(EXTRACFLAGS) $(CPPFLAGS) $(CFLAGS) $(MODCFLAGS) | 
|  | ALLLINTFLAGS = $(INCLUDES) $(DEFS) $(LINTFLAGS) | 
|  | IDLFLAGS     = $(INCLUDES) $(DEFS) $(EXTRAIDLFLAGS) | 
|  | WINEBUILDFLAGS = $(DLLFLAGS) --as-cmd "$(AS)" | 
|  | MKINSTALLDIRS= $(TOPSRCDIR)/tools/mkinstalldirs -m 755 | 
|  | WINAPI_CHECK = $(TOPSRCDIR)/tools/winapi/winapi_check | 
|  | WINEWRAPPER  = $(TOPSRCDIR)/tools/winewrapper | 
|  | C2MAN        = $(TOPSRCDIR)/tools/c2man.pl | 
|  | RUNTEST      = $(TOPSRCDIR)/tools/runtest | 
|  | WINEBUILD    = $(TOOLSDIR)/tools/winebuild/winebuild | 
|  | MAKEDEP      = $(TOOLSDIR)/tools/makedep | 
|  | MAKECTESTS   = $(TOOLSDIR)/tools/make_ctests | 
|  | WRC          = $(TOOLSDIR)/tools/wrc/wrc | 
|  | BIN2RES      = $(TOOLSDIR)/tools/bin2res | 
|  | WMC          = $(TOOLSDIR)/tools/wmc/wmc | 
|  | WIDL         = $(TOOLSDIR)/tools/widl/widl | 
|  | WINEGCC      = $(TOOLSDIR)/tools/winegcc/winegcc | 
|  | RELPATH      = $(TOOLSDIR)/tools/relpath | 
|  | SFNT2FNT     = $(TOOLSDIR)/tools/sfnt2fnt | 
|  | FNT2FON      = $(TOOLSDIR)/tools/fnt2fon | 
|  | RC           = $(WRC) | 
|  | RC16         = $(WRC) | 
|  | RCFLAGS      = --nostdinc $(INCLUDES) $(DEFS) $(EXTRARCFLAGS) | 
|  | RC16FLAGS    = -O res16 $(RCFLAGS) | 
|  | LDPATH       = @LDPATH@ | 
|  | DLLDIR       = $(TOPOBJDIR)/dlls | 
|  | LIBDIR       = $(TOPOBJDIR)/libs | 
|  | LIBPORT      = -L$(TOPOBJDIR)/libs/port -lwine_port | 
|  | LIBUNICODE   = -L$(TOPOBJDIR)/libs/unicode -lwine_unicode | 
|  | LIBWINE      = -L$(TOPOBJDIR)/libs/wine -lwine | 
|  |  | 
|  | @SET_MAKE@ | 
|  |  | 
|  | # Installation infos | 
|  |  | 
|  | INSTALL         = @INSTALL@ $(INSTALL_FLAGS) | 
|  | INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(INSTALL_PROGRAM_FLAGS) | 
|  | INSTALL_SCRIPT  = @INSTALL_SCRIPT@ $(INSTALL_SCRIPT_FLAGS) | 
|  | INSTALL_DATA    = @INSTALL_DATA@ $(INSTALL_DATA_FLAGS) | 
|  | prefix          = @prefix@ | 
|  | exec_prefix     = @exec_prefix@ | 
|  | bindir          = @bindir@ | 
|  | libdir          = @libdir@ | 
|  | datarootdir     = @datarootdir@ | 
|  | datadir         = @datadir@ | 
|  | infodir         = @infodir@ | 
|  | mandir          = @mandir@ | 
|  | sysconfdir      = @sysconfdir@ | 
|  | includedir      = @includedir@/wine | 
|  | dlldir          = @libdir@/wine | 
|  | prog_manext     = 1 | 
|  | api_manext      = 3w | 
|  | conf_manext     = 5 | 
|  | CLEAN_FILES     = *.o *.a *.so *.ln *.$(LIBEXT) \\\#*\\\# *~ *% .\\\#* *.bak *.orig *.rej \ | 
|  | *.flc *.tab.c *.tab.h @LEX_OUTPUT_ROOT@.c core | 
|  |  | 
|  | OBJS = $(C_SRCS:.c=.o) $(EXTRA_OBJS) | 
|  |  | 
|  | RCOBJS = $(RC_SRCS:.rc=.res.o) | 
|  | LINTS  = $(C_SRCS:.c=.ln) | 
|  |  | 
|  | # Implicit rules | 
|  |  | 
|  | .SUFFIXES: .mc .rc .mc.rc .res .res.o .spec .spec.o .idl .tlb .h .ok .sfd .ttf .man.in .man | 
|  |  | 
|  | .c.o: | 
|  | $(CC) -c $(ALLCFLAGS) -o $@ $< | 
|  |  | 
|  | .s.o: | 
|  | $(AS) -o $@ $< | 
|  |  | 
|  | .mc.mc.rc: | 
|  | $(LDPATH) $(WMC) -i -U -H /dev/null -o $@ $< | 
|  |  | 
|  | .rc.res: | 
|  | $(LDPATH) $(RC) $(RCFLAGS) -fo$@ $< | 
|  |  | 
|  | .res.res.o: | 
|  | $(WINDRES) -i $< -o $@ | 
|  |  | 
|  | .spec.spec.o: | 
|  | $(WINEBUILD) $(WINEBUILDFLAGS) --dll -o $@ --main-module $(MODULE) --export $< | 
|  |  | 
|  | .idl.h: | 
|  | $(WIDL) $(IDLFLAGS) -h -H $@ $< | 
|  |  | 
|  | .idl.tlb: | 
|  | $(WIDL) $(IDLFLAGS) -t -T $@ $< | 
|  |  | 
|  | .c.ln: | 
|  | $(LINT) -c $(ALLLINTFLAGS) $< || ( $(RM) $@ && exit 1 ) | 
|  |  | 
|  | .c.ok: | 
|  | $(RUNTEST) $(RUNTESTFLAGS) $< && touch $@ | 
|  |  | 
|  | .sfd.ttf: | 
|  | $(FONTFORGE) -script $(TOPSRCDIR)/fonts/genttf.ff $< $@ | 
|  |  | 
|  | .man.in.man: | 
|  | sed -e 's,@bindir\@,$(bindir),g' -e 's,@dlldir\@,$(dlldir),g' -e 's,@PACKAGE_STRING\@,@PACKAGE_STRING@,g' $< >$@ || ($(RM) $@ && false) | 
|  |  | 
|  | # 'all' target first in case the enclosing Makefile didn't define any target | 
|  |  | 
|  | all: Makefile | 
|  |  | 
|  | filter: | 
|  | @$(TOPSRCDIR)/tools/winapi/make_filter --make $(MAKE) all | 
|  |  | 
|  | .PHONY: all filter | 
|  |  | 
|  | # Rules for resources | 
|  |  | 
|  | $(RC_BINARIES): $(BIN2RES) $(RC_BINSRC) | 
|  | $(BIN2RES) -f -o $@ $(SRCDIR)/$(RC_BINSRC) | 
|  |  | 
|  | $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res): $(WRC) $(RC_BINARIES) $(RC_TLB) | 
|  |  | 
|  | # Rules for makefile | 
|  |  | 
|  | Makefile: Makefile.in $(TOPSRCDIR)/configure | 
|  | @echo Makefile is older than $?, please rerun $(TOPSRCDIR)/configure | 
|  | @exit 1 | 
|  |  | 
|  | # Rule for linting | 
|  |  | 
|  | $(MODULE).ln : $(LINTS) | 
|  | if test "$(LINTS)" ; \ | 
|  | then \ | 
|  | $(LINT) $(ALLLINTFLAGS) -o$(MODULE) $(LINTS) ; \ | 
|  | $(MV) llib-l$(MODULE).ln $(MODULE).ln ; \ | 
|  | else \ | 
|  | $(LINT) $(ALLLINTFLAGS) -C$(MODULE) /dev/null ; \ | 
|  | fi | 
|  |  | 
|  | lint:: $(MODULE).ln | 
|  |  | 
|  | # Rules for Windows API checking | 
|  |  | 
|  | winapi_check:: dummy | 
|  | $(WINAPI_CHECK) $(WINAPI_CHECK_FLAGS) $(WINAPI_CHECK_EXTRA_FLAGS) . | 
|  |  | 
|  | .PHONY: winapi_check | 
|  |  | 
|  | # Rules for dependencies | 
|  |  | 
|  | $(SUBDIRS:%=%/__depend__): dummy | 
|  | cd `dirname $@` && $(MAKE) depend | 
|  |  | 
|  | depend: $(IDL_SRCS:.idl=.h) $(SUBDIRS:%=%/__depend__) | 
|  | $(MAKEDEP) $(INCLUDES) -C$(SRCDIR) $(C_SRCS) $(C_SRCS16) $(RC_SRCS) $(RC_SRCS16) $(MC_SRCS) $(IDL_SRCS) $(EXTRA_SRCS) | 
|  |  | 
|  | .PHONY: depend $(SUBDIRS:%=%/__depend__) | 
|  |  | 
|  | # Rules for cleaning | 
|  |  | 
|  | $(SUBDIRS:%=%/__clean__): dummy | 
|  | cd `dirname $@` && $(MAKE) clean | 
|  |  | 
|  | $(SUBDIRS:%=%/__testclean__): dummy | 
|  | cd `dirname $@` && $(MAKE) testclean | 
|  |  | 
|  | $(EXTRASUBDIRS:%=%/__clean__): dummy | 
|  | -cd `dirname $@` && $(RM) $(CLEAN_FILES) | 
|  |  | 
|  | testclean:: $(SUBDIRS:%=%/__testclean__) | 
|  |  | 
|  | clean:: $(SUBDIRS:%=%/__clean__) $(EXTRASUBDIRS:%=%/__clean__) | 
|  | $(RM) $(CLEAN_FILES) $(RC_SRCS:.rc=.res) $(RC_SRCS16:.rc=.res) $(MC_SRCS:.mc=.mc.rc) $(IDL_SRCS:.idl=.h) $(PROGRAMS) $(RC_BINARIES) $(RC_TLB) $(MANPAGES) | 
|  |  | 
|  | .PHONY: clean testclean $(SUBDIRS:%=%/__clean__) $(SUBDIRS:%=%/__testclean__) $(EXTRASUBDIRS:%=%/__clean__) | 
|  |  | 
|  | # Rules for installing | 
|  |  | 
|  | $(SUBDIRS:%=%/__install__): dummy | 
|  | cd `dirname $@` && $(MAKE) install | 
|  |  | 
|  | $(SUBDIRS:%=%/__install-lib__): dummy | 
|  | cd `dirname $@` && $(MAKE) install-lib | 
|  |  | 
|  | $(SUBDIRS:%=%/__install-dev__): dummy | 
|  | cd `dirname $@` && $(MAKE) install-dev | 
|  |  | 
|  | $(SUBDIRS:%=%/__uninstall__): dummy | 
|  | cd `dirname $@` && $(MAKE) uninstall | 
|  |  | 
|  | install:: $(INSTALLSUBDIRS:%=%/__install__) | 
|  |  | 
|  | uninstall:: $(INSTALLSUBDIRS:%=%/__uninstall__) | 
|  |  | 
|  | .PHONY: install install-lib install-dev uninstall \ | 
|  | $(SUBDIRS:%=%/__install__) $(SUBDIRS:%=%/__uninstall__) \ | 
|  | $(SUBDIRS:%=%/__install-lib__) $(SUBDIRS:%=%/__install-dev__) | 
|  |  | 
|  | # Rules for checking that no imports are missing | 
|  |  | 
|  | $(SUBDIRS:%=%/__checklink__): dummy | 
|  | @cd `dirname $@` && $(MAKE) checklink | 
|  |  | 
|  | .PHONY: checklink $(SUBDIRS:%=%/__checklink__) | 
|  |  | 
|  | # Rules for testing | 
|  |  | 
|  | $(SUBDIRS:%=%/__test__): dummy | 
|  | @cd `dirname $@` && $(MAKE) test | 
|  |  | 
|  | $(SUBDIRS:%=%/__crosstest__): dummy | 
|  | @cd `dirname $@` && $(MAKE) crosstest | 
|  |  | 
|  | .PHONY: check test crosstest $(SUBDIRS:%=%/__test__) $(SUBDIRS:%=%/__crosstest__) | 
|  |  | 
|  | # Misc. rules | 
|  |  | 
|  | $(MC_SRCS:.mc=.mc.rc): $(WMC) | 
|  |  | 
|  | $(IDL_SRCS:.idl=.h): $(WIDL) | 
|  |  | 
|  | $(RC_TLB:.idl=.tlb): $(WIDL) | 
|  |  | 
|  | $(SUBDIRS): dummy | 
|  | @cd $@ && $(MAKE) | 
|  |  | 
|  | dummy: | 
|  |  | 
|  | .PHONY: dummy $(SUBDIRS) | 
|  |  | 
|  | # End of global rules |