PageRenderTime 48ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/Makefile.in

https://github.com/fredrik-johansson/flint2
Autoconf | 221 lines | 177 code | 44 blank | 0 comment | 30 complexity | 2c0e7b525b3685fb603ba3dbb486f4f2 MD5 | raw file
Possible License(s): GPL-2.0
  1. ifdef $(DLPATH)
  2. $(DLPATH):=$($(DLPATH)):$(DLPATH_ADD)
  3. else
  4. $(DLPATH):=$(DLPATH_ADD)
  5. endif
  6. QUIET_CC = @echo ' ' CC ' ' $@;
  7. QUIET_CXX = @echo ' ' CXX ' ' $@;
  8. QUIET_AR = @echo ' ' AR ' ' $@;
  9. AT=@
  10. BUILD_DIRS = ulong_extras long_extras perm fmpz fmpz_vec fmpz_poly \
  11. fmpq_poly fmpz_mat mpfr_vec mpfr_mat nmod_vec nmod_poly \
  12. nmod_poly_factor arith mpn_extras nmod_mat fmpq fmpq_vec fmpq_mat padic \
  13. fmpz_poly_q fmpz_poly_mat nmod_poly_mat fmpz_mod_poly \
  14. fmpz_mod_poly_factor fmpz_factor fmpz_poly_factor fft qsieve \
  15. double_extras padic_poly padic_mat qadic \
  16. fq fq_vec fq_mat fq_poly fq_poly_factor\
  17. fq_nmod fq_nmod_vec fq_nmod_mat fq_nmod_poly fq_nmod_poly_factor \
  18. fq_zech fq_zech_vec fq_zech_mat fq_zech_poly fq_zech_poly_factor \
  19. $(EXTRA_BUILD_DIRS)
  20. TEMPLATE_DIRS = fq_vec_templates fq_mat_templates fq_poly_templates \
  21. fq_poly_factor_templates fq_templates
  22. export
  23. SOURCES = printf.c fprintf.c sprintf.c scanf.c fscanf.c sscanf.c clz_tab.c memory_manager.c version.c profiler.c thread_support.c
  24. LIB_SOURCES = $(wildcard $(patsubst %, %/*.c, $(BUILD_DIRS))) $(patsubst %, %/*.c, $(TEMPLATE_DIRS))
  25. HEADERS = $(patsubst %, %.h, $(BUILD_DIRS)) NTL-interface.h flint.h longlong.h config.h gmpcompat.h fft_tuning.h fmpz-conversions.h profiler.h templates.h $(patsubst %, %.h, $(TEMPLATE_DIRS))
  26. OBJS = $(patsubst %.c, build/%.o, $(SOURCES))
  27. LIB_OBJS = $(patsubst %, build/%/*.o, $(BUILD_DIRS))
  28. LOBJS = $(patsubst %.c, build/%.lo, $(SOURCES))
  29. LIB_LOBJS = $(patsubst %, build/%/*.lo, $(BUILD_DIRS))
  30. MOD_LOBJS = $(patsubst %, build/%.lo, $(BUILD_DIRS))
  31. EXMP_SOURCES = $(wildcard examples/*.c)
  32. EXMPS = $(patsubst %.c, %, $(EXMP_SOURCES))
  33. TEST_SOURCES = $(wildcard test/*.c)
  34. TESTS = $(patsubst %.c, build/%$(EXEEXT), $(TEST_SOURCES))
  35. PROF_SOURCES = $(wildcard profile/*.c)
  36. PROFS = $(patsubst %.c, %$(EXEEXT), $(PROF_SOURCES))
  37. TUNE_SOURCES = $(wildcard tune/*.c)
  38. TUNE = $(patsubst %.c, %$(EXEEXT), $(TUNE_SOURCES))
  39. EXT_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/*.c)))
  40. EXT_TEST_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/test/t-*.c)))
  41. EXT_TUNE_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/tune/*.c)))
  42. EXT_PROF_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/profile/p-*.c)))
  43. EXT_OBJS = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), build/$(dir).lo))
  44. EXT_HEADERS = $(foreach ext, $(EXTENSIONS), $(wildcard $(ext)/*.h))
  45. all: library
  46. quiet: library
  47. verbose:
  48. $(MAKE) AT= QUIET_CC= QUIET_CXX= QUIET_AR=
  49. clean:
  50. $(AT)$(foreach dir, $(BUILD_DIRS), BUILD_DIR=../build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) clean || exit $$?;)
  51. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) clean || exit $$?;))
  52. rm -rf test_helpers.o profiler.o
  53. rm -f $(OBJS) $(LOBJS) $(TESTS) $(PROFS) $(EXMPS) $(FLINT_LIB) libflint.a
  54. rm -rf build
  55. distclean: clean
  56. rm -f config.h fft_tuning.h fmpz-conversions.h Makefile fmpz/fmpz.c
  57. dist:
  58. git archive --format tar --prefix flint-2.4.2/ flint-2.4 > ../flint-2.4.2.tar; gzip ../flint-2.4.2.tar
  59. profile: library $(PROF_SOURCES) $(EXT_PROF_SOURCES) build/profiler.o
  60. mkdir -p build/profile
  61. ifndef MOD
  62. $(AT)$(foreach prog, $(PROFS), $(CC) $(ABI_FLAG) -std=c99 -O2 -g $(INCS) $(prog).c build/profiler.o -o build/$(prog) $(LIBS) || exit $$?;)
  63. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/profile; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) profile || exit $$?;)
  64. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir)/profile; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) profile || exit $$?;))
  65. else
  66. $(AT)$(foreach dir, $(MOD), mkdir -p build/$(dir)/profile; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) profile || exit $$?;)
  67. endif
  68. tune: library $(TUNE_SOURCES) $(EXT_TUNE_SOURCES)
  69. mkdir -p build/tune
  70. $(AT)$(foreach prog, $(TUNE), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS) || exit $$?;)
  71. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/tune; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) tune || exit $$?;)
  72. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir)/tune; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) tune || exit $$?;))
  73. examples: library $(EXMP_SOURCES)
  74. mkdir -p build/examples
  75. $(AT)$(foreach prog, $(EXMPS), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS) || exit $$?;)
  76. $(FLINT_LIB): $(LOBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
  77. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) shared || exit $$?;))
  78. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir); BUILD_DIR=../build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) shared || exit $$?;)
  79. $(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
  80. $(MAKE) build/interfaces/NTL-interface.lo; \
  81. $(CXX) $(ABI_FLAG) -shared $(EXTRA_SHARED_FLAGS) build/interfaces/NTL-interface.lo $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \
  82. fi
  83. $(AT)if [ "$(WANT_NTL)" -ne "1" ]; then \
  84. $(CC) $(ABI_FLAG) -shared $(EXTRA_SHARED_FLAGS) $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \
  85. fi
  86. libflint.a: $(OBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
  87. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir); BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) static || exit $$?;))
  88. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir); BUILD_DIR=../build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) static || exit $$?;)
  89. $(AT)if [ "$(FLINT_SHARED)" -eq "0" ]; then \
  90. touch test/t-*.c; \
  91. $(foreach dir, $(BUILD_DIRS), touch $(dir)/test/t-*.c;) \
  92. $(foreach ext, $(EXTENSIONS), $(foreach mod, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), touch $(ext)/$(mod)/test/t-*.c;)) \
  93. fi
  94. $(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
  95. $(MAKE) build/interfaces/NTL-interface.o; \
  96. $(AR) rcs libflint.a build/interfaces/NTL-interface.o; \
  97. fi
  98. $(QUIET_AR) $(AR) rcs libflint.a $(OBJS);
  99. $(AT)$(foreach mod, $(BUILD_DIRS), $(AR) rcs libflint.a build/$(mod)/*.o || exit $$?;)
  100. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach mod, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(AR) rcs libflint.a build/$(mod)/*.o || exit $$?;))
  101. library:
  102. $(AT)if [ "$(FLINT_SHARED)" -eq "1" ]; then \
  103. $(MAKE) shared; \
  104. fi
  105. $(AT)if [ "$(FLINT_STATIC)" -eq "1" ]; then \
  106. $(MAKE) static; \
  107. fi
  108. shared: $(FLINT_LIB)
  109. static: libflint.a
  110. tests: library test_helpers.o $(TESTS)
  111. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) tests || exit $$?;)
  112. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir)/test; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) tests || exit $$?;))
  113. mkdir -p build/interfaces/test
  114. $(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
  115. $(MAKE) build/interfaces/test/t-NTL-interface; \
  116. fi
  117. check: library test_helpers.o
  118. ifndef MOD
  119. $(AT)$(MAKE) $(TESTS)
  120. $(AT)$(foreach prog, $(TESTS), $(prog) || exit $$?;)
  121. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir)/test; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) check || exit $$?;))
  122. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) check || exit $$?;)
  123. mkdir -p build/interfaces/test
  124. $(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
  125. $(MAKE) build/interfaces/test/t-NTL-interface; \
  126. build/interfaces/test/t-NTL-interface; \
  127. fi
  128. else
  129. $(AT)$(foreach dir, $(MOD), test ! -d $(dir) || mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; test ! -d $(dir) || $(MAKE) -f ../Makefile.subdirs -C $(dir) check || exit $$?;)
  130. $(AT)$(foreach ext, $(EXTENSIONS), $(AT)$(foreach dir, $(MOD), MOD_DIR=$(dir); export MOD_DIR; test ! -d $(ext)/$(dir) || mkdir -p build/$(dir)/test; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; test ! -d $(ext)/$(dir) || $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) check || exit $$?;))
  131. endif
  132. valgrind: library
  133. ifndef MOD
  134. $(AT)$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) valgrind || exit $$?;)
  135. $(AT)$(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), mkdir -p build/$(dir)/test; BUILD_DIR=$(CURDIR)/build/$(dir); export BUILD_DIR; MOD_DIR=$(dir); export MOD_DIR; $(MAKE) -f $(CURDIR)/Makefile.subdirs -C $(ext)/$(dir) valgrind || exit $$?;))
  136. else
  137. $(AT)$(foreach dir, $(MOD), mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) valgrind || exit $$?;)
  138. endif
  139. install: library
  140. mkdir -p $(DESTDIR)$(PREFIX)/lib
  141. mkdir -p $(DESTDIR)$(PREFIX)/include/flint
  142. $(AT)if [ "$(FLINT_SHARED)" -eq "1" ]; then \
  143. cp $(FLINT_LIB) $(DESTDIR)$(PREFIX)/lib; \
  144. fi
  145. $(AT)if [ "$(FLINT_STATIC)" -eq "1" ]; then \
  146. cp libflint.a $(DESTDIR)$(PREFIX)/lib; \
  147. fi
  148. cp $(HEADERS) $(DESTDIR)$(PREFIX)/include/flint
  149. $(AT)if [ ! -z $(EXT_HEADERS) ]; then \
  150. cp $(EXT_HEADERS) $(DESTDIR)$(PREFIX)/include/flint; \
  151. fi
  152. mkdir -p $(DESTDIR)$(FLINT_CPIMPORT_DIR)
  153. cp qadic/CPimport.txt $(DESTDIR)$(FLINT_CPIMPORT_DIR)
  154. mkdir -p $(DESTDIR)$(PREFIX)/include/flint/flintxx
  155. cp flintxx/*.h $(DESTDIR)$(PREFIX)/include/flint/flintxx
  156. cp *xx.h $(DESTDIR)$(PREFIX)/include/flint
  157. build:
  158. mkdir -p build
  159. build/%.lo: %.c $(HEADERS) | build
  160. $(QUIET_CC) $(CC) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@;
  161. build/%.o: %.c $(HEADERS) | build
  162. $(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@;
  163. build/test/%$(EXEEXT): test/%.c $(HEADERS) | build/test
  164. $(QUIET_CC) $(CC) $(CFLAGS) $(INCS) $< -o $@ $(LIBS)
  165. build/test:
  166. mkdir -p build/test
  167. build/interfaces:
  168. mkdir -p build/interfaces
  169. build/interfaces/NTL-interface.lo: interfaces/NTL-interface.cpp NTL-interface.h
  170. $(QUIET_CXX) $(CXX) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@;
  171. build/interfaces/NTL-interface.o: interfaces/NTL-interface.cpp NTL-interface.h
  172. $(QUIET_CXX) $(CXX) $(CFLAGS) $(INCS) -c $< -o $@;
  173. build/interfaces/test/t-NTL-interface$(EXEEXT): interfaces/test/t-NTL-interface.cpp
  174. $(QUIET_CXX) $(CXX) $(CFLAGS) $(INCS) $< build/interfaces/NTL-interface.o -o $@ $(LIBS);
  175. print-%:
  176. @echo '$*=$($*)'
  177. .PHONY: profile library shared static clean examples tune check tests distclean dist install all valgrind