Makefile 9.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. # COMMENTAIRES EN FIN DE FICHIER
  2. CPP = g++
  3. CPPFLAGS = -std=c++14 -I ../include -I ../gengetopt -I ../dclxvi-20130329 -O2 -Wextra -fPIC -fopenmp -D_GLIBCXX_USE_CXX11_ABI=0
  4. # -g et -pg rajoutés à la compilation et à l'édition de lien pour profiler le programme
  5. # -fprofile-arcs -ftest-coverage rajoutés à la compilation et à l'édition de lien pour couvrir le programme
  6. LDFLAGS =-Wall -Wextra -fopenmp -lgmp -lgmpxx #-g -pg
  7. EXEC = bgn bgn_check bgn_as
  8. #chemin sans fichier
  9. HDRPATH = ../include
  10. SRCPATH = ../src
  11. OBJPATH = ../obj
  12. BINPATH = ../bin
  13. LIBPATH = ../lib
  14. 666PATH = ../dclxvi-20130329
  15. VPATH = $(SRCPATH):$(666PATH):../gengetopt
  16. #UPDPATH = ../update
  17. #fichier avec chemin
  18. HDR = $(wildcard $(HDRPATH)/*.h*)
  19. ALL_SRC = $(wildcard $(SRCPATH)/*.c*)
  20. SRC = $(filter-out $(SRCPATH)/test_quadruplet.cpp, $(ALL_SRC))
  21. OBJ = $(patsubst $(SRCPATH)/%.cpp,$(OBJPATH)/%.o,$(SRC))
  22. OBJ_CHECK = $(patsubst $(SRCPATH)/%.cpp,$(OBJPATH)/%_check.o,$(SRC))
  23. OBJ_AS = $(patsubst $(SRCPATH)/%.cpp,$(OBJPATH)/%_as.o,$(SRC))
  24. ALL_SRC_666 = $(wildcard $(666PATH)/*.c*)
  25. SRC_666 = $(filter-out $(666PATH)/bilintest.c $(666PATH)/speedtest.c $(666PATH)/test_curvepoint_multiscalar.c $(666PATH)/test_twistpoint_multiscalar.c $(666PATH)/twistpoint_fp2_multiscalar.c $(666PATH)/curvepoint_fp_multiscalar.c, $(ALL_SRC_666))
  26. ASS_666 = $(wildcard $(666PATH)/*.s)
  27. #HDR_UPD = $(wildcard $(UPDPATH)/*.h)
  28. #SRC_UPD = $(wildcard $(UPDPATH)/*.c)
  29. #ASS_UPD = $(wildcard $(UPDPATH)/*.s)
  30. OBJ_666 = $(patsubst $(666PATH)/%.c,$(OBJPATH)/%_666.o,$(SRC_666))
  31. #$(patsubst $(UPDPATH)/%.c,$(OBJPATH)/%.o,$(SRC_UPD))
  32. OBJ_666_CHECK = $(patsubst $(666PATH)/%.c,$(OBJPATH)/%_666_check.o,$(SRC_666))
  33. #$(patsubst $(UPDPATH)/%.c,$(OBJPATH)/%_check.o,$(SRC_UPD))
  34. OBJ_666_AS = $(patsubst $(666PATH)/%.c,$(OBJPATH)/%_666_as.o,$(SRC_666)) $(patsubst $(666PATH)/%.s,$(OBJPATH)/%_666_as.o,$(ASS_666))
  35. #$(patsubst $(UPDPATH)/%.c,$(OBJPATH)/%_as.o,$(SRC_UPD)) $(patsubst $(UPDPATH)/%.s,$(OBJPATH)/%_as.o,$(ASS_UPD))
  36. LIB = $(filter-out $(OBJPATH)/option.o $(OBJPATH)/bgn.o $(OBJPATH)/circuit_additionL1.o $(OBJPATH)/circuit_additionL2.o $(OBJPATH)/circuit_additionL3.o $(OBJPATH)/circuit_additionL4.o $(OBJPATH)/circuit_chiffrement.o $(OBJPATH)/circuit_minmaj.o $(OBJPATH)/circuit_minmaj2.o $(OBJPATH)/circuit_minmaj3.o $(OBJPATH)/circuit_multiplicationL1.o $(OBJPATH)/circuit_multiplicationL1L2.o $(OBJPATH)/circuit_multiplicationL2.o $(OBJPATH)/circuit_size.o, $(OBJPATH)/circuit_scalar_product.o, $(OBJPATH)/circuit_time.o, $(OBJPATH)/circuit_time2.o , $(OBJ))
  37. LIB_CHECK = $(filter-out $(OBJPATH)/option.o $(OBJPATH)/bgn_check.o $(OBJPATH)/circuit_additionL1_check.o $(OBJPATH)/circuit_additionL2_check.o $(OBJPATH)/circuit_additionL3_check.o $(OBJPATH)/circuit_additionL4_check.o $(OBJPATH)/circuit_chiffrement_check.o $(OBJPATH)/circuit_minmaj_check.o $(OBJPATH)/circuit_minmaj2_check.o $(OBJPATH)/circuit_minmaj3_check.o $(OBJPATH)/circuit_multiplicationL1_check.o $(OBJPATH)/circuit_multiplicationL1L2_check.o $(OBJPATH)/circuit_multiplicationL2_check.o $(OBJPATH)/circuit_size_check.o ,$(OBJPATH)/circuit_scalar_product_check.o, $(OBJPATH)/circuit_time_check.o, $(OBJPATH)/circuit_time2_check.o , $(OBJ_CHECK))
  38. LIB_AS = $(filter-out $(OBJPATH)/option.o $(OBJPATH)/bgn_as.o $(OBJPATH)/circuit_additionL1_as.o $(OBJPATH)/circuit_additionL2_as.o $(OBJPATH)/circuit_additionL3_as.o $(OBJPATH)/circuit_additionL4_as.o $(OBJPATH)/circuit_chiffrement_as.o $(OBJPATH)/circuit_minmaj_as.o $(OBJPATH)/circuit_minmaj2_as.o $(OBJPATH)/circuit_minmaj3_as.o $(OBJPATH)/circuit_multiplicationL1_as.o $(OBJPATH)/circuit_multiplicationL1L2_as.o $(OBJPATH)/circuit_multiplicationL2_as.o $(OBJPATH)/circuit_size_as.o ,$(OBJPATH)/circuit_scalar_product_as.o, $(OBJPATH)/circuit_time_as.o, $(OBJPATH)/circuit_time2_as.o , $(OBJ_AS))
  39. all: $(EXEC)
  40. bgn: $(OBJ) $(OBJPATH)/option.o $(OBJ_666) $(OBJPATH)/scalar_sub_nored_666_as.o $(OBJPATH)/heap_rootreplaced_666_as.o
  41. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS)
  42. bgn_check: $(OBJ_CHECK) $(OBJPATH)/option.o $(OBJ_666_CHECK) $(OBJPATH)/scalar_sub_nored_666_as.o $(OBJPATH)/heap_rootreplaced_666_as.o
  43. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS)
  44. bgn_as: $(OBJ_AS) $(OBJPATH)/option.o $(OBJ_666_AS)
  45. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS)
  46. lib:
  47. @gcc -shared -fPIC -o $(LIBPATH)/libbgnfcf.so $(LIB)
  48. lib_check:
  49. @gcc -shared -fPIC -o $(LIBPATH)/libbgnfcf_check.so $(LIB_CHECK)
  50. lib_as:
  51. @gcc -shared -fPIC -o $(LIBPATH)/libbgnfcf_as.so $(LIB_AS)
  52. bgn_lib: $(OBJPATH)/option.o $(OBJ_666) $(OBJPATH)/scalar_sub_nored_666_as.o $(OBJPATH)/heap_rootreplaced_666_as.o $(OBJPATH)/bgn.o $(OBJPATH)/circuit_additionL1.o $(OBJPATH)/circuit_additionL2.o $(OBJPATH)/circuit_additionL3.o $(OBJPATH)/circuit_additionL4.o $(OBJPATH)/circuit_chiffrement.o $(OBJPATH)/circuit_minmaj.o $(OBJPATH)/circuit_minmaj2.o $(OBJPATH)/circuit_minmaj3.o $(OBJPATH)/circuit_multiplicationL1.o $(OBJPATH)/circuit_multiplicationL1L2.o $(OBJPATH)/circuit_multiplicationL2.o $(OBJPATH)/circuit_size.o $(OBJPATH)/circuit_demo.o $(OBJPATH)/circuit_scalar_product.o $(OBJPATH)/circuit_time.o $(OBJPATH)/circuit_time2.o
  53. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS) -L ../lib -lbgnfcf
  54. bgn_lib_check: $(OBJPATH)/option.o $(OBJ_666_CHECK) $(OBJPATH)/scalar_sub_nored_666_as.o $(OBJPATH)/heap_rootreplaced_666_as.o $(OBJPATH)/bgn_check.o $(OBJPATH)/circuit_additionL1_check.o $(OBJPATH)/circuit_additionL2_check.o $(OBJPATH)/circuit_additionL3_check.o $(OBJPATH)/circuit_additionL4_check.o $(OBJPATH)/circuit_chiffrement_check.o $(OBJPATH)/circuit_minmaj_check.o $(OBJPATH)/circuit_minmaj2_check.o $(OBJPATH)/circuit_minmaj3_check.o $(OBJPATH)/circuit_multiplicationL1_check.o $(OBJPATH)/circuit_multiplicationL1L2_check.o $(OBJPATH)/circuit_multiplicationL2_check.o $(OBJPATH)/circuit_size_check.o $(OBJPATH)/circuit_scalar_product_check.o $(OBJPATH)/circuit_time_check.o $(OBJPATH)/circuit_time2_check.o
  55. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS) -L ../lib -lbgnfcf_check
  56. bgn_lib_as: $(OBJPATH)/option.o $(OBJ_666_AS) $(OBJPATH)/bgn_as.o $(OBJPATH)/circuit_additionL1_as.o $(OBJPATH)/circuit_additionL2_as.o $(OBJPATH)/circuit_additionL3_as.o $(OBJPATH)/circuit_additionL4_as.o $(OBJPATH)/circuit_chiffrement_as.o $(OBJPATH)/circuit_minmaj_as.o $(OBJPATH)/circuit_minmaj2_as.o $(OBJPATH)/circuit_minmaj3_as.o $(OBJPATH)/circuit_multiplicationL1_as.o $(OBJPATH)/circuit_multiplicationL1L2_as.o $(OBJPATH)/circuit_multiplicationL2_as.o $(OBJPATH)/circuit_size_as.o $(OBJPATH)/circuit_scalar_product_as.o $(OBJPATH)/circuit_time_as.o $(OBJPATH)/circuit_time2_as.o
  57. $(CPP) -o $(BINPATH)/$@ $+ $(LDFLAGS) -L ../lib -lbgnfcf_as
  58. test_quadruplet_check: $(OBJPATH)/test_quadruplet_check.o $(OBJPATH)/BitChiffre_check.o $(OBJPATH)/quadruplet_check.o $(OBJPATH)/$(OBJPATH)/fpe2scalar_check.o $(OBJ_666_CHECK) $(OBJPATH)/scalar_sub_nored_666_as.o $(OBJPATH)/heap_rootreplaced_666_as.o $(OBJPATH)/Bipoint_check.o
  59. $(CPP) $(LDFLAGS) -o $(BINPATH)/$@ $+
  60. test_quadruplet_as: $(OBJPATH)/test_quadruplet_as.o $(OBJPATH)/BitChiffre_as.o $(OBJPATH)/quadruplet_as.o $(OBJ_666_AS) $(OBJPATH)/Bipoint_as.o $(OBJPATH)/$(OBJPATH)/fpe2scalar_as.o
  61. $(CPP) $(LDFLAGS) -o $(BINPATH)/$@ $+
  62. option : option.ggo
  63. @gengetopt < $< --file-name=option --output-dir=../gengetopt --unamed-opts
  64. .PHONY: clean
  65. clean:
  66. @rm -rf $(OBJPATH)/*.o $(BINPATH)/bgn $(BINPATH)/bgn_as $(BINPATH)/bgn_check $(BINPATH)/bgn_lib $(BINPATH)/bgn_lib_as $(BINPATH)/bgn_lib_check prof *.exe *.db *.do *.gch *.out $(OBJPATH)/*.gcda $(OBJPATH)/*.gcno *.gcov callgrind.out.*
  67. profile:
  68. @read -p "Enter binary name: " binary && gprof -l $(BINPATH)/$$binary gmon.out >| profile_line && gprof $(BINPATH)/$$binary gmon.out >| profile_function
  69. # le fichier gmon.out est crée après avoir executé le programme, il ne suffit pas de compiler et d'éditer les liens avec -g -pg
  70. # read pour demander au maker d'affecter une variable
  71. # $$ pour acceder à cette valeur (elle est définie dans les build commands, pas dans le makefile)
  72. # && parce que la valeur n'est pas mémorisée
  73. tata=4
  74. fun:
  75. export toto=5
  76. sleep 5 && echo $$toto
  77. toto=3; echo $$toto
  78. echo $(tata)
  79. graph:
  80. @gprof2dot profile_function >| graph_function.dot
  81. @dot -T png -o graph_function.png graph_function.dot
  82. @feh graph_function.png&
  83. doc:
  84. cd .. && doxygen doc/doxygen_conf && firefox doc/html/annotated.html&
  85. gdb:
  86. gdb run ../bin/bgn_as
  87. valgrind:
  88. valgrind --track-origins=yes --leak-check=full --show-leak-kinds=all ../bin/bgn_as -s ""
  89. print-%:
  90. @echo '$*=$($*)'
  91. $(OBJPATH)/option.o : option.c
  92. $(CPP) $(CPPFLAGS) -o $@ -c $<
  93. $(OBJPATH)/%.o : %.cpp $(HDR)
  94. $(CPP) $(CPPFLAGS) -o $@ -c $<
  95. $(OBJPATH)/%_check.o : %.cpp $(HDR)
  96. $(CPP) $(CPPFLAGS) -DCHECK -DNBTESTS=10 -o $@ -c $<
  97. $(OBJPATH)/%_as.o : %.cpp $(HDR)
  98. $(CPP) $(CPPFLAGS) -DQHASM -DNBTESTS=10 -o $@ -c $<
  99. $(OBJPATH)/%_666.o : $(666PATH)/%.c $(666PATH)/%.h
  100. $(CPP) $(CPPFLAGS) -o $@ -c $<
  101. $(OBJPATH)/%_666_check.o : $(666PATH)/%.c $(666PATH)/%.h
  102. $(CPP) $(CPPFLAGS) -DCHECK -o $@ -c $<
  103. $(OBJPATH)/%_666_as.o : $(666PATH)/%.c $(666PATH)/%.h
  104. $(CPP) $(CPPFLAGS) -DQHASM -o $@ -c $<
  105. $(OBJPATH)/%_666_as.o : $(666PATH)/%.s
  106. $(CPP) $(CPPFLAGS) -o $@ -c $<
  107. #$(OBJPATH)/%.o : $(UPDPATH)/%.c $(HDR_UPD)
  108. # $(CPP) $(CPPFLAGS) -o $@ -c $<
  109. #$(OBJPATH)/%_check.o : $(UPDPATH)/%.c $(HDR_UPD)
  110. # $(CPP) $(CPPFLAGS) -DCHECK -o $@ -c $<
  111. #$(OBJPATH)/%_as.o : $(UPDPATH)/%.c $(HDR_UPD)
  112. # $(CPP) $(CPPFLAGS) -DQHASM -o $@ -c $<
  113. #$(OBJPATH)/%_as.o : $(UPDPATH)/%.s
  114. # $(CPP) $(CPPFLAGS) -o $@ -c $<
  115. #$(OBJPATH)/asfunctions.a: $(OBJPATH)/fp2e_add2.o $(OBJPATH)/fp2e_sub2.o \
  116. # $(OBJPATH)/fp2e_double2.o $(OBJPATH)/fp2e_triple2.o $(OBJPATH)/fp2e_neg2.o \
  117. # $(OBJPATH)/fp2e_mul.o $(OBJPATH)/fp2e_mul_fpe.o $(OBJPATH)/fp2e_short_coeffred.o \
  118. # $(OBJPATH)/fp2e_add.o $(OBJPATH)/fp2e_sub.o $(OBJPATH)/fp2e_parallel_coeffmul.o $(OBJPATH)/fp2e_mulxi.o\
  119. # $(OBJPATH)/fp2e_double.o $(OBJPATH)/fp2e_triple.o $(OBJPATH)/fp2e_neg.o $(OBJPATH)/fp2e_conjugate.o \
  120. # $(OBJPATH)/fpe_mul.o $(OBJPATH)/fp2e_square.o \
  121. # $(OBJPATH)/consts.o
  122. # rm -f $(OBJPATH)/asfunctions.a
  123. # ar cr $(OBJPATH)/asfunctions.a $^