-
Notifications
You must be signed in to change notification settings - Fork 4
/
Makefile.sample
104 lines (85 loc) · 2.89 KB
/
Makefile.sample
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
# -*- makefile-gmake -*-
# Sample Makefile to use installed gkylzero library: copy and modify
# for your needs
ARCH_FLAGS ?= -march=native
CUDA_ARCH ?= 70
# Warning flags: -Wall -Wno-unused-variable -Wno-unused-function -Wno-missing-braces
CFLAGS ?= -O3 -g -ffast-math -fPIC -MMD -MP
LDFLAGS =
PREFIX ?= ${HOME}/gkylsoft
# determine OS we are running on
UNAME = $(shell uname)
# Default lapack include and libraries: we prefer linking to static library
LAPACK_INC = $(PREFIX)/OpenBLAS/include
LAPACK_LIB_DIR = $(PREFIX)/OpenBLAS/lib
LAPACK_LIB = -lopenblas
# SuperLU includes and librararies
SUPERLU_INC = $(PREFIX)/superlu/include
ifeq ($(UNAME_S),Linux)
SUPERLU_LIB_DIR = $(PREFIX)/superlu/lib64
SUPERLU_LIB = $(PREFIX)/superlu/lib64/libsuperlu.a
else
SUPERLU_LIB_DIR = $(PREFIX)/superlu/lib
SUPERLU_LIB = $(PREFIX)/superlu/lib/libsuperlu.a
endif
# Include config.mak file (if it exists)
-include G0_SHARE_INSTALL_PREFIX_TAG/config.mak
CFLAGS = -O3 -g -ffast-math -I.
G0_INC_DIR = ${PREFIX}/gkylzero/include
G0_LIB_DIR = ${PREFIX}/gkylzero/lib
G0_LIB = -lgkylzero
USING_NVCC =
NVCC_FLAGS =
CUDA_LIBS =
ifeq ($(CC), nvcc)
USING_NVCC = yes
CFLAGS = -O3 -g --forward-unknown-to-host-compiler --use_fast_math -ffast-math -MMD -MP -fPIC
NVCC_FLAGS = -x cu -dc -arch=sm_${CUDA_ARCH} --compiler-options="-fPIC"
LDFLAGS += -arch=sm_${CUDA_ARCH}
ifdef CUDAMATH_LIBDIR
CUDA_LIBS = -L${CUDAMATH_LIBDIR}
else
CUDA_LIBS =
endif
CUDA_LIBS += -lcublas -lcusparse -lcusolver
endif
G0_LIBS = ${G0_LIB} ${CUDA_LIBS} -lm -lpthread
G0_RPATH = -Wl,-rpath,${G0_LIB_DIR}
# determine OS we are running on
UNAME = $(shell uname)
# On OSX we should use Accelerate framework
ifeq ($(UNAME), Darwin)
LAPACK_INC = . # dummy
LAPACK_LIB = -framework Accelerate
CFLAGS += -DGKYL_USING_FRAMEWORK_ACCELERATE
endif
# Read MPI paths and flags if needed
USING_MPI =
MPI_INC_DIR = zero # dummy
MPI_LIB_DIR = .
ifeq (${USE_MPI}, 1)
USING_MPI = yes
MPI_INC_DIR = ${CONF_MPI_INC_DIR}
MPI_LIB_DIR = ${CONF_MPI_LIB_DIR}
MPI_LIBS = -lmpi
CFLAGS += -DGKYL_HAVE_MPI
endif
# Read LUA paths and flags if needed
USING_LUA =
LUA_INC_DIR = zero # dummy
LUA_LIB_DIR = .
ifeq (${USE_LUA}, 1)
USING_LUA = yes
LUA_INC_DIR = ${CONF_LUA_INC_DIR}
LUA_LIB_DIR = ${CONF_LUA_LIB_DIR}
LUA_LIBS = -l${CONF_LUA_LIB}
CFLAGS += -DGKYL_HAVE_LUA
endif
INCLUDES = -I${G0_INC_DIR} -I${LAPACK_INC} -I${SUPERLU_INC} -I${MPI_INC_DIR} -I${LUA_INC_DIR}
LIB_DIRS = -L${LAPACK_LIB_DIR} -L${SUPERLU_LIB_DIR} -L${MPI_LIB_DIR} -L${LUA_LIB_DIR}
EXT_LIBS = ${LAPACK_LIB} ${SUPERLU_LIB} ${MPI_LIBS} ${LUA_LIBS} -lm -lpthread -ldl
all: rt_vlasov_twostream_p2
rt_vlasov_twostream_p2: rt_vlasov_twostream_p2.c
${CC} ${CFLAGS} ${INCLUDES} rt_vlasov_twostream_p2.c -o rt_vlasov_twostream_p2 -L${G0_LIB_DIR} ${G0_RPATH} ${G0_LIBS} ${LIB_DIRS} ${EXT_LIBS}
clean:
rm -rf rt_vlasov_twostream_p2 rt_vlasov_twostream_p2.dSYM