#include "../autoconf.h"
#include "../Wine.tmpl"

MODULE = if1632

SRCS = \
	callback.c \
	relay.c

#ifdef WINELIB
CALLOBJS =
DLLS =
#else
CALLOBJS = \
	call16.o \
	call32.o
DLLS = \
	commdlg \
	compobj \
	ddeml \
	gdi \
	kernel \
	keyboard \
	mmsystem \
	mouse \
	ole2 \
	ole2conv \
	ole2disp \
	ole2nls \
	ole2prox \
	olecli \
	olesvr \
	shell \
	sound \
	storage \
	stress \
	system \
	toolhelp \
	user \
	win87em \
	winprocs \
	winsock
#endif

OBJS = $(SRCS:.c=.o) $(CALLOBJS) $(DLLS:%=dll_%.o) $(DLLS:%=tab_%.o)

BUILD = $(TOP)/tools/build

#define MakeDllFromSpec(name)					@@\
Concat(dll_,name.S) Concat(tab_,name.c): name.spec $(BUILD)	@@\
	$(BUILD) -spec name.spec				@@\

/*
 * If you add a new spec file, copy one of these lines
 */
MakeDllFromSpec(commdlg)
MakeDllFromSpec(compobj)
MakeDllFromSpec(ddeml)
MakeDllFromSpec(gdi)
MakeDllFromSpec(kernel)
MakeDllFromSpec(keyboard)
MakeDllFromSpec(shell)
MakeDllFromSpec(mmsystem)
MakeDllFromSpec(mouse)
MakeDllFromSpec(ole2)
MakeDllFromSpec(ole2conv)
MakeDllFromSpec(ole2disp)
MakeDllFromSpec(ole2nls)
MakeDllFromSpec(ole2prox)
MakeDllFromSpec(olecli)
MakeDllFromSpec(olesvr)
MakeDllFromSpec(sound)
MakeDllFromSpec(storage)
MakeDllFromSpec(stress)
MakeDllFromSpec(system)
MakeDllFromSpec(toolhelp)
MakeDllFromSpec(user)
MakeDllFromSpec(win87em)
MakeDllFromSpec(winprocs)
MakeDllFromSpec(winsock)

WineRelocatableTarget($(MODULE),,$(OBJS))
DependTarget()

#ifndef WINELIB

call32.S: $(BUILD) $(DLLS:%=dll_%.S)
	$(BUILD) -call32 `cat $(DLLS:%=dll_%.S) | grep CallTo32_ | sed 's/.*CallTo32_\(.*\)/\1/' | sort | uniq` > call32.S

call16.S: $(BUILD) $(TOP)/include/callback.h
	$(BUILD) -call16 `cat $(TOP)/include/callback.h | grep "extern.*CallTo16_" | sed 's/.*CallTo16_\(.*\)(.*/\1/' | sort | uniq` > call16.S

#endif  /* WINELIB */

includes::

install::

clean::
	$(RM) dll_* tab_* call32.S call16.S
