SRC=$(wildcard libexdupe/quicklz/*.c libexdupe/bzip2/*.c libexdupe/zlib/*.c lua/*.c)
SRC2=$(addprefix -x c , $(SRC))

UNAME := $(shell uname)

ifeq ($(UNAME), Linux)
STATIC :=-static
endif
ifeq ($(UNAME), Darwin)
STATIC :=
endif

all:
	g++ -Wno-strict-aliasing $(STATIC) -Wall -O3 -o exdupe luawrapper.cpp exdupe.cpp  $(SRC2) -x c++ utilities.cpp bytebuffer.cpp libexdupe/*.cpp libexdupe/skein/*.cpp trex/trex.cpp io.cpp -lpthread

d:
	g++ -Wall -g -o exdupe lua/*.c trex/trex.cpp dedupe/dedupe.cpp bytebuffer.cpp exdupe.cpp io.cpp luawrapper.cpp dedupe/quicklz/quicklz.c utilities.cpp dedupe/skein/skein.cpp dedupe/skein/skein_block.cpp -lpthread
	ls -l exdupe

gr:
	g++ -static -Wno-strict-aliasing -Wall -O3 -o exdupe trex/trex.cpp dedupe.cpp exdupe.cpp io.cpp quicklz/quicklz.c utilities.cpp skein/skein.cpp skein/skein_block.cpp -lpthread
	ls -l exdupe


lib:
	rm *.o *.a
	g++ -Wno-strict-aliasing -static -Wall -c -O3 libexdupe.cpp -lpthread          -x c zlib/adler32.c  -x c zlib/compress.c  -x c zlib/crc32.c  -x c zlib/deflate.c  -x c zlib/gzclose.c  -x c zlib/gzlib.c  -x c zlib/gzread.c  -x c zlib/gzwrite.c  -x c zlib/infback.c  -x c zlib/inffast.c  -x c zlib/inflate.c  -x c zlib/inftrees.c  -x c zlib/trees.c  -x c zlib/uncompr.c  -x c zlib/zutil.c           -x c bzip2/blocksort.c    -x c bzip2/bzlib.c  -x c bzip2/compress.c  -x c bzip2/crctable.c  -x c bzip2/decompress.c -x c bzip2/huffman.c   -x c bzip2/randtable.c
	ar cqs libexdupe-linux-x64.a *.o
	cp libexdupe-linux-x64.a ../src/libexdupe-linux-x64.a
		
ar:
	/opt/aCC/bin/aCC +Osize +O3 -mt -o exdupe trex/trex.cpp dedupe.cpp exdupe.cpp io.cpp quicklz/quicklz.c utilities.cpp skein/skein.cpp skein/skein_block.cpp -lpthread
	strip exdupe

a:
	/opt/aCC/bin/aCC +Osize +O3 -mt +Oinlinebudget=1000000 +Onolimit +inline_level=3 -o exdupe trex/trex.cpp exdupe.cpp io.cpp utilities.cpp -lpthread
	strip exdupe

xr:
	/usr/vacpp/bin/xlc++_r -o exdupe -O3 quicklz/quicklz.c trex/trex.cpp dedupe.cpp io.cpp utilities.cpp skein/skein_block.cpp skein/skein.cpp exdupe.cpp

x:	
	/usr/vacpp/bin/xlc++_r -o exdupe -O3 trex/trex.cpp io.cpp utilities.cpp exdupe.cpp
