OSDN Git Service

added add.c extract.c list.c
[lha/olha.git] / makefile
index 5f59668..b33971b 100644 (file)
--- a/makefile
+++ b/makefile
@@ -1,17 +1,60 @@
-CFLAGS=-g
-EXEEXT=.exe
-OBJS = ar.o io.o encode.o decode.o maketree.o maketbl.o huf.o getopt_long.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
+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) -I. -c $<
+       $(CC) $(CFLAGS) $(CPPFLAGS) -c $<
 
 clean:
        $(RM) $(OBJS) $(TARGET) $(TARGET).stackdump
 
-check test: $(TARGET)
-       sh ./tests/lha-test.sh 2
-#      sh ./test.sh
+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