# This product contains certain software code or other information
# ("AT&T Software") proprietary to AT&T Corp. ("AT&T").  The AT&T
# Software is provided to you "AS IS".  YOU ASSUME TOTAL RESPONSIBILITY
# AND RISK FOR USE OF THE AT&T SOFTWARE.  AT&T DOES NOT MAKE, AND
# EXPRESSLY DISCLAIMS, ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND
# WHATSOEVER, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
# MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, WARRANTIES OF
# TITLE OR NON-INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHTS, ANY
# WARRANTIES ARISING BY USAGE OF TRADE, COURSE OF DEALING OR COURSE OF
# PERFORMANCE, OR ANY WARRANTY THAT THE AT&T SOFTWARE IS "ERROR FREE" OR
# WILL MEET YOUR REQUIREMENTS.

# Unless you accept a license to use the AT&T Software, you shall not
# reverse compile, disassemble or otherwise reverse engineer this
# product to ascertain the source code for any AT&T Software.

# (c) AT&T Corp. All rights reserved.  AT&T is a registered trademark of AT&T Corp.

# **************************************************************************

# History:
#
#      24/11/99  - initial release by Hartmut Liefke, liefke@seas.upenn.edu
#                                     Dan Suciu,      suciu@research.att.com

BIN = ./unix

all : $(BIN)/xmill $(BIN)/xdemill $(BIN)/xbmill $(BIN)/xbdemill

