Makefile (2725B)
1 .SUFFIXES: .c .o .so 2 CC=clang 3 CFLAGS+=-std=c11 -pedantic -Wall -Werror -Wstrict-prototypes 4 CFLAGS+=-Wmissing-prototypes -Wmissing-declarations -Wshadow 5 CFLAGS+=-Wpointer-arith -Wcast-qual -Wsign-compare 6 CFLAGS+=-O2 -g 7 CFLAGS+=-fstack-protector-all -Wtype-limits -fno-common 8 CFLAGS+=-fno-builtin 9 CFLAGS+=-I/usr/local/include 10 11 CFLAGS+=-I/usr/local/include/flint 12 CFLAGS+=-I/home/olikru/.local/include/flint 13 LDFLAGS+=-L/usr/local/lib -lflint -lgmp 14 LDFLAGS+=-L/home/olikru/.local/lib 15 16 INSTALL_PATH=$(HOME)/.local 17 BUILD=build 18 19 TEST_SOURCE=test_angrepp.c 20 TESTBIN=testbin 21 22 HEADERS=smallfactor.h 23 OBJ=\ 24 precomputed.o\ 25 context.o\ 26 smallfactor.o\ 27 hnp.o\ 28 cyclefind.o\ 29 pierre.o\ 30 fmpzio.o\ 31 wiener.o\ 32 prodtree.o\ 33 batchgcd.o\ 34 bloom.o 35 TOOLS=\ 36 tools/hnpsolve\ 37 tools/lcgfloyd\ 38 tools/dbtool\ 39 tools/pierre\ 40 tools/varmkorv\ 41 tools/small\ 42 tools/batchgcd\ 43 tools/pelofskegcd\ 44 tools/bloomer 45 PRECOMPUTERS=\ 46 precomputers/header 47 TEST=test 48 SHARED=angrepp.so 49 LIBSHARED=libangrepp.so 50 51 TOOLS_DIR=tools 52 PRECOMPUTERS_DIR=precomputers 53 54 all: $(OBJ) $(SHARED) $(TOOLS) $(PRECOMPUTERS) $(TESTBIN) 55 56 .c.o: 57 $(CC) -fPIC $(CFLAGS) -c $< -o $@ 58 59 $(SHARED): 60 $(CC) -shared -fPIC $(OBJS) -o $(SHARED) $(LDFLAGS) 61 62 # -- test 63 64 testbin: $(OBJ) $(TEST_SOURCE) 65 $(CC) $(CFLAGS) -o $(TESTBIN) $(TEST_SOURCE) $(OBJ) $(LDFLAGS) 66 67 test: testbin 68 ./$(TESTBIN) 69 70 # -- tools 71 72 tools/hnpsolve: $(OBJ) $(@:S/$/.c/) 73 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/hnpsolve.c $(OBJ) $(LDFLAGS) 74 75 tools/lcgfloyd: $(OBJ) $(@:S/$/.c/) 76 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/lcgfloyd.c $(OBJ) $(LDFLAGS) 77 78 tools/pierre: $(OBJ) $(@:S/$/.c/) 79 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/pierre.c $(OBJ) $(LDFLAGS) 80 81 tools/varmkorv: $(OBJ) $(@:S/$/.c/) 82 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/varmkorv.c $(OBJ) $(LDFLAGS) 83 84 tools/small: $(OBJ) $(@:S/$/.c/) 85 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/small.c $(OBJ) $(LDFLAGS) 86 87 tools/batchgcd: $(OBJ) $(@:S/$/.c/) 88 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/batchgcd.c $(OBJ) $(LDFLAGS) 89 90 tools/pelofskegcd: $(OBJ) $(@:S/$/.c/) 91 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/pelofskegcd.c $(OBJ) $(LDFLAGS) 92 93 tools/bloomer: $(OBJ) $(@:S/$/.c/) 94 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/bloomer.c $(OBJ) $(LDFLAGS) 95 96 tools/dbtool: $(OBJ) $(@:S/$/.c/) 97 $(CC) -I. $(CFLAGS) -o $@ $(TOOLS_DIR)/dbtool.c $(OBJ) $(LDFLAGS) -lsqlite3 98 99 # -- precomputers 100 101 precomputers/header: $(@:S/$/.c/) 102 $(CC) -I. $(CFLAGS) -o precomputers/header $(PRECOMPUTERS_DIR)/header.c $(LDFLAGS) 103 104 install: 105 mkdir -p $(INSTALL_PATH)/lib/angrepp 106 cp $(BUILD)/$(SHARED) $(INSTALL_PATH)/lib/angrepp/$(LIBSHARED) 107 chmod 644 $(INSTALL_PATH)/lib/angrepp/$(LIBSHARED) 108 mkdir -p $(INSTALL_PATH)/include/angrepp 109 cp $(HEADERS) $(INSTALL_PATH)/include/angrepp/ 110 111 clean: 112 rm -rf $(OBJ) $(SHARED) $(TOOLS) $(PRECOMPUTERS) $(TESTBIN)