## Makefile for LZMA encoder/decoder. Should compile with GCC 3.3 and
## later on GNU/Linux and *BSD.

PROG = lzma

## Compile only bt4, hc3 and hc4 match finders:
CXX = gcc -DCOMPRESS_MF_BT -DCOMPRESS_MF_BT4 -DCOMPRESS_MF_HC \
		-I ../../../ -c $(CFLAGS)
LD = gcc $(CFLAGS)

## Avoid dependency on libstdc++ and libgcc_s:
LIB = -lm -lsupc++ -static-libgcc
## LIB = -lm -lstdc++

RM = rm -f

OBJS = \
  LzmaAlone.o \
  LZMADecoder.o \
  LZMAEncoder.o \
  LZInWindow.o \
  LZOutWindow.o \
  RangeCoderBit.o \
  InBuffer.o \
  OutBuffer.o \
  FileStreams.o \
  Alloc.o \
  C_FileIO.o \
  CommandLineParser.o \
  CRC.o \
  String.o \
  StringConvert.o \
  StringToInt.o \
  Vector.o \


all: $(PROG)

$(PROG): $(OBJS)
	$(LD) -o $(PROG) $(LDFLAGS) $(OBJS) $(LIB)

LzmaAlone.o: LzmaAlone.cpp
	$(CXX) LzmaAlone.cpp

LZMADecoder.o: ../LZMA/LZMADecoder.cpp
	$(CXX) ../LZMA/LZMADecoder.cpp

LZMAEncoder.o: ../LZMA/LZMAEncoder.cpp
	$(CXX) ../LZMA/LZMAEncoder.cpp

LZInWindow.o: ../LZ/LZInWindow.cpp
	$(CXX) ../LZ/LZInWindow.cpp

LZOutWindow.o: ../LZ/LZOutWindow.cpp
	$(CXX) ../LZ/LZOutWindow.cpp

RangeCoderBit.o: ../RangeCoder/RangeCoderBit.cpp
	$(CXX) ../RangeCoder/RangeCoderBit.cpp

InBuffer.o: ../../Common/InBuffer.cpp
	$(CXX) ../../Common/InBuffer.cpp

OutBuffer.o: ../../Common/OutBuffer.cpp
	$(CXX) ../../Common/OutBuffer.cpp

FileStreams.o: ../../Common/FileStreams.cpp
	$(CXX) ../../Common/FileStreams.cpp

Alloc.o: ../../../Common/Alloc.cpp
	$(CXX) ../../../Common/Alloc.cpp

C_FileIO.o: ../../../Common/C_FileIO.cpp
	$(CXX) ../../../Common/C_FileIO.cpp

CommandLineParser.o: ../../../Common/CommandLineParser.cpp
	$(CXX) ../../../Common/CommandLineParser.cpp

CRC.o: ../../../Common/CRC.cpp
	$(CXX) ../../../Common/CRC.cpp

String.o: ../../../Common/String.cpp
	$(CXX) ../../../Common/String.cpp

StringConvert.o: ../../../Common/StringConvert.cpp
	$(CXX) ../../../Common/StringConvert.cpp

StringToInt.o: ../../../Common/StringToInt.cpp
	$(CXX) ../../../Common/StringToInt.cpp

Vector.o: ../../../Common/Vector.cpp
	$(CXX) ../../../Common/Vector.cpp

clean:
	-$(RM) $(PROG) $(OBJS)

.PHONY: all clean