clean:
	rm -r -f $(TMP)/* $(BIN)/xmill $(BIN)/xdemill $(BIN)/xbmill $(BIN)/xbdemill

TMP = ./tmp
SRC = ./src

CPP = g++
CPPFLAGS_XMILL = -O3 -c -Izlib -DXMILL
CPPFLAGS_XDEMILL = -O3 -c -Izlib -DXDEMILL

CC = gcc
CFLAGS = -O3 -c
LINK=g++
# LINK_FLAGS = -L.

ZLIB_OBJS = $(TMP)/adler32.o $(TMP)/crc32.o $(TMP)/deflate.o $(TMP)/trees.o $(TMP)/uncompr.o \
            $(TMP)/inffast.o $(TMP)/inflate.o $(TMP)/inftrees.o $(TMP)/infutil.o $(TMP)/infblock.o \
            $(TMP)/infcodes.o $(TMP)/zutil.o

BZLIB_OBJS= $(TMP)/blocksort.o $(TMP)/bzlib.o $(TMP)/compress_b.o $(TMP)/crctable.o $(TMP)/decompress.o \
            $(TMP)/huffman.o $(TMP)/randtable.o

XMILL_OBJSPART  =  $(TMP)/CompressMan.o $(TMP)/ContMan.o $(TMP)/PathDict.o $(TMP)/PathTree.o \
                   $(TMP)/RepeatCompress.o $(TMP)/RunLenCompress.o $(TMP)/SAXClient.o \
                   $(TMP)/StdCompress.o $(TMP)/VPathExprMan.o $(TMP)/Main.o $(TMP)/MemMan.o \
                   $(TMP)/OrCompress.o $(TMP)/Options.o $(TMP)/MemStreamer.o \
                   $(TMP)/DivCompress.o $(TMP)/EnumCompress.o $(TMP)/Error.o $(TMP)/FSM.o

XDEMILL_OBJSPART = $(TMP)/CompressMan_u.o $(TMP)/Decode_u.o $(TMP)/RepeatCompress_u.o \
                   $(TMP)/RunLenCompress_u.o $(TMP)/StdCompress_u.o $(TMP)/UnCompCont_u.o \
                   $(TMP)/VPathExprMan_u.o $(TMP)/Main_u.o $(TMP)/MemMan_u.o $(TMP)/OrCompress_u.o \
                   $(TMP)/DivCompress_u.o $(TMP)/EnumCompress_u.o $(TMP)/Error_u.o \
                   $(TMP)/Options_u.o $(TMP)/MemStreamer_u.o

XMILLOBJS    = $(ZLIB_OBJS)  $(XMILL_OBJSPART) $(TMP)/ZLib.o
XBMILLOBJS   = $(BZLIB_OBJS) $(XMILL_OBJSPART) $(TMP)/ZLib_b.o

XDEMILLOBJS  = $(ZLIB_OBJS)  $(XDEMILL_OBJSPART) $(TMP)/ZLib_u.o
XBDEMILLOBJS = $(BZLIB_OBJS) $(XDEMILL_OBJSPART) $(TMP)/ZLib_bu.o

$(BIN)/xmill : $(XMILLOBJS)
	$(LINK) -o $(BIN)/xmill $(LINK_FLAGS) $(XMILLOBJS)

$(BIN)/xdemill : $(XDEMILLOBJS)
	$(LINK) -o $(BIN)/xdemill $(LINK_FLAGS) $(XDEMILLOBJS)

$(BIN)/xbmill : $(XBMILLOBJS)
	$(LINK) -o $(BIN)/xbmill $(LINK_FLAGS) $(XBMILLOBJS)

$(BIN)/xbdemill : $(XBDEMILLOBJS)
	$(LINK) -o $(BIN)/xbdemill $(LINK_FLAGS) $(XBDEMILLOBJS)

#minigzip: $(ZLIB_OBJS) minigzip.o gzio.o
# 	$(LINK) -o minigzip $(LINK_FLAGS) $(ZLIB_OBJS) minigzip.o gzio.o
#
#bzip: $(BZLIB_OBJS) bzip2.o
#	$(LINK) -o xmlbunzip $(LINK_FLAGS) $(ZLIB_OBJS) bzip2.o

$(TMP)/CompressMan.o    : $(SRC)/CompressMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/CompressMan.cpp

$(TMP)/ContMan.o        : $(SRC)/ContMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/ContMan.cpp

$(TMP)/DivCompress.o    : $(SRC)/DivCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/DivCompress.cpp

$(TMP)/EnumCompress.o   : $(SRC)/EnumCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/EnumCompress.cpp

$(TMP)/Error.o          : $(SRC)/Error.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/Error.cpp

$(TMP)/FSM.o            : $(SRC)/FSM.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/FSM.cpp

$(TMP)/Main.o           : $(SRC)/Main.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/Main.cpp

$(TMP)/MemMan.o         : $(SRC)/MemMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/MemMan.cpp

$(TMP)/MemStreamer.o    : $(SRC)/MemStreamer.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/MemStreamer.cpp

$(TMP)/Options.o        : $(SRC)/Options.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/Options.cpp

$(TMP)/OrCompress.o     : $(SRC)/OrCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/OrCompress.cpp

$(TMP)/PathDict.o       : $(SRC)/PathDict.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/PathDict.cpp

$(TMP)/PathTree.o       : $(SRC)/PathTree.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/PathTree.cpp

$(TMP)/RepeatCompress.o : $(SRC)/RepeatCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/RepeatCompress.cpp

$(TMP)/RunLenCompress.o : $(SRC)/RunLenCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/RunLenCompress.cpp

$(TMP)/SAXClient.o      : $(SRC)/SAXClient.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/SAXClient.cpp

$(TMP)/StdCompress.o    : $(SRC)/StdCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/StdCompress.cpp

$(TMP)/VPathExprMan.o   : $(SRC)/VPathExprMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/VPathExprMan.cpp

#$(TMP)/VRegExpr.o       : $(SRC)/VRegExpr.cpp
#	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/VRegExpr.cpp

$(TMP)/ZLib.o           : $(SRC)/ZLib.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XMILL) $(SRC)/ZLib.cpp

$(TMP)/ZLib_b.o         : $(SRC)/ZLib.cpp
	$(CPP) -o $*.o -I./bzlib $(CPPFLAGS_XMILL) -DUSE_BZIP $(SRC)/ZLib.cpp

#********************************************************************

$(TMP)/CompressMan_u.o    : $(SRC)/CompressMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/CompressMan.cpp

$(TMP)/Decode_u.o         : $(SRC)/Decode.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/Decode.cpp

$(TMP)/DivCompress_u.o    : $(SRC)/DivCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/DivCompress.cpp

$(TMP)/EnumCompress_u.o   : $(SRC)/EnumCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/EnumCompress.cpp

$(TMP)/Error_u.o          : $(SRC)/Error.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/Error.cpp

$(TMP)/Main_u.o           : $(SRC)/Main.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/Main.cpp

$(TMP)/MemMan_u.o         : $(SRC)/MemMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/MemMan.cpp

$(TMP)/MemStreamer_u.o    : $(SRC)/MemStreamer.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/MemStreamer.cpp

$(TMP)/Options_u.o        : $(SRC)/Options.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/Options.cpp

$(TMP)/OrCompress_u.o     : $(SRC)/OrCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/OrCompress.cpp

$(TMP)/RepeatCompress_u.o : $(SRC)/RepeatCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/RepeatCompress.cpp

$(TMP)/RunLenCompress_u.o : $(SRC)/RunLenCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/RunLenCompress.cpp

$(TMP)/StdCompress_u.o    : $(SRC)/StdCompress.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/StdCompress.cpp

$(TMP)/UnCompCont_u.o     : $(SRC)/UnCompCont.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/UnCompCont.cpp

$(TMP)/VPathExprMan_u.o   : $(SRC)/VPathExprMan.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/VPathExprMan.cpp

$(TMP)/ZLib_u.o           : $(SRC)/ZLib.cpp
	$(CPP) -o $*.o $(CPPFLAGS_XDEMILL) $(SRC)/ZLib.cpp

$(TMP)/ZLib_bu.o          : $(SRC)/ZLib.cpp
	$(CPP) -o $*.o -I./bzlib $(CPPFLAGS_XDEMILL) -DUSE_BZIP $(SRC)/ZLib.cpp

#********************************************************************

$(TMP)/adler32.o : ./zlib/adler32.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/adler32.c

$(TMP)/crc32.o : ./zlib/crc32.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/crc32.c

$(TMP)/compress.o : ./zlib/compress.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/compress.c

$(TMP)/deflate.o : ./zlib/deflate.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/deflate.c

$(TMP)/gzio.o : ./zlib/gzio.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/gzio.c

$(TMP)/infblock.o : ./zlib/infblock.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/infblock.c

$(TMP)/infcodes.o : ./zlib/infcodes.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/infcodes.c

$(TMP)/inffast.o : ./zlib/inffast.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/inffast.c

$(TMP)/inflate.o : ./zlib/inflate.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/inflate.c

$(TMP)/inftrees.o : ./zlib/inftrees.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/inftrees.c

$(TMP)/infutil.o : ./zlib/infutil.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/infutil.c

$(TMP)/trees.o : ./zlib/trees.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/trees.c

$(TMP)/uncompr.o : ./zlib/uncompr.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/uncompr.c

$(TMP)/zutil.o : ./zlib/zutil.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/zutil.c

$(TMP)/minigzip.o : ./zlib/minigzip.c
	$(CC) -o $*.o $(CFLAGS) ./zlib/minigzip.c

#********************************************************************

$(TMP)/blocksort.o : ./bzlib/blocksort.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/blocksort.c

$(TMP)/compress_b.o : ./bzlib/compress.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/compress.c

$(TMP)/crctable.o : ./bzlib/crctable.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/crctable.c

$(TMP)/decompress.o : ./bzlib/decompress.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/decompress.c

$(TMP)/huffman.o : ./bzlib/huffman.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/huffman.c

$(TMP)/randtable.o : ./bzlib/randtable.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/randtable.c

$(TMP)/bzlib.o : ./bzlib/bzlib.c
	$(CC) -o $*.o $(CFLAGS) ./bzlib/bzlib.c

#$(TMP)/bzip2.o : ./bzlib/bzip2.c
#	$(CC) -o $*.o $(CFLAGS) ./bzlib/bzip2.c

#********************************************************************

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

