#
# tools section
#

AR= ar rc
CC=gcc
EMXOMF=emxomf
CP= cp
RANLIB=ar s
RM = @rm -f

#
#
#

DEBUG = -g
DEFINES = -D_REXX_SUPPORT -D_BACKWARD_COMPATIBILITY
WARNINGS = -Wall -W -Wimplicit -Wno-unused
CFLAGS  = -mpentium -Zmt -I$(X11ROOT)/XFree86/include $(DEFINES) $(DEBUG) $(WARNINGS)
CFLAGS += -O4
LDFLAGS = $(DEBUG) -Zmt
LIBS    = -L$(X11ROOT)/XFree86/lib -lxf86_gcc


.SUFFIXES: .c .cpp .cxx .C .o. .obj .exe .a .lib

default: termsize.dll termsize.lib sigwinch.lib tags

all: default r.exe s.exe t.exe

run: termsize.dll termsize.cmd
	termsize.cmd /s

SRCS = r.c

OBJS= $(SRCS:.c=.o)

# examples
r.exe: r.o termsize.a
	$(CC) $(LDFLAGS) -o $@ $^

s.exe: s.o sigwinch.a termsize.a
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)

t.exe: t.o sigwinch.a termsize.a
	$(CC) $(LDFLAGS) -o $@ $^ $(LIBS)

termsize.def: termsize.def.templ termsize.obj
	copy $< $@
	emxexp termsize.obj >> $@

termsize.a: termsize.def
	emximp -o $@ termsize.def

termsize.lib: termsize.a

termsize.obj: termsize.c termsize.h

termsize.dll: termsize.obj termsize.def
#	$(CC) -s -Zlinker /e:2 -Zomf -Zdll -Zso -Zsys -Zmt -o $@ termsize.obj termsize.def -L. -lxf86_gcc
	$(CC) -s -Zomf -Zdll -Zso -Zsys -Zmt -Zlinker /NOI -Zmap=termsize.map -o $@ termsize.obj termsize.def $(LIBS)


sigwinch.a: sigwinch.o
	ar rs $@ $^

sigwinch.o: sigwinch.c sigwinch.h termsize.h

#
# add dependencies here
#

#
# generic part
#

%.o : %.c
	$(CC) $(CFLAGS) -c $< -o $@

%.o : %.cpp
	$(CC) $(CFLAGS) -c $< -o $@

%.o : %.C
	$(CC) $(CFLAGS) -c $< -o $@

%.obj : %.c
	$(CC) $(CFLAGS) -Zomf -c $< -o $@

%.exe : %.o
	$(CC) $(LDFLAGS) -o $@ $^

%.exe: %.obj
	$(CC) $(LDFLAGS) -Zomf -o $@ $^

%.lib: %.a
	$(EMXOMF) $<

clean:
	$(RM) *.o *.obj
	$(RM) core

veryclean: clean
	$(RM) *.a *.lib *.exe
	$(RM) *.dll *.map

tags: termsize.c termsize.h sigwinch.c sigwinch.h
	@ctags $^
