Makefile (4643B)
1 CC = gcc 2 CFLAGS = -O3 -march=native -msha -msse4.2 -Wall -Wextra 3 STANDALONE_CFLAGS = $(CFLAGS) 4 LIB_CFLAGS = $(CFLAGS) -DLIB_MODE 5 6 # Targets 7 TARGET_SHA256 = sha256_test 8 TARGET_SHA512 = sha512_test 9 TARGET_SHA1 = sha1_test 10 TARGET_MD5 = md5_test 11 TARGET_CRC32 = crc32_test 12 TARGET_UNIFIED = hash_demo 13 TARGET_EASY = easyhashing_demo 14 15 # All targets 16 all: $(TARGET_SHA256) $(TARGET_SHA512) $(TARGET_SHA1) $(TARGET_MD5) $(TARGET_CRC32) $(TARGET_UNIFIED) $(TARGET_EASY) 17 18 # Standalone hash tests 19 $(TARGET_SHA256): SHA256.c 20 $(CC) $(STANDALONE_CFLAGS) -o $(TARGET_SHA256) SHA256.c 21 22 $(TARGET_SHA512): SHA512.c 23 $(CC) $(STANDALONE_CFLAGS) -o $(TARGET_SHA512) SHA512.c 24 25 $(TARGET_SHA1): SHA1.c 26 $(CC) $(STANDALONE_CFLAGS) -o $(TARGET_SHA1) SHA1.c 27 28 $(TARGET_MD5): MD5.c 29 $(CC) $(STANDALONE_CFLAGS) -o $(TARGET_MD5) MD5.c 30 31 $(TARGET_CRC32): CRC32.c 32 $(CC) $(STANDALONE_CFLAGS) -o $(TARGET_CRC32) CRC32.c 33 34 # Library object files 35 SHA256_lib.o: SHA256.c 36 $(CC) $(LIB_CFLAGS) -c -o SHA256_lib.o SHA256.c 37 38 SHA512_lib.o: SHA512.c 39 $(CC) $(LIB_CFLAGS) -c -o SHA512_lib.o SHA512.c 40 41 SHA1_lib.o: SHA1.c 42 $(CC) $(LIB_CFLAGS) -c -o SHA1_lib.o SHA1.c 43 44 MD5_lib.o: MD5.c 45 $(CC) $(LIB_CFLAGS) -c -o MD5_lib.o MD5.c 46 47 CRC32_lib.o: CRC32.c 48 $(CC) $(LIB_CFLAGS) -c -o CRC32_lib.o CRC32.c 49 50 hash.o: hash.c hash.h 51 $(CC) $(CFLAGS) -c -o hash.o hash.c 52 53 # Unified hash demo (links all algorithms) 54 $(TARGET_UNIFIED): example_hash.c hash.o SHA256_lib.o SHA512_lib.o SHA1_lib.o MD5_lib.o CRC32_lib.o 55 $(CC) $(CFLAGS) -o $(TARGET_UNIFIED) example_hash.c hash.o SHA256_lib.o SHA512_lib.o SHA1_lib.o MD5_lib.o CRC32_lib.o 56 57 # EasyHashing demo (simple API) 58 $(TARGET_EASY): example_easyhashing.c EasyHashing.h SHA256_lib.o SHA512_lib.o SHA1_lib.o MD5_lib.o CRC32_lib.o 59 $(CC) $(CFLAGS) -o $(TARGET_EASY) example_easyhashing.c SHA256_lib.o SHA512_lib.o SHA1_lib.o MD5_lib.o CRC32_lib.o 60 61 # Clean 62 clean: 63 rm -f $(TARGET_SHA256) $(TARGET_SHA512) $(TARGET_SHA1) $(TARGET_MD5) $(TARGET_CRC32) $(TARGET_UNIFIED) $(TARGET_EASY) *.o 64 65 # Run individual tests 66 run-sha256: $(TARGET_SHA256) 67 ./$(TARGET_SHA256) 68 69 run-sha512: $(TARGET_SHA512) 70 ./$(TARGET_SHA512) 71 72 run-sha1: $(TARGET_SHA1) 73 ./$(TARGET_SHA1) 74 75 run-md5: $(TARGET_MD5) 76 ./$(TARGET_MD5) 77 78 run-crc32: $(TARGET_CRC32) 79 ./$(TARGET_CRC32) 80 81 run-unified: $(TARGET_UNIFIED) 82 ./$(TARGET_UNIFIED) 83 84 run-easy: $(TARGET_EASY) 85 ./$(TARGET_EASY) 86 87 # Run all tests 88 run: all 89 @echo "═══════════════════════════════════════" 90 @echo " Running SHA-256 Test" 91 @echo "═══════════════════════════════════════" 92 @./$(TARGET_SHA256) 93 @echo "" 94 @echo "═══════════════════════════════════════" 95 @echo " Running SHA-512 Test" 96 @echo "═══════════════════════════════════════" 97 @./$(TARGET_SHA512) 98 @echo "" 99 @echo "═══════════════════════════════════════" 100 @echo " Running SHA-1 Test" 101 @echo "═══════════════════════════════════════" 102 @./$(TARGET_SHA1) 103 @echo "" 104 @echo "═══════════════════════════════════════" 105 @echo " Running MD5 Test" 106 @echo "═══════════════════════════════════════" 107 @./$(TARGET_MD5) 108 @echo "" 109 @echo "═══════════════════════════════════════" 110 @echo " Running CRC32 Test" 111 @echo "═══════════════════════════════════════" 112 @./$(TARGET_CRC32) 113 @echo "" 114 @echo "═══════════════════════════════════════" 115 @echo " Running Unified Hash Demo" 116 @echo "═══════════════════════════════════════" 117 @./$(TARGET_UNIFIED) 118 @echo "" 119 @echo "═══════════════════════════════════════" 120 @echo " Running EasyHashing Demo" 121 @echo "═══════════════════════════════════════" 122 @./$(TARGET_EASY) 123 124 .PHONY: all clean run run-sha256 run-sha512 run-sha1 run-md5 run-crc32 run-unified run-easy