PROG = liblzma.a
CXX = g++ -O3 -Wall -W $(CXXFLAGS)
CC = gcc -O3 -Wall -W $(CFLAGS)
AR = ar
RM = rm -f
ASM = nasm
# *** change below to 7zCrc.o if you do not want or need assembler code *** #
#
ASM_OBJ=7zCrcT8.o 7zCrcT8U.o
#
# *** above needs changing if you do not want assembler code      *** #
CFLAGS = -c


LZMA_CFLAGS=-c -I. -I./CPP -I./CPP/7zip -I./CPP/myWindows -I./CPP/include_windows \
	-DCOMPRESS_MF_MT -D_REENTRANT

OBJS = \
  LZMADecoder.o \
  LZMAEncoder.o \
  LZOutWindow.o \
  RangeCoderBit.o \
  InBuffer.o \
  OutBuffer.o \
  StreamUtils.o \
  CRC.o \
  $(ASM_OBJ) \
  MatchFinder.o \
  C_FileIO.o \
  Threads.o \
  MatchFinderMt.o \
  LZMALib.o 

all: $(PROG)

$(PROG): $(OBJS)
	$(AR) r $(PROG) $(OBJS)

7zCrc.o: C/7zCrc.c
	$(CC) $(CFLAGS) $(LZMA_CFLAGS) C/7zCrc.c

7zCrcT8.o: C/7zCrcT8.c
	$(CC) $(CFLAGS) $(LZMA_CFLAGS) C/7zCrcT8.c

7zCrcT8U.o: ASM/x86/7zCrcT8U.s
	$(ASM) -f elf -o 7zCrcT8U.o ASM/x86/7zCrcT8U.s

LZMALib.o: LZMALib.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) LZMALib.cpp

LZMADecoder.o:  CPP/7zip/Compress/LZMA/LZMADecoder.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Compress/LZMA/LZMADecoder.cpp

LZMAEncoder.o: CPP/7zip/Compress/LZMA/LZMAEncoder.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Compress/LZMA/LZMAEncoder.cpp

LZOutWindow.o: CPP/7zip/Compress/LZ/LZOutWindow.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Compress/LZ/LZOutWindow.cpp

RangeCoderBit.o: CPP/7zip/Compress/RangeCoder/RangeCoderBit.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Compress/RangeCoder/RangeCoderBit.cpp

InBuffer.o: CPP/7zip/Common/InBuffer.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Common/InBuffer.cpp

OutBuffer.o: CPP/7zip/Common/OutBuffer.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Common/OutBuffer.cpp

StreamUtils.o: CPP/7zip/Common/StreamUtils.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/7zip/Common/StreamUtils.cpp

C_FileIO.o: CPP/Common/C_FileIO.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/Common/C_FileIO.cpp

CRC.o: CPP/Common/CRC.cpp
	$(CXX) $(CFLAGS) $(LZMA_CFLAGS) CPP/Common/CRC.cpp

Threads.o: C/Threads.c
	$(CC) $(CFLAGS) $(LZMA_CFLAGS) C/Threads.c

MatchFinder.o: C/Compress/Lz/MatchFinder.c
	$(CC) $(CFLAGS) $(LZMA_CFLAGS) C/Compress/Lz/MatchFinder.c

MatchFinderMt.o: C/Compress/Lz/MatchFinderMt.c
	$(CC) $(CFLAGS) $(LZMA_CFLAGS) C/Compress/Lz/MatchFinderMt.c


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