255 lines
12 KiB
Makefile
255 lines
12 KiB
Makefile
|
# This file is autogenerated by ./configure -- do not edit!
|
||
|
|
||
|
SHELL=/bin/sh
|
||
|
|
||
|
FLINT_STATIC=1
|
||
|
FLINT_SHARED=0
|
||
|
FLINT_LIB=libflint.so
|
||
|
EXEEXT=
|
||
|
PREFIX=/usr
|
||
|
|
||
|
WANT_NTL=0
|
||
|
|
||
|
FLINT_CPIMPORT_DIR=/usr/share/flint
|
||
|
FLINT_CPIMPORT=/usr/share/flint/CPimport.txt
|
||
|
|
||
|
INCS=-I$(CURDIR) -I/usr/include -I/usr/include
|
||
|
LIBS=-L$(CURDIR) -L/usr/lib -L/usr/lib -lflint -lpthread -lmpfr -lgmp -lm
|
||
|
LIBS2=-L$(CURDIR) -L/usr/lib -L/usr/lib -lpthread -lmpfr -lgmp -lm
|
||
|
|
||
|
CC=gcc
|
||
|
CXX=g++
|
||
|
AR=ar
|
||
|
|
||
|
CFLAGS=-ansi -pedantic -Wall -O2 -funroll-loops -g -mpopcnt -DFLINT_CPIMPORT=\"/usr/share/flint/CPimport.txt\"
|
||
|
ABI_FLAG=
|
||
|
PIC_FLAG=-fPIC
|
||
|
EXTRA_SHARED_FLAGS=
|
||
|
|
||
|
DLPATH=LD_LIBRARY_PATH
|
||
|
DLPATH_ADD=$(CURDIR):/usr/lib:/usr/lib
|
||
|
EXTENSIONS=
|
||
|
EXTRA_BUILD_DIRS=
|
||
|
|
||
|
ifdef $(DLPATH)
|
||
|
$(DLPATH):=$($(DLPATH)):$(DLPATH_ADD)
|
||
|
else
|
||
|
$(DLPATH):=$(DLPATH_ADD)
|
||
|
endif
|
||
|
|
||
|
QUIET_CC = @echo ' ' CC ' ' $@;
|
||
|
QUIET_CXX = @echo ' ' CXX ' ' $@;
|
||
|
QUIET_AR = @echo ' ' AR ' ' $@;
|
||
|
|
||
|
AT=@
|
||
|
|
||
|
BUILD_DIRS = ulong_extras long_extras perm fmpz fmpz_vec fmpz_poly \
|
||
|
fmpq_poly fmpz_mat mpfr_vec mpfr_mat nmod_vec nmod_poly \
|
||
|
nmod_poly_factor arith mpn_extras nmod_mat fmpq fmpq_mat padic \
|
||
|
fmpz_poly_q fmpz_poly_mat nmod_poly_mat fmpz_mod_poly \
|
||
|
fmpz_mod_poly_factor fmpz_factor fmpz_poly_factor fft qsieve \
|
||
|
double_extras padic_poly padic_mat qadic \
|
||
|
fq fq_vec fq_mat fq_poly fq_poly_factor\
|
||
|
fq_nmod fq_nmod_vec fq_nmod_mat fq_nmod_poly fq_nmod_poly_factor \
|
||
|
fq_zech fq_zech_vec fq_zech_mat fq_zech_poly fq_zech_poly_factor \
|
||
|
$(EXTRA_BUILD_DIRS)
|
||
|
|
||
|
TEMPLATE_DIRS = fq_vec_templates fq_mat_templates fq_poly_templates \
|
||
|
fq_poly_factor_templates
|
||
|
|
||
|
export
|
||
|
|
||
|
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
|
||
|
LIB_SOURCES = $(wildcard $(patsubst %, %/*.c, $(BUILD_DIRS))) $(patsubst %, %/*.c, $(TEMPLATE_DIRS))
|
||
|
|
||
|
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))
|
||
|
|
||
|
OBJS = $(patsubst %.c, build/%.o, $(SOURCES))
|
||
|
LIB_OBJS = $(patsubst %, build/%/*.o, $(BUILD_DIRS))
|
||
|
|
||
|
LOBJS = $(patsubst %.c, build/%.lo, $(SOURCES))
|
||
|
LIB_LOBJS = $(patsubst %, build/%/*.lo, $(BUILD_DIRS))
|
||
|
MOD_LOBJS = $(patsubst %, build/%.lo, $(BUILD_DIRS))
|
||
|
|
||
|
EXMP_SOURCES = $(wildcard examples/*.c)
|
||
|
EXMPS = $(patsubst %.c, %, $(EXMP_SOURCES))
|
||
|
|
||
|
TEST_SOURCES = $(wildcard test/*.c)
|
||
|
TESTS = $(patsubst %.c, build/%$(EXEEXT), $(TEST_SOURCES))
|
||
|
|
||
|
PROF_SOURCES = $(wildcard profile/*.c)
|
||
|
PROFS = $(patsubst %.c, %$(EXEEXT), $(PROF_SOURCES))
|
||
|
|
||
|
TUNE_SOURCES = $(wildcard tune/*.c)
|
||
|
TUNE = $(patsubst %.c, %$(EXEEXT), $(TUNE_SOURCES))
|
||
|
|
||
|
EXT_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/*.c)))
|
||
|
EXT_TEST_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/test/t-*.c)))
|
||
|
EXT_TUNE_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/tune/*.c)))
|
||
|
EXT_PROF_SOURCES = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(wildcard $(ext)/$(dir)/profile/p-*.c)))
|
||
|
EXT_OBJS = $(foreach ext, $(EXTENSIONS), $(foreach dir, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), build/$(dir).lo))
|
||
|
EXT_HEADERS = $(foreach ext, $(EXTENSIONS), $(wildcard $(ext)/*.h))
|
||
|
|
||
|
all: library
|
||
|
|
||
|
quiet: library
|
||
|
|
||
|
verbose:
|
||
|
$(MAKE) AT= QUIET_CC= QUIET_CXX= QUIET_AR=
|
||
|
|
||
|
clean:
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
rm -rf test_helpers.o profiler.o
|
||
|
rm -f $(OBJS) $(LOBJS) $(TESTS) $(PROFS) $(EXMPS) $(FLINT_LIB) libflint.a
|
||
|
rm -rf build
|
||
|
|
||
|
distclean: clean
|
||
|
rm -f config.h fft_tuning.h fmpz-conversions.h Makefile fmpz/fmpz.c
|
||
|
|
||
|
dist:
|
||
|
git archive --format tar --prefix flint-2.4.2/ flint-2.4 > ../flint-2.4.2.tar; gzip ../flint-2.4.2.tar
|
||
|
|
||
|
profile: library $(PROF_SOURCES) $(EXT_PROF_SOURCES) build/profiler.o
|
||
|
mkdir -p build/profile
|
||
|
ifndef MOD
|
||
|
$(AT)$(foreach prog, $(PROFS), $(CC) $(ABI_FLAG) -std=c99 -O2 -g $(INCS) $(prog).c build/profiler.o -o build/$(prog) $(LIBS) || exit $$?;)
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
else
|
||
|
$(AT)$(foreach dir, $(MOD), mkdir -p build/$(dir)/profile; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) profile || exit $$?;)
|
||
|
endif
|
||
|
|
||
|
tune: library $(TUNE_SOURCES) $(EXT_TUNE_SOURCES)
|
||
|
mkdir -p build/tune
|
||
|
$(AT)$(foreach prog, $(TUNE), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS) || exit $$?;)
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
|
||
|
examples: library $(EXMP_SOURCES)
|
||
|
mkdir -p build/examples
|
||
|
$(AT)$(foreach prog, $(EXMPS), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS) || exit $$?;)
|
||
|
|
||
|
$(FLINT_LIB): $(LOBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
|
||
|
$(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 $$?;))
|
||
|
$(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 $$?;)
|
||
|
$(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
|
||
|
$(MAKE) build/interfaces/NTL-interface.lo; \
|
||
|
$(CXX) $(ABI_FLAG) -shared $(EXTRA_SHARED_FLAGS) build/interfaces/NTL-interface.lo $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \
|
||
|
fi
|
||
|
$(AT)if [ "$(WANT_NTL)" -ne "1" ]; then \
|
||
|
$(CC) $(ABI_FLAG) -shared $(EXTRA_SHARED_FLAGS) $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(FLINT_LIB); \
|
||
|
fi
|
||
|
|
||
|
libflint.a: $(OBJS) $(LIB_SOURCES) $(EXT_SOURCES) $(HEADERS) $(EXT_HEADERS) | build build/interfaces
|
||
|
$(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 $$?;))
|
||
|
$(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 $$?;)
|
||
|
$(AT)if [ "$(FLINT_SHARED)" -eq "0" ]; then \
|
||
|
touch test/t-*.c; \
|
||
|
$(foreach dir, $(BUILD_DIRS), touch $(dir)/test/t-*.c;) \
|
||
|
$(foreach ext, $(EXTENSIONS), $(foreach mod, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), touch $(ext)/$(mod)/test/t-*.c;)) \
|
||
|
fi
|
||
|
$(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
|
||
|
$(MAKE) build/interfaces/NTL-interface.o; \
|
||
|
$(AR) rcs libflint.a build/interfaces/NTL-interface.o; \
|
||
|
fi
|
||
|
$(QUIET_AR) $(AR) rcs libflint.a $(OBJS);
|
||
|
$(AT)$(foreach mod, $(BUILD_DIRS), $(AR) rcs libflint.a build/$(mod)/*.o || exit $$?;)
|
||
|
$(AT)$(foreach ext, $(EXTENSIONS), $(foreach mod, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(AR) rcs libflint.a build/$(mod)/*.o || exit $$?;))
|
||
|
|
||
|
library:
|
||
|
$(AT)if [ "$(FLINT_SHARED)" -eq "1" ]; then \
|
||
|
$(MAKE) shared; \
|
||
|
fi
|
||
|
$(AT)if [ "$(FLINT_STATIC)" -eq "1" ]; then \
|
||
|
$(MAKE) static; \
|
||
|
fi
|
||
|
|
||
|
shared: $(FLINT_LIB)
|
||
|
|
||
|
static: libflint.a
|
||
|
|
||
|
tests: library test_helpers.o $(TESTS)
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
mkdir -p build/interfaces/test
|
||
|
$(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
|
||
|
$(MAKE) build/interfaces/test/t-NTL-interface; \
|
||
|
fi
|
||
|
|
||
|
check: library test_helpers.o
|
||
|
ifndef MOD
|
||
|
$(AT)$(MAKE) $(TESTS)
|
||
|
$(AT)$(foreach prog, $(TESTS), $(prog) || exit $$?;)
|
||
|
$(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 $$?;))
|
||
|
$(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 $$?;)
|
||
|
mkdir -p build/interfaces/test
|
||
|
$(AT)if [ "$(WANT_NTL)" -eq "1" ]; then \
|
||
|
$(MAKE) build/interfaces/test/t-NTL-interface; \
|
||
|
build/interfaces/test/t-NTL-interface; \
|
||
|
fi
|
||
|
else
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
endif
|
||
|
|
||
|
valgrind: library
|
||
|
ifndef MOD
|
||
|
$(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 $$?;)
|
||
|
$(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 $$?;))
|
||
|
else
|
||
|
$(AT)$(foreach dir, $(MOD), mkdir -p build/$(dir)/test; BUILD_DIR=../build/$(dir); export BUILD_DIR; $(MAKE) -f ../Makefile.subdirs -C $(dir) valgrind || exit $$?;)
|
||
|
endif
|
||
|
|
||
|
install: library
|
||
|
mkdir -p $(DESTDIR)$(PREFIX)/lib
|
||
|
mkdir -p $(DESTDIR)$(PREFIX)/include/flint
|
||
|
$(AT)if [ "$(FLINT_SHARED)" -eq "1" ]; then \
|
||
|
cp $(FLINT_LIB) $(DESTDIR)$(PREFIX)/lib; \
|
||
|
fi
|
||
|
$(AT)if [ "$(FLINT_STATIC)" -eq "1" ]; then \
|
||
|
cp libflint.a $(DESTDIR)$(PREFIX)/lib; \
|
||
|
fi
|
||
|
cp $(HEADERS) $(DESTDIR)$(PREFIX)/include/flint
|
||
|
$(AT)if [ ! -z $(EXT_HEADERS) ]; then \
|
||
|
cp $(EXT_HEADERS) $(DESTDIR)$(PREFIX)/include/flint; \
|
||
|
fi
|
||
|
mkdir -p $(DESTDIR)$(FLINT_CPIMPORT_DIR)
|
||
|
cp qadic/CPimport.txt $(DESTDIR)$(FLINT_CPIMPORT_DIR)
|
||
|
mkdir -p $(DESTDIR)$(PREFIX)/include/flint/flintxx
|
||
|
cp flintxx/*.h $(DESTDIR)$(PREFIX)/include/flint/flintxx
|
||
|
cp *xx.h $(DESTDIR)$(PREFIX)/include/flint
|
||
|
|
||
|
build:
|
||
|
mkdir -p build
|
||
|
|
||
|
build/%.lo: %.c $(HEADERS) | build
|
||
|
$(QUIET_CC) $(CC) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@;
|
||
|
|
||
|
build/%.o: %.c $(HEADERS) | build
|
||
|
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@;
|
||
|
|
||
|
build/test/%$(EXEEXT): test/%.c $(HEADERS) | build/test
|
||
|
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) $< -o $@ $(LIBS)
|
||
|
|
||
|
build/test:
|
||
|
mkdir -p build/test
|
||
|
|
||
|
build/interfaces:
|
||
|
mkdir -p build/interfaces
|
||
|
|
||
|
build/interfaces/NTL-interface.lo: interfaces/NTL-interface.cpp NTL-interface.h
|
||
|
$(QUIET_CXX) $(CXX) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@;
|
||
|
|
||
|
build/interfaces/NTL-interface.o: interfaces/NTL-interface.cpp NTL-interface.h
|
||
|
$(QUIET_CXX) $(CXX) $(CFLAGS) $(INCS) -c $< -o $@;
|
||
|
|
||
|
build/interfaces/test/t-NTL-interface$(EXEEXT): interfaces/test/t-NTL-interface.cpp
|
||
|
$(QUIET_CXX) $(CXX) $(CFLAGS) $(INCS) $< build/interfaces/NTL-interface.o -o $@ $(LIBS);
|
||
|
|
||
|
print-%:
|
||
|
@echo '$*=$($*)'
|
||
|
|
||
|
.PHONY: profile library shared static clean examples tune check tests distclean dist install all valgrind
|
||
|
|