xref: /honee/Makefile (revision ea10196cf2e94f62e536128a7e81e92b8513ac15)
1*ea10196cSJeremy L Thompson# Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at
2*ea10196cSJeremy L Thompson# the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights
3*ea10196cSJeremy L Thompson# reserved. See files LICENSE and NOTICE for details.
4*ea10196cSJeremy L Thompson#
5*ea10196cSJeremy L Thompson# This file is part of CEED, a collection of benchmarks, miniapps, software
6*ea10196cSJeremy L Thompson# libraries and APIs for efficient high-order finite element and spectral
7*ea10196cSJeremy L Thompson# element discretizations for exascale applications. For more information and
8*ea10196cSJeremy L Thompson# source code availability see http://github.com/ceed.
9*ea10196cSJeremy L Thompson#
10*ea10196cSJeremy L Thompson# The CEED research is supported by the Exascale Computing Project (17-SC-20-SC)
11*ea10196cSJeremy L Thompson# a collaborative effort of two U.S. Department of Energy organizations (Office
12*ea10196cSJeremy L Thompson# of Science and the National Nuclear Security Administration) responsible for
13*ea10196cSJeremy L Thompson# the planning and preparation of a capable exascale ecosystem, including
14*ea10196cSJeremy L Thompson# software, applications, hardware, advanced system engineering and early
15*ea10196cSJeremy L Thompson# testbed platforms, in support of the nation's exascale computing imperative.
16*ea10196cSJeremy L Thompson
17*ea10196cSJeremy L ThompsonPETSc.pc := $(PETSC_DIR)/$(PETSC_ARCH)/lib/pkgconfig/PETSc.pc
18*ea10196cSJeremy L ThompsonCEED_DIR ?= ../..
19*ea10196cSJeremy L Thompsonceed.pc := $(CEED_DIR)/lib/pkgconfig/ceed.pc
20*ea10196cSJeremy L Thompson
21*ea10196cSJeremy L ThompsonCC = $(call pkgconf, --variable=ccompiler $(PETSc.pc) $(ceed.pc))
22*ea10196cSJeremy L ThompsonCFLAGS = -std=c99 $(call pkgconf, --variable=cflags_extra $(PETSc.pc)) $(call pkgconf, --cflags-only-other $(PETSc.pc)) $(OPT) -Wno-unused-variable
23*ea10196cSJeremy L ThompsonCPPFLAGS = $(call pkgconf, --cflags-only-I $(PETSc.pc) $(ceed.pc))
24*ea10196cSJeremy L ThompsonLDFLAGS = $(call pkgconf, --libs-only-L --libs-only-other $(PETSc.pc) $(ceed.pc))
25*ea10196cSJeremy L ThompsonLDFLAGS += $(patsubst -L%, $(call pkgconf, --variable=ldflag_rpath $(PETSc.pc))%, $(call pkgconf, --libs-only-L $(PETSc.pc) $(ceed.pc)))
26*ea10196cSJeremy L ThompsonLDLIBS = $(call pkgconf, --libs-only-l $(PETSc.pc) $(ceed.pc)) -lm
27*ea10196cSJeremy L Thompson
28*ea10196cSJeremy L Thompsonnavierstokes.c := $(wildcard navierstokes*.c)
29*ea10196cSJeremy L Thompsonnavierstokes := $(navierstokes.c:%.c=%)
30*ea10196cSJeremy L Thompson
31*ea10196cSJeremy L Thompsonall: $(navierstokes)
32*ea10196cSJeremy L Thompson$(navierstokes): | $(PETSc.pc) $(ceed.pc)
33*ea10196cSJeremy L Thompson
34*ea10196cSJeremy L Thompson# Rules for building the example
35*ea10196cSJeremy L Thompson%: %.c
36*ea10196cSJeremy L Thompson	$(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(abspath $<) -o $@ $(LDLIBS)
37*ea10196cSJeremy L Thompson
38*ea10196cSJeremy L Thompsonprint: $(PETSc.pc) $(ceed.pc)
39*ea10196cSJeremy L Thompson	$(info CC      : $(CC))
40*ea10196cSJeremy L Thompson	$(info CFLAGS  : $(CFLAGS))
41*ea10196cSJeremy L Thompson	$(info CPPFLAGS: $(CPPFLAGS))
42*ea10196cSJeremy L Thompson	$(info LDFLAGS : $(LDFLAGS))
43*ea10196cSJeremy L Thompson	$(info LDLIBS  : $(LDLIBS))
44*ea10196cSJeremy L Thompson	$(info OPT     : $(OPT))
45*ea10196cSJeremy L Thompson	@true
46*ea10196cSJeremy L Thompson
47*ea10196cSJeremy L Thompsonclean:
48*ea10196cSJeremy L Thompson	$(RM) $(navierstokes) *.vtr *.vts *.vtu *.bin*
49*ea10196cSJeremy L Thompson
50*ea10196cSJeremy L Thompson$(PETSc.pc):
51*ea10196cSJeremy L Thompson	$(if $(wildcard $@),,$(error \
52*ea10196cSJeremy L Thompson	  PETSc config not found. Please set PETSC_DIR and PETSC_ARCH))
53*ea10196cSJeremy L Thompson
54*ea10196cSJeremy L Thompson.PHONY: all print clean
55*ea10196cSJeremy L Thompson
56*ea10196cSJeremy L Thompsonpkgconf = $(shell pkg-config $1 | sed -e 's/^"//g' -e 's/"$$//g')
57