# Makefile for zlib, derived from Makefile.dj2.
# Modified for mingw32 by C. Spieler, 6/16/98.
# Updated for zlib-1.2.x by Cosmin Truta, 11-Mar-2003.
# Tested under Cygwin and MinGW.

# Copyright (C) 1995-1998 Jean-loup Gailly.
# For conditions of distribution and use, see copyright notice in zlib.h 

# To compile, or to compile and test, type:
# 
#   make -fmakefile.gcc;  make test -fmakefile.gcc
# 
# To install libz.a, zconf.h and zlib.h in the system directories, type:
# 
#    make install -fmakefile.gcc
# 

LIB = libz.a
SHAREDLIB = zlib.dll
VER = 1.2.0

CC = gcc
#CFLAGS = -DDEBUG -MMD -g
CFLAGS = $(LOC) -O3 -Wall

AS = $(CC)
ASFLAGS = $(LOC) -Wall

LD = $(CC)
LDFLAGS = $(LOC) -s

AR = ar
ARFLAGS = rcs

RC = windres

CP = cp -fp
# If GNU install is available, replace $(CP) with install.
INSTALL = $(CP)
RM = rm -f

prefix = /usr/local
exec_prefix = $(prefix)

OBJS = adler32.o compress.o crc32.o deflate.o gzio.o infback.o \
       inffast.o inflate.o inftrees.o trees.o uncompr.o zutil.o

DLLDEF = win32/zlibgcc.def

# to use the asm code: make OBJA=match.o
OBJA =

TEST_OBJS = example.o minigzip.o

all: $(LIB) $(SHAREDLIB) example minigzip

test: all
	./example
	echo hello world | ./minigzip | ./minigzip -d 

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

libz.a: $(OBJS)
	$(AR) $(ARFLAGS) $@ $(OBJS)

$(SHAREDLIB): $(OBJS) $(DLLDEF) zlibrc.o
	dllwrap --driver-name $(CC) --def $(DLLDEF) -o $@ $(OBJS) zlibrc.o

example: example.o $(LIB)
	$(LD) -o $@ $< $(LIB)

minigzip: minigzip.o $(LIB)
	$(LD) -o $@ $< $(LIB)

zlibrc.o: win32/zlib.rc
	-$(RC) -o $@ --define GCC_WINDRES win32/zlib.rc


# INCLUDE_PATH and LIBRARY_PATH were set for [make] in djgpp.env .

.PHONY : uninstall clean

install: zlib.h zconf.h $(LIB)
	-@if not exist $(INCLUDE_PATH)/nul mkdir $(INCLUDE_PATH)
	-@if not exist $(LIBRARY_PATH)/nul mkdir $(LIBRARY_PATH)
	$(INSTALL) zlib.h $(INCLUDE_PATH)
	$(INSTALL) zconf.h $(INCLUDE_PATH)
	$(INSTALL) $(LIB) $(LIBRARY_PATH)

uninstall:
	$(RM) $(INCLUDE_PATH)/zlib.h
	$(RM) $(INCLUDE_PATH)/zconf.h
	$(RM) $(LIBRARY_PATH)/libz.a

clean:
	$(RM) *.o
	$(RM) *.exe
	$(RM) libz.a
	$(RM) zlib.dll
	$(RM) foo.gz

adler32.o: zlib.h zconf.h
compress.o: zlib.h zconf.h
crc32.o: crc32.h zlib.h zconf.h
deflate.o: deflate.h zutil.h zlib.h zconf.h
example.o: zlib.h zconf.h
gzio.o: zutil.h zlib.h zconf.h
inffast.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
inflate.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
infback.o: zutil.h zlib.h zconf.h inftrees.h inflate.h inffast.h
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
minigzip.o:  zlib.h zconf.h 
trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
uncompr.o: zlib.h zconf.h
zutil.o: zutil.h zlib.h zconf.h  
