Makefile 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. INC_PATH = inc
  2. SRC_PATH = src
  3. OBJ_PATH = obj
  4. BIN_PATH = bin
  5. PRSONA_PATH = .
  6. PRSONA_INC_PATH = $(PRSONA_PATH)/$(INC_PATH)
  7. PRSONA_SRC_PATH = $(PRSONA_PATH)/$(SRC_PATH)
  8. PRSONA_OBJ_PATH = $(PRSONA_PATH)/$(OBJ_PATH)
  9. PRSONA_BIN_PATH = $(PRSONA_PATH)/$(BIN_PATH)
  10. BGN_PATH = ../BGN2/bgn2
  11. BGN_INC_PATH = $(BGN_PATH)/$(INC_PATH)
  12. BGN_SRC_PATH = $(BGN_PATH)/$(SRC_PATH)
  13. BGN_OBJ_PATH = $(BGN_PATH)/$(OBJ_PATH)
  14. BGN_BIN_PATH = $(BGN_PATH)/$(BIN_PATH)
  15. 666_PATH = ../BGN2/dclxvi-20130329
  16. 666_INC_PATH = $(666_PATH)/$(INC_PATH)
  17. 666_SRC_PATH = $(666_PATH)/$(SRC_PATH)
  18. 666_OBJ_PATH = $(666_PATH)/$(OBJ_PATH)
  19. 666_BIN_PATH = $(666_PATH)/$(BIN_PATH)
  20. CPP = g++
  21. CPPFLAGS = -std=c++14 -Wall -I$(PRSONA_INC_PATH) -I$(BGN_INC_PATH) -I$(666_INC_PATH) -O2
  22. CPPTESTFLAGS = -std=c++14 -Wall -I$(PRSONA_INC_PATH) -I$(BGN_INC_PATH) -I$(666_INC_PATH) -g
  23. LDFLAGS = -lgmp -lgmpxx -lssl -lcrypto
  24. LDTESTFLAGS = -lgmp -lgmpxx -lssl -lcrypto -g
  25. CC = gcc
  26. CFLAGS = -std=c99 -O3 -fomit-frame-pointer -I$(666_INC_PATH)
  27. C_LDFLAGS = -lm
  28. all: $(PRSONA_BIN_PATH) $(PRSONA_OBJ_PATH) $(BGN_OBJ_PATH) $(666_OBJ_PATH) $(PRSONA_BIN_PATH)/main
  29. test: $(PRSONA_BIN_PATH) $(PRSONA_OBJ_PATH) $(BGN_OBJ_PATH) $(666_OBJ_PATH) $(PRSONA_BIN_PATH)/test
  30. $(PRSONA_BIN_PATH):
  31. mkdir -p $@
  32. $(PRSONA_OBJ_PATH):
  33. mkdir -p $@
  34. $(BGN_OBJ_PATH):
  35. mkdir -p $@
  36. $(666_OBJ_PATH):
  37. mkdir -p $@
  38. PRSONA_FULL_SRC = $(wildcard $(PRSONA_SRC_PATH)/*.cpp)
  39. PRSONA_SRC = $(filter-out $(PRSONA_SRC_PATH)/main.cpp, $(PRSONA_FULL_SRC))
  40. PRSONA_OBJ = $(patsubst $(PRSONA_SRC_PATH)/%.cpp, $(PRSONA_OBJ_PATH)/%.o, $(PRSONA_SRC))
  41. PRSONA_TEST_OBJ = $(patsubst $(PRSONA_SRC_PATH)/%.cpp, $(PRSONA_OBJ_PATH)/%.test.o, $(PRSONA_SRC))
  42. $(PRSONA_OBJ_PATH)/%.o: $(PRSONA_SRC_PATH)/%.cpp
  43. $(CPP) $(CPPFLAGS) -DQHASM -c -o $@ $<
  44. $(PRSONA_OBJ_PATH)/%.test.o: $(PRSONA_SRC_PATH)/%.cpp
  45. $(CPP) $(CPPTESTFLAGS) -DQHASM -c -o $@ $<
  46. BGN_FULL_SRC = $(wildcard $(BGN_SRC_PATH)/*.cpp)
  47. BGN_SRC = $(filter-out $(BGN_SRC_PATH)/main.cpp, $(BGN_FULL_SRC))
  48. BGN_OBJ = $(patsubst $(BGN_SRC_PATH)/%.cpp, $(BGN_OBJ_PATH)/%.o, $(BGN_SRC))
  49. BGN_TEST_OBJ = $(patsubst $(BGN_SRC_PATH)/%.cpp, $(BGN_OBJ_PATH)/%.test.o, $(BGN_SRC))
  50. $(BGN_OBJ_PATH)/%.o: $(BGN_SRC_PATH)/%.cpp
  51. $(CPP) $(CPPFLAGS) -DQHASM -c -o $@ $<
  52. $(BGN_OBJ_PATH)/%.test.o: $(BGN_SRC_PATH)/%.cpp
  53. $(CPP) $(CPPTESTFLAGS) -DQHASM -c -o $@ $<
  54. 666_ALL_C_SRC = $(wildcard $(666_SRC_PATH)/*.c)
  55. 666_C_SRC = $(filter-out $(666_SRC_PATH)/bilintest.c $(666_SRC_PATH)/speedtest.c $(666_SRC_PATH)/test_curvepoint_multiscalar.c $(666_SRC_PATH)/test_twistpoint_multiscalar.c $(666_SRC_PATH)/twistpoint_fp2_multiscalar.c $(666_SRC_PATH)/curvepoint_fp_multiscalar.c, $(666_ALL_C_SRC))
  56. 666_C_OBJ = $(patsubst $(666_SRC_PATH)/%.c, $(666_OBJ_PATH)/%_c_with_as.o, $(666_C_SRC))
  57. $(666_OBJ_PATH)/%_c_with_as.o: $(666_SRC_PATH)/%.c $(666_INC_PATH)/%.h
  58. $(CC) $(CFLAGS) -DQHASM -c -o $@ $<
  59. 666_AS_SRC = $(wildcard $(666_SRC_PATH)/*.s)
  60. 666_AS_OBJ = $(patsubst $(666_SRC_PATH)/%.s, $(666_OBJ_PATH)/%_as.o, $(666_AS_SRC))
  61. $(666_OBJ_PATH)/%_as.o: $(666_SRC_PATH)/%.s
  62. $(CC) $(CFLAGS) -fPIC -c -o $@ $^
  63. $(BGN_OBJ_PATH)/bgn.a: $(666_AS_OBJ) $(666_C_OBJ) $(BGN_OBJ)
  64. rm -f $@
  65. ar cr $@ $^
  66. $(BGN_OBJ_PATH)/bgn.test.a: $(666_AS_OBJ) $(666_C_OBJ) $(BGN_TEST_OBJ)
  67. rm -f $@
  68. ar cr $@ $^
  69. $(PRSONA_BIN_PATH)/main: $(PRSONA_OBJ_PATH)/main.o $(PRSONA_OBJ) $(BGN_OBJ_PATH)/bgn.a
  70. $(CPP) $(CPPFLAGS) -no-pie -o $@ $^ $(LDFLAGS)
  71. $(PRSONA_BIN_PATH)/test: $(PRSONA_OBJ_PATH)/main.test.o $(PRSONA_TEST_OBJ) $(BGN_OBJ_PATH)/bgn.test.a
  72. $(CPP) $(CPPTESTFLAGS) -no-pie -o $@ $^ $(LDTESTFLAGS)
  73. .PHONY: clean
  74. clean: prsona_clean bgn_clean 666_clean
  75. pclean: prsona_clean
  76. prsona_clean:
  77. -rm $(PRSONA_BIN_PATH)/*
  78. -rm $(PRSONA_OBJ_PATH)/*
  79. bgn_clean:
  80. -rm $(BGN_OBJ_PATH)/*
  81. 666_clean:
  82. -rm $(666_OBJ_PATH)/*