diff options
author | Anton Khirnov <anton@khirnov.net> | 2022-11-23 16:09:08 +0100 |
---|---|---|
committer | Anton Khirnov <anton@khirnov.net> | 2024-04-15 13:34:54 +0200 |
commit | 098523b825c14184592a8717c2c3becbf6bc3f9f (patch) | |
tree | 691cce5484bb2a63555e688a5bfad8fda7585e70 /Makefile | |
parent | 1bf2694303843192e7098876c0fc709307eece65 (diff) |
Switch from meson to configure+make.
Meson is an extra dependency and generally sucks.
Diffstat (limited to 'Makefile')
-rw-r--r-- | Makefile | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..1991773 --- /dev/null +++ b/Makefile @@ -0,0 +1,72 @@ +MAKEFLAGS += --no-builtin-rules + +include config.mak + +TARGET = libmg2d.so + +TESTPROGS = $(addsuffix _test, \ + relax \ + relax_mpi \ + mg2d \ + mg2d_mpi \ +) + +VPATH = $(SOURCE_DIR) + +CFLAGS += -std=c11 -fPIC +CFLAGS += -g -O3 +CFLAGS += -D_XOPEN_SOURCE=700 # POSIX +CFLAGS += -D_DEFAULT_SOURCE=1 # for random_r +CFLAGS += -I. -I$(SOURCE_DIR) +CFLAGS += $(CFLAGS_DEP) + +LDFLAGS_COMMON = $(LDFLAGS_DEP) +LDFLAGS_COMMON += -lm -llapacke -lblas -lthreadpool -lndarray +LDFLAGS_TARGET = -shared -Wl,--version-script=$(SOURCE_DIR)/libmg2d.v + +OBJS = \ + bicgstab.c.o \ + boundary.c.o \ + components.c.o \ + cpu.c.o \ + ell_grid_solve.c.o \ + log.c.o \ + mg2d.c.o \ + residual_calc.c.o \ + timer.c.o \ + transfer.c.o + +OBJS-$(HAVE_NASM) = \ + cpuid.asm.o \ + ndarray.asm.o \ + residual_calc.asm.o \ + transfer_interp.asm.o \ + +OBJS += $(OBJS-yes) + +all: $(TARGET) + +testprogs: $(TESTPROGS) + +$(TARGET) $(TESTPROGS): $(OBJS) + $(CC) -o $@ $(OBJS) $(TESTOBJ) $(LDFLAGS_COMMON) $(LDFLAGS) + +$(TARGET): LDFLAGS = $(LDFLAGS_TARGET) + +$(TESTPROGS): %: %.c.o +$(TESTPROGS): $(TARGET) +$(foreach testprog, $(TESTPROGS), $(eval $(testprog): TESTOBJ = $(testprog).c.o)) + +%.c.o: %.c + $(CC) $(CFLAGS) -MMD -MF $(@:.o=.d) -MT $@ -c -o $@ $< + +%.asm.o: %.asm + nasm -i $(SOURCE_DIR)/ -f elf64 -MD $(@:.o=.d) -MT $@ $< + nasm -i $(SOURCE_DIR)/ -f elf64 -o $@ $< + +clean: + -rm -f *.o *.d *.pyc $(TARGET) + +-include $(OBJS:.o=.d) + +.PHONY: all testprogs clean |