-
Notifications
You must be signed in to change notification settings - Fork 137
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
replace makefiles with version based on the improved flint makefiles
- Loading branch information
1 parent
7554efe
commit a401915
Showing
30 changed files
with
808 additions
and
1,254 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,106 +1,196 @@ | ||
LIBS=-L$(CURDIR) -L$(ARB_FLINT_LIB_DIR) -L$(ARB_GMP_LIB_DIR) -L$(ARB_MPFR_LIB_DIR) -larb -lflint -lmpfr -lgmp -lpthread -lm | ||
LIBS2=-L$(ARB_FLINT_LIB_DIR) -L$(ARB_GMP_LIB_DIR) -L$(ARB_MPFR_LIB_DIR) -lflint -lmpfr -lgmp -lpthread -lm | ||
INCS=-I$(CURDIR) -I$(ARB_GMP_INCLUDE_DIR) -I$(ARB_MPFR_INCLUDE_DIR) -I$(ARB_FLINT_INCLUDE_DIR) | ||
LINKLIBS=$(ARB_GMP_LIB_DIR)/libgmp.a $(ARB_MPFR_LIB_DIR)/libmpfr.a $(ARB_FLINT_LIB_DIR)/libflint.so | ||
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 = fmpr arf mag arb arb_mat arb_poly arb_calc acb acb_mat acb_poly \ | ||
acb_calc fmprb fmprb_poly fmprb_mat fmprb_calc fmpcb fmpcb_poly fmpcb_mat \ | ||
fmpcb_calc elefun bernoulli hypgeom gamma zeta fmpz_extras partitions \ | ||
$(EXTRA_BUILD_DIRS) | ||
|
||
TEMPLATE_DIRS = | ||
|
||
LD_LIBRARY_PATH:=${CURDIR}:${ARB_FLINT_LIB_DIR}:${ARB_MPFR_LIB_DIR}:${ARB_GMP_LIB_DIR}:${LD_LIBRARY_PATH} | ||
export LD_LIBRARY_PATH | ||
export | ||
|
||
SOURCES = $(wildcard *.c) | ||
SOURCES = | ||
LIB_SOURCES = $(wildcard $(patsubst %, %/*.c, $(BUILD_DIRS))) $(patsubst %, %/*.c, $(TEMPLATE_DIRS)) | ||
|
||
HEADERS = $(wildcard *.h) | ||
HEADERS = $(patsubst %, %.h, $(BUILD_DIRS)) | ||
|
||
OBJS = $(patsubst %.c, build/%.o, $(SOURCES)) | ||
LIB_OBJS = $(patsubst %, build/%/*.o, $(BUILD_DIRS)) | ||
|
||
LOBJS = $(patsubst %.c, build/%.lo, $(SOURCES)) | ||
|
||
LIB_SOURCES = $(SOURCES) $(foreach dir, $(BUILD_DIRS), $(wildcard $(dir)/*.c)) | ||
|
||
LIB_OBJS = $(patsubst %.c, build/%.lo, $(LIB_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)) | ||
|
||
EXMPS = $(patsubst %.c, %, $(EXMP_SOURCES)) | ||
TUNE_SOURCES = $(wildcard tune/*.c) | ||
TUNE = $(patsubst %.c, %$(EXEEXT), $(TUNE_SOURCES)) | ||
|
||
TESTS = $(patsubst %.c, %, $(TEST_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)) | ||
|
||
PROFS = $(patsubst %.c, %, $(PROF_SOURCES)) | ||
all: library | ||
|
||
all: all-dirs $(OBJS) recursive library | ||
quiet: library | ||
|
||
all-dirs: | ||
$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir);) | ||
verbose: | ||
$(MAKE) AT= QUIET_CC= QUIET_CXX= QUIET_AR= | ||
|
||
clean: | ||
$(foreach dir, $(BUILD_DIRS), export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir) 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 -f $(OBJS) $(LOBJS) $(TESTS) $(PROFS) $(EXMPS) $(ARB_LIB) libarb.a | ||
rm -rf build | ||
|
||
distclean: clean | ||
rm -f Makefile | ||
|
||
dist: | ||
git archive --format tar --prefix arb-0.0/ trunk > ../arb-0.0.tar; gzip ../arb-0.0.tar | ||
|
||
profile: all profiler.o | ||
profile: library $(PROF_SOURCES) $(EXT_PROF_SOURCES) build/profiler.o | ||
mkdir -p build/profile | ||
$(foreach prog, $(PROFS), $(CC) -O2 -std=c99 $(INCS) $(prog).c profiler.o -o build/$(prog) $(LIBS);) | ||
$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/profile; export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir) 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 | ||
|
||
recursive: | ||
$(foreach dir, $(BUILD_DIRS), export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir);) | ||
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: all $(LOBJS) library | ||
examples: library $(EXMP_SOURCES) | ||
mkdir -p build/examples | ||
$(foreach prog, $(EXMPS), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS);) | ||
$(AT)$(foreach prog, $(EXMPS), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS) || exit $$?;) | ||
|
||
$(ARB_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 $(ARB_LIB); \ | ||
fi | ||
$(AT)if [ "$(WANT_NTL)" -ne "1" ]; then \ | ||
$(CC) $(ABI_FLAG) -shared $(EXTRA_SHARED_FLAGS) $(LOBJS) $(MOD_LOBJS) $(EXT_OBJS) $(LIBS2) -o $(ARB_LIB); \ | ||
fi | ||
|
||
libarb.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 [ "$(ARB_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 libarb.a build/interfaces/NTL-interface.o; \ | ||
fi | ||
$(QUIET_AR) $(AR) rcs libarb.a $(OBJS); | ||
$(AT)$(foreach mod, $(BUILD_DIRS), $(AR) rcs libarb.a build/$(mod)/*.o || exit $$?;) | ||
$(AT)$(foreach ext, $(EXTENSIONS), $(foreach mod, $(patsubst $(ext)/%.h, %, $(wildcard $(ext)/*.h)), $(AR) rcs libarb.a build/$(mod)/*.o || exit $$?;)) | ||
|
||
library: | ||
$(AT)if [ "$(ARB_SHARED)" -eq "1" ]; then \ | ||
$(MAKE) shared; \ | ||
fi | ||
$(AT)if [ "$(ARB_STATIC)" -eq "1" ]; then \ | ||
$(MAKE) static; \ | ||
fi | ||
|
||
shared: $(ARB_LIB) | ||
|
||
static: libarb.a | ||
|
||
tests: library $(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 | ||
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 | ||
|
||
check: $(ARB_LIB) | ||
valgrind: library | ||
ifndef MOD | ||
mkdir -p build/test | ||
$(foreach prog, $(TESTS), $(CC) $(CFLAGS) $(INCS) $(prog).c -o build/$(prog) $(LIBS);) | ||
$(foreach prog, $(TESTS), build/$(prog);) | ||
$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir)/test; export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir) check;) | ||
$(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 | ||
$(foreach dir, $(MOD), mkdir -p build/$(dir)/test; export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir) check;) | ||
$(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 | ||
|
||
library: library-recursive $(OBJS) $(LIB_OBJS) | ||
install: library | ||
mkdir -p $(DESTDIR)$(PREFIX)/lib | ||
mkdir -p $(DESTDIR)$(PREFIX)/include/arb | ||
$(AT)if [ "$(ARB_SHARED)" -eq "1" ]; then \ | ||
cp $(ARB_LIB) $(DESTDIR)$(PREFIX)/lib; \ | ||
fi | ||
$(AT)if [ "$(ARB_STATIC)" -eq "1" ]; then \ | ||
cp libarb.a $(DESTDIR)$(PREFIX)/lib; \ | ||
fi | ||
cp $(HEADERS) $(DESTDIR)$(PREFIX)/include/arb | ||
$(AT)if [ ! -z $(EXT_HEADERS) ]; then \ | ||
cp $(EXT_HEADERS) $(DESTDIR)$(PREFIX)/include; \ | ||
fi | ||
|
||
build: | ||
mkdir -p build | ||
ifdef ARB_SHARED | ||
$(CC) -fPIC -shared $(LIB_OBJS) $(LIBS2) -o $(ARB_LIB) | ||
endif | ||
ifdef ARB_STATIC | ||
$(AR) rcs libarb.a $(OBJS) $(LINKLIBS) | ||
endif | ||
|
||
library-recursive: | ||
$(foreach dir, $(BUILD_DIRS), mkdir -p build/$(dir); export BUILD_DIR=../build/$(dir); $(MAKE) -C $(dir) library;) | ||
build/%.lo: %.c $(HEADERS) | build | ||
$(QUIET_CC) $(CC) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@; | ||
|
||
$(ARB_LIB): library | ||
build/%.o: %.c $(HEADERS) | build | ||
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@; | ||
|
||
install: library | ||
mkdir -p $(PREFIX)/lib | ||
mkdir -p $(PREFIX)/include | ||
ifdef ARB_SHARED | ||
cp $(ARB_LIB) $(PREFIX)/lib | ||
endif | ||
ifdef ARB_STATIC | ||
cp libarb.a $(PREFIX)/lib | ||
endif | ||
cp *.h $(PREFIX)/include | ||
build/test/%$(EXEEXT): test/%.c $(HEADERS) | build/test | ||
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) $< -o $@ $(LIBS) | ||
|
||
.PHONY: profile library library-recursive recursive clean check check-recursive all | ||
build/test: | ||
mkdir -p build/test | ||
|
||
build/%.lo: %.c | ||
$(CC) -fPIC $(CFLAGS) $(INCS) -c $< -o $@ | ||
build/interfaces: | ||
mkdir -p build/interfaces | ||
|
||
build/%.o: %.c | ||
$(CC) -fPIC $(CFLAGS) $(INCS) -c $< -o $@ | ||
print-%: | ||
@echo '$*=$($*)' | ||
|
||
BUILD_DIRS = fmpr arf mag arb arb_mat arb_poly arb_calc acb acb_mat acb_poly acb_calc fmprb fmprb_poly fmprb_mat fmprb_calc fmpcb fmpcb_poly fmpcb_mat fmpcb_calc elefun bernoulli hypgeom gamma zeta fmpz_extras partitions | ||
.PHONY: profile library shared static clean examples tune check tests distclean dist install all valgrind | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
QUIET_CC = @echo ' ' CC ' ' $@; | ||
|
||
AT=@ | ||
|
||
SOURCES = $(wildcard *.c) | ||
|
||
HEADERS = $(wildcard ../*.h) | ||
TEST_HEADERS = $(wildcard *.h) | ||
|
||
OBJS = $(patsubst %.c, $(BUILD_DIR)/$(MOD_DIR)_%.o, $(SOURCES)) | ||
|
||
LOBJS = $(patsubst %.c, $(BUILD_DIR)/%.lo, $(SOURCES)) | ||
MOD_LOBJ = $(BUILD_DIR)/../$(MOD_DIR).lo | ||
|
||
TEST_SOURCES = $(wildcard test/*.c) | ||
TESTXX_SOURCES = $(wildcard test/*.cpp) | ||
|
||
PROF_SOURCES = $(wildcard profile/*.c) | ||
|
||
TUNE_SOURCES = $(wildcard tune/*.c) | ||
|
||
TESTS = $(patsubst %.c, $(BUILD_DIR)/%$(EXEEXT), $(TEST_SOURCES)) \ | ||
$(patsubst %.cpp, $(BUILD_DIR)/%$(EXEEXT), $(TESTXX_SOURCES)) | ||
|
||
TESTS_RUN = $(patsubst %, %_RUN, $(TESTS)) | ||
|
||
VALGRIND_RUN = $(patsubst %, %_VALGRIND_RUN, $(TESTS)) | ||
|
||
PROFS = $(patsubst %.c, $(BUILD_DIR)/%$(EXEEXT), $(PROF_SOURCES)) | ||
|
||
TUNE = $(patsubst %.c, %$(EXEEXT), $(TUNE_SOURCES)) | ||
|
||
all: shared static | ||
|
||
shared: $(MOD_LOBJ) | ||
|
||
static: $(OBJS) | ||
|
||
profile: $(PROFS) | ||
|
||
-include $(patsubst %, %.d, $(PROFS)) | ||
|
||
$(BUILD_DIR)/profile/%$(EXEEXT): profile/%.c $(BUILD_DIR)/../profiler.o | ||
$(QUIET_CC) $(CC) $(ABI_FLAG) -O2 -std=c99 -g $(INCS) $< $(BUILD_DIR)/../profiler.o -o $@ $(LIBS) -MMD -MP -MF $@.d -MT "$@" -MT "$@.d" | ||
|
||
tune: $(TUNE_SOURCES) $(HEADERS) | ||
$(AT)$(foreach prog, $(TUNE), $(CC) $(CFLAGS) $(INCS) $(prog).c -o $(BUILD_DIR)/$(prog) $(LIBS) || exit $$?;) | ||
|
||
-include $(OBJS:.o=.d) | ||
|
||
$(BUILD_DIR)/$(MOD_DIR)_%.o: %.c | ||
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) -c $< -o $@ -MMD -MP -MF "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$(BUILD_DIR)/$(MOD_DIR)_$*.d" -MT "$@" | ||
|
||
$(MOD_LOBJ): $(LOBJS) | ||
$(QUIET_CC) $(CC) $(ABI_FLAG) -Wl,-r $^ -o $@ -nostdlib | ||
|
||
-include $(LOBJS:.lo=.d) | ||
|
||
$(BUILD_DIR)/%.lo: %.c | ||
$(QUIET_CC) $(CC) $(PIC_FLAG) $(CFLAGS) $(INCS) -c $< -o $@ -MMD -MP -MF "$(BUILD_DIR)/$*.d" -MT "$(BUILD_DIR)/$*.d" -MT "$@" | ||
|
||
clean: | ||
rm -rf $(BUILD_DIR) $(MOD_LOBJ) | ||
|
||
tests: $(TESTS) | ||
|
||
check: tests $(TESTS_RUN) | ||
|
||
valgrind: tests $(VALGRIND_RUN) | ||
|
||
-include $(patsubst %, %.d, $(TESTS)) | ||
|
||
ifeq ($(ARB_SHARED), 0) | ||
$(BUILD_DIR)/test/%$(EXEEXT): $(BUILD_DIR)/../../libarb.a | ||
endif | ||
|
||
$(BUILD_DIR)/test/%$(EXEEXT): test/%.c | ||
$(QUIET_CC) $(CC) $(CFLAGS) $(INCS) $< -o $@ $(LIBS) -MMD -MP -MF $@.d -MT "$@" -MT "$@.d" | ||
|
||
$(BUILD_DIR)/test/%$(EXEEXT): test/%.cpp $(BUILD_DIR)/../../test_helpers.o | ||
$(QUIET_CC) $(CXX) $(CFLAGS) $(INCS) $< -o $@ $(LIBS) -MMD -MP -MF $@.d -MT "$@" -MT "$@.d" | ||
|
||
%_RUN: % | ||
@$< | ||
|
||
%_VALGRIND_RUN: % | ||
valgrind --track-origins=yes --leak-check=full --show-reachable=yes --log-file="$*.valgrind" $< | ||
|
||
.PHONY: profile tune clean check tests all shared static valgrind %_RUN %_VALGRIND_RUN |
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.