1# Copyright 1998-2019 Lawrence Livermore National Security, LLC and other 2# HYPRE Project Developers. See the top-level COPYRIGHT file for details. 3# 4# SPDX-License-Identifier: (Apache-2.0 OR MIT) 5 6default:all 7 8include ../config/Makefile.config 9 10CINCLUDES = ${INCLUDES} ${MPIINCLUDE} 11 12CDEFS = -DHYPRE_TIMING -DHYPRE_FORTRAN 13CXXDEFS = -DNOFEI -DHYPRE_TIMING -DMPICH_SKIP_MPICXX 14 15C_COMPILE_FLAGS = \ 16 -I$(srcdir)\ 17 -I$(srcdir)/..\ 18 -I${HYPRE_BUILD_DIR}/include\ 19 $(SUPERLU_INCLUDE)\ 20 $(DSUPERLU_INCLUDE)\ 21 ${CINCLUDES}\ 22 ${CDEFS} 23 24CXX_COMPILE_FLAGS = \ 25 -I$(srcdir)\ 26 -I$(srcdir)/..\ 27 -I$(srcdir)/../FEI_mv/fei-base\ 28 -I${HYPRE_BUILD_DIR}/include\ 29 $(SUPERLU_INCLUDE)\ 30 $(DSUPERLU_INCLUDE)\ 31 ${CINCLUDES}\ 32 ${CXXDEFS} 33 34F77_COMPILE_FLAGS = \ 35 -I$(srcdir)\ 36 -I$(srcdir)/..\ 37 -I${HYPRE_BUILD_DIR}/include\ 38 ${CINCLUDES} 39 40MPILIBFLAGS = ${MPILIBDIRS} ${MPILIBS} ${MPIFLAGS} 41LAPACKLIBFLAGS = ${LAPACKLIBDIRS} ${LAPACKLIBS} 42BLASLIBFLAGS = ${BLASLIBDIRS} ${BLASLIBS} 43LIBFLAGS = ${LDFLAGS} ${LIBS} 44 45ifeq ($(notdir $(firstword ${LINK_CC})), nvcc) 46 XLINK = -Xlinker=-rpath,${HYPRE_BUILD_DIR}/lib 47else 48 XLINK = -Wl,-rpath,${HYPRE_BUILD_DIR}/lib 49endif 50 51LFLAGS =\ 52 -L${HYPRE_BUILD_DIR}/lib -lHYPRE\ 53 ${XLINK}\ 54 ${DSUPERLU_LIBS}\ 55 ${SUPERLU_LIBS}\ 56 ${MPILIBFLAGS}\ 57 ${LAPACKLIBFLAGS}\ 58 ${BLASLIBFLAGS}\ 59 ${LIBFLAGS} 60 61################################################################## 62# Targets 63################################################################## 64 65HYPRE_DRIVERS =\ 66 ij.c\ 67 ij_assembly.c\ 68 sstruct.c\ 69 struct.c\ 70 ams_driver.c\ 71 maxwell_unscaled.c\ 72 struct_migrate.c\ 73 sstruct_fac.c\ 74 ij_mv.c\ 75 zboxloop.c 76 77HYPRE_DRIVERS_CXX =\ 78 cxx_ij.cxx\ 79 cxx_sstruct.cxx\ 80 cxx_struct.cxx 81 82HYPRE_F77_EXAMPLES_DRIVERS =\ 83 ex1_for.c\ 84 ex3_for.c\ 85 ex5_for.c\ 86 ex6_for.c\ 87 ex7_for.c 88 89HYPRE_DRIVERS_F77 =\ 90 f77_ij.f\ 91 f77_ij_mv.f\ 92 f77_struct.f 93 94HYPRE_DRIVER_EXECS=${HYPRE_DRIVERS:.c=} 95HYPRE_F77_EXAMPLES_DRIVER_EXECS=${HYPRE_F77_EXAMPLES_DRIVERS:.c=} 96HYPRE_DRIVER_F77_EXECS=${HYPRE_DRIVERS_F77:.f=} 97HYPRE_DRIVER_CXX_EXECS=${HYPRE_DRIVERS_CXX:.cxx=} 98 99all: ${HYPRE_DRIVER_EXECS} 100 101all77: ${HYPRE_DRIVER_F77_EXECS} 102 103all++: ${HYPRE_DRIVER_CXX_EXECS} 104 105install: 106 107clean: 108 rm -f *.o *.obj 109 rm -rf pchdir tca.map *inslog* 110 111distclean: clean 112 rm -f ${HYPRE_DRIVER_EXECS} 113 rm -f ${HYPRE_F77_EXAMPLES_DRIVER_EXECS} 114 rm -f ${HYPRE_DRIVER_F77_EXECS} 115 rm -f ${HYPRE_DRIVER_CXX_EXECS} cxx_* 116 rm -f TEST_examples/*.out* 117 rm -f TEST_examples/*.err* 118 rm -f TEST_fac/*.out* 119 rm -f TEST_fac/*.err* 120 rm -f TEST_ij/*.out* 121 rm -f TEST_ij/*.err* 122 rm -f TEST_ij/*.txt* 123 rm -f TEST_ij/vectors.* 124 rm -f TEST_sstruct/*.out* 125 rm -f TEST_sstruct/*.err* 126 rm -f TEST_struct/*.out* 127 rm -f TEST_struct/*.err* 128 rm -f ex1 ex2 ex3 ex4 ex5 ex5big ex5b ex5b77 ex6 ex7 ex8 ex9 ex15big ex18comp 129 130################################################################## 131# Rules 132################################################################## 133 134# C 135 136ij: ij.o 137 @echo "Building" $@ "... " 138 ${LINK_CC} -o $@ $< ${LFLAGS} 139 140ij_assembly: ij_assembly.o 141 @echo "Building" $@ "... " 142 ${LINK_CC} -o $@ $< ${LFLAGS} 143 144sstruct: sstruct.o 145 @echo "Building" $@ "... " 146 ${LINK_CC} -o $@ $< ${LFLAGS} 147 148struct: struct.obj 149 @echo "Building" $@ "... " 150 ${LINK_CC} -o $@ $< ${LFLAGS} 151 152ams_driver: ams_driver.o 153 @echo "Building" $@ "... " 154 ${LINK_CC} -o $@ $< ${LFLAGS} 155 156maxwell_unscaled: maxwell_unscaled.o 157 @echo "Building" $@ "... " 158 ${LINK_CC} -o $@ $< ${LFLAGS} 159 160struct_migrate: struct_migrate.obj 161 @echo "Building" $@ "... " 162 ${LINK_CC} -o $@ $< ${LFLAGS} 163 164sstruct_fac: sstruct_fac.o 165 @echo "Building" $@ "... " 166 ${LINK_CC} -o $@ $< ${LFLAGS} 167 168ij_mv: ij_mv.o 169 @echo "Building" $@ "... " 170 ${LINK_CC} -o $@ $< ${LFLAGS} 171 172ij_device: ij_device.o 173 @echo "Building" $@ "... " 174 ${LINK_CC} -o $@ $< ${LFLAGS} 175 176ij_mm: ij_mm.o 177 @echo "Building" $@ "... " 178 ${LINK_CC} -o $@ $< ${LFLAGS} 179 180zboxloop: zboxloop.obj 181 @echo "Building" $@ "... " 182 ${LINK_CC} -o $@ $< ${LFLAGS} 183 184struct_newboxloop: struct_newboxloop.o $(KOKKOS_LINK_DEPENDS) 185 @echo "Building" $@ "... " 186 ${LINK_CC} -o $@ $< ${LFLAGS} 187 188test_mgr: test_mgr.o 189 @echo "Building" $@ "... " 190 ${LINK_CC} -o $@ $< ${LFLAGS} 191 192# RDF: Keep these for now 193 194hypre_set_precond: hypre_set_precond.o 195 @echo "Building" $@ "... " 196 ${LINK_CC} -o $@ $@.o ${LFLAGS} 197 198test_ij: hypre_set_precond.o test_ij.o 199 @echo "Building" $@ "... " 200 ${LINK_CC} -o $@ hypre_set_precond.o $@.o ${LFLAGS} 201 202driver_commpkg: driver_commpkg.o 203 @echo "Building" $@ "... " 204 ${LINK_CC} -o $@ $@.o ${LFLAGS} 205 206# C++ 207 208fei: fei.o 209 @echo "Building" $@ "... " 210 ${LINK_CXX} -o $@ $@.o ${LFLAGS} 211 212cxx_ij: cxx_ij.o 213 @echo "Building" $@ "... " 214 ${LINK_CXX} -o $@ $@.o ${LFLAGS} 215cxx_ij.o: cxx_ij.cxx 216cxx_ij.cxx: ij.c 217 cp -fp ij.c cxx_ij.cxx 218 219cxx_sstruct: cxx_sstruct.o 220 @echo "Building" $@ "... " 221 ${LINK_CXX} -o $@ $@.o ${LFLAGS} 222cxx_sstruct.o: cxx_sstruct.cxx 223cxx_sstruct.cxx: sstruct.c 224 cp -fp sstruct.c cxx_sstruct.cxx 225 226cxx_struct: cxx_struct.o 227 @echo "Building" $@ "... " 228 ${LINK_CXX} -o $@ $@.o ${LFLAGS} 229cxx_struct.o: cxx_struct.cxx 230cxx_struct.cxx: struct.c 231 cp -fp struct.c cxx_struct.cxx 232 233# Fortran 234 235f77_ij: f77_ij.o 236 @echo "Building" $@ "... " 237 ${LINK_FC} -o $@ $@.o ${LFLAGS} 238 239f77_ij_mv: f77_ij_mv.o 240 @echo "Building" $@ "... " 241 ${LINK_FC} -o $@ $@.o ${LFLAGS} 242 243f77_struct: f77_struct.o 244 @echo "Building" $@ "... " 245 ${LINK_FC} -o $@ $@.o ${LFLAGS} 246 247# RDF: Keep these for now 248 249struct_for: fstruct_mv.o fstruct_ls.o struct_for.o 250 @echo "Building" $@ "... " 251 ${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS} 252 253ex1_for: fstruct_mv.o fstruct_ls.o ex1_for.o 254 @echo "Building" $@ "... " 255 ${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS} 256 257ex3_for: fstruct_mv.o fstruct_ls.o ex3_for.o 258 @echo "Building" $@ "... " 259 ${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o $@.o ${LFLAGS} 260 261ex5_for: fij_mv.o fparcsr_mv.o fparcsr_ls.o ex5_for.o 262 @echo "Building" $@ "... " 263 ${LINK_CC} -o $@ fij_mv.o fparcsr_mv.o fparcsr_ls.o $@.o ${LFLAGS} 264 265ex6_for: fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o ex6_for.o 266 @echo "Building" $@ "... " 267 ${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS} 268 269ex7_for: fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o ex7_for.o 270 @echo "Building" $@ "... " 271 ${LINK_CC} -o $@ fstruct_mv.o fstruct_ls.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS} 272 273for_maxwell: fparcsr_mv.o fsstruct_mv.o fsstruct_ls.o for_maxwell.o 274 @echo "Building" $@ "... " 275 ${LINK_CC} -o $@ fparcsr_mv.o fsstruct_mv.o fsstruct_ls.o $@.o ${LFLAGS} 276 277fij_mv: fij_mv.f 278 @echo "Building" $@ "... " 279 ${LINK_FC} -c $@ 280 281fparcsr_ls: fparcsr_ls.f 282 @echo "Building" $@ "... " 283 ${LINK_FC} -c $@ 284 285fparcsr_mv: fparcsr_mv.f 286 @echo "Building" $@ "... " 287 ${LINK_FC} -c $@ 288 289fsstruct_ls: fsstruct_ls.f 290 @echo "Building" $@ "... " 291 ${LINK_FC} -c $@ 292 293fsstruct_mv: fsstruct_mv.f 294 @echo "Building" $@ "... " 295 ${LINK_FC} -c $@ 296 297fstruct_ls: fstruct_ls.f 298 @echo "Building" $@ "... " 299 ${LINK_FC} -c $@ 300 301fstruct_mv: fstruct_mv.f 302 @echo "Building" $@ "... " 303 ${LINK_FC} -c $@ 304