-EXEEXT=.exe
-OBJS = ar.o io.o encode.o decode.o maketree.o maketbl.o huf.o
+CFLAGS=-g -DPROTOTYPES=1 -Wall
+CPPFLAGS=-I.
+ifeq (cygwin,$(patsubst CYGWIN%,cygwin,$(shell uname -s)))
+ EXEEXT=.exe
+else
+ EXEEXT=
+endif
+OBJS1 = ar.o io.o encode.o decode.o maketree.o maketbl.o huf.o \
+ strlib.o pathlib.o filelib.o header.o add.o extract.o list.o \
+ error.o
+OBJS2 = getopt_long.o
+
+OBJS = $(OBJS1) $(OBJS2)
+
+DEPS = $(OBJS:.o=.d)
TARGET = olha$(EXEEXT)
$(TARGET): $(OBJS)
$(CC) $(CFLAGS) $^ -o $@
+proto:
+ sh ./cproto.sh $(OBJS1:.o=.c)
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
+
clean:
- $(RM) $(OBJS) $(TARGET)
+ $(RM) $(OBJS) $(TARGET) $(TARGET).stackdump
+
+distclean: clean
+ $(RM) $(DEPS) tests/test.log
+
+install: $(TARGET)
+ install -m 755 olha$(EXEEXT) /usr/local/bin
+
+check: $(TARGET) randtest
+ sh ./tests/lha-test.sh 2 10 3 4 5 7 8 16 11
+ # 12: testing the end of line conversion.
+ # 13: testing the kanji code conversion.
+ # 14: testing to handle symbolic links
+ # 15: testing to self extracting archive
+ # 17: testing to remove relative path
+ # 18: restore directory permission
+ sh ./test.sh
+
+t: $(TARGET)
+ cd t && python lha-test.py
+
+randtest: $(TARGET)
+ cd ./randtest && PATH=..:$$PATH ruby randtest.rb
+
+# include $(wildcard *.d)
+include $(DEPS)
+
+%.d: %.c
+ @echo creating $@
+ @set -e; $(CC) -M $(CPPFLAGS) $< \
+ | sed 's/\($*\)\.o[ :]*/\1.o $@ : /g' > $@; \
+ [ -s $@ ] || rm -f $@
+
+.PHONY: clean distclean install check t randtest proto