# ======================================================================== # Makefile - build md5 tool from RFC 1321 source # Andrew Ho (andrew@tellme.com) # # This Makefile drives code extraction from the rfc1321.txt, and then # compiles the code to create md5, the command-line MD5 file checksum # utility implemented by mddriver.c. # # $Id: Makefile,v 1.4 2005/07/19 08:29:50 andrew Exp $ # ======================================================================== CC = gcc CCOPT = -Wall -O2 DEFS = -DMD=5 INCLS = -I. CFLAGS = $(CCOPT) $(DEFS) $(INCLS) LDFLAGS = LIBS = OBJ_EXT = .o EXE_EXT = VERSION := `date '+%Y%m%dT%H%M'` ARCH := `uname -p` OS := `uname -s | tr '[A-Z].' '[a-z]_' | sed s/sunos/solaris/` OS_VER := `uname -r | tr . _` PACKAGE = md5-$(VERSION).$(ARCH).$(OS).$(OS_VER) MKDIR = mkdir CHMOD = chmod ECHO = echo CP = cp RM = rm # ------------------------------------------------------------------------ # Compilation all: md5$(EXE_EXT) md5$(EXE_EXT): md5c$(OBJ_EXT) mddriver$(OBJ_EXT) $(CC) $(CFLAGS) -o md5$(EXE_EXT) $(LDFLAGS) $(LIBS) md5c$(OBJ_EXT) mddriver$(OBJ_EXT) md5c$(OBJ_EXT): md5c.c global.h md5.h $(CC) $(CFLAGS) -o md5c$(OBJ_EXT) -c md5c.c mddriver$(OBJ_EXT): mddriver.c global.h md5.h $(CC) $(CFLAGS) -o mddriver$(OBJ_EXT) -c mddriver.c # ------------------------------------------------------------------------ # Code extraction from rfc1321.txt source: global.h md5.h md5c.c mddriver.c md5c.c: extract_code rfc1321.txt @echo "Makefile: extracting md5c.c..." @./extract_code md5c.c < rfc1321.txt > md5c.c mddriver.c: extract_code rfc1321.txt @echo "Makefile: extracting mddriver.h..." @./extract_code mddriver.c < rfc1321.txt > mddriver.c global.h: extract_code rfc1321.txt @echo "Makefile: extracting global.h..." @./extract_code global.h < rfc1321.txt > global.h md5.h: extract_code rfc1321.txt @echo "Makefile: extracting md5.h..." @./extract_code md5.h < rfc1321.txt > md5.h # ------------------------------------------------------------------------ # Other targets test: md5_test.out md5_test.gold @diff md5_test.out md5_test.gold > /dev/null @sh -c "if [ $$? -eq 0 ]; then echo successful ; else echo failed ; fi" md5_test.out: md5$(EXE_EXT) @echo "Makefile: running md5 test suite..." @./md5 -x > md5_test.out md5_test.gold: extract_code rfc1321.txt @echo "Makefile: extracting test suite results..." @./extract_code "test suite" < rfc1321.txt > md5_test.gold package: md5$(EXE_EXT) @$(ECHO) "Makefile: creating package in current directory:" @$(ECHO) $(PACKAGE) @$(MKDIR) -p $(PACKAGE)/bin @$(CP) md5$(EXE_EXT) $(PACKAGE)/bin @$(CHMOD) 755 $(PACKAGE)/bin/md5$(EXE_EXT) clean: @$(RM) -f md5$(EXE_EXT) md5c$(OBJ_EXT) mddriver$(OBJ_EXT) \ md5c.c mddriver.c global.h md5.h \ md5_test.out md5_test.gold core @$(RM) -rf md5-*.*.*.* # ========================================================================