# Makefile for
# lrzip. This is processed by configure to produce the final
# Makefile

prefix=/usr
exec_prefix=${prefix}
INSTALL_BIN=$(exec_prefix)/bin
INSTALL_MAN=$(prefix)/share/man

LIBS=-llzo2 -lbz2 
CC=gcc
CXX=g++
CFLAGS=-O2 -march=i686 -Wall -W
CXXFLAGS=-O2 -march=i686 -Wall -W

INSTALLCMD=/usr/bin/install -c


srcdir=.
SHELL=/bin/sh


.SUFFIXES:
.SUFFIXES: .c .o

OBJS= rzip.o runzip.o main.o stream.o util.o crc32.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 \
  ZLib.o \


# note that the -I. is needed to handle config.h when using VPATH
.c.o:
	$(CC) -I. -I$(srcdir) $(CFLAGS) -c $< -o $@

all: lrzip

ZLib.o: lzma/ZLib.cpp
	$(CXX) $(CXXFLAGS) -c lzma/ZLib.cpp

LZMADecoder.o: lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Compress/LZMA/LZMADecoder.cpp

LZMAEncoder.o: lzma/C/7zip/Compress/LZMA/LZMAEncoder.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Compress/LZMA/LZMAEncoder.cpp

LZInWindow.o: lzma/C/7zip/Compress/LZ/LZInWindow.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Compress/LZ/LZInWindow.cpp

LZOutWindow.o: lzma/C/7zip/Compress/LZ/LZOutWindow.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Compress/LZ/LZOutWindow.cpp

RangeCoderBit.o: lzma/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Compress/RangeCoder/RangeCoderBit.cpp

InBuffer.o: lzma/C/7zip/Common/InBuffer.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Common/InBuffer.cpp

OutBuffer.o: lzma/C/7zip/Common/OutBuffer.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Common/OutBuffer.cpp

FileStreams.o: lzma/C/7zip/Common/FileStreams.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/7zip/Common/FileStreams.cpp

Alloc.o: lzma/C/Common/Alloc.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/Alloc.cpp

C_FileIO.o: lzma/C/Common/C_FileIO.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/C_FileIO.cpp

CommandLineParser.o: lzma/C/Common/CommandLineParser.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/CommandLineParser.cpp

CRC.o: lzma/C/Common/CRC.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/CRC.cpp

MyWindows.o: lzma/C/Common/MyWindows.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/MyWindows.cpp

String.o: lzma/C/Common/String.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/String.cpp

StringConvert.o: lzma/C/Common/StringConvert.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/StringConvert.cpp

StringToInt.o: lzma/C/Common/StringToInt.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/StringToInt.cpp

Vector.o: lzma/C/Common/Vector.cpp
	$(CXX) $(CXXFLAGS) -c lzma/C/Common/Vector.cpp

man: rzip.1

install: all
	-mkdir -p $(DESTDIR)${INSTALL_BIN}
	${INSTALLCMD} -m 755 lrzip $(DESTDIR)${INSTALL_BIN}
	-mkdir -p $(DESTDIR)${INSTALL_MAN}/man1
	${INSTALLCMD} -m 644 $(srcdir)/lrzip.1 $(DESTDIR)${INSTALL_MAN}/man1/

liblzma: 
	cd lzma && make && cd ../

lrzip: $(OBJS)
	$(CXX) $(CXXFLAGS) -static -o lrzip $(OBJS) $(LIBS)

lrzip.1: lrzip.yo
	yodl2man -o lrzip.1 lrzip.yo

web/lrzip-man.html: lrzip.yo
	mkdir -p man
	yodl2html -o web/lrzip-man.html lrzip.yo

docs: lrzip.1 web/lrzip-man.html

clean:
	cd lzma && make clean && cd ../
	rm -f *~ $(OBJS) lrzip config.cache config.log config.status
