aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: ddf36c843a144fc361b3a0d1e5cc0d09f82f0df1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
TARGET = libmg2d.so

CC = cc

SRC_DIR = ./src/

VPATH = $(SRC_DIR)

CFLAGS  = -std=c11 -fPIC
CFLAGS += -g -O3
CFLAGS += -D_XOPEN_SOURCE=700                      # POSIX
CFLAGS += -D_DEFAULT_SOURCE=1                      # for random_r
CFLAGS += -I$(SRC_DIR)/

TARGET_LDFLAGS = -Wl,--version-script=$(SRC_DIR)/libmg2d.v -shared -lm -llapacke -lthreadpool -lndarray -lmpi
TEST_LIBS = -lm -llapacke -lcblas -lpthread

OBJS =                          \
       bicgstab.c.o             \
       boundary.c.o             \
       components.c.o           \
       cpu.c.o                  \
       cpuid.asm.o              \
       ell_grid_solve.c.o       \
       log.c.o                  \
       mg2d.o                   \
       ndarray.asm.o            \
       residual_calc.asm.o      \
       residual_calc.c.o        \
       step_control.c.o         \
       timer.c.o                \
       transfer.c.o             \
       transfer_interp.asm.o    \

all: $(TARGET)

$(TARGET): $(OBJS)
	$(CC) -o $@ $(OBJS) ${TARGET_LDFLAGS}

%.c.o: %.c
	$(CC) $(CFLAGS) -MMD -MF $(@:.o=.d) -MT $@ -c -o $@ $<

%.asm.o: %.asm
	nasm -i $(SRC_DIR) -f elf64 -M $< > $(@:.o=.d)
	nasm -i $(SRC_DIR) -f elf64 -o $@ $<

clean:
	-rm -f *.o *.d *.pyc $(TARGET)

-include $(OBJS:.o=.d)

.PHONY: clean