@@ -36,8 +36,12 @@ SED ?= sed
3636# ASAN must be left empty if you don't want to use it
3737ASAN ?=
3838
39- # Allow users to customize LDFLAGS (libceed appends directly to this variable)
40- override LDFLAGS := $(LDFLAGS )
39+ # These are the values automatically detected here in the makefile. They are
40+ # augmented with LDFLAGS and LDLIBS from the environment/passed by command line,
41+ # if any. If the user sets CEED_LDFLAGS or CEED_LDLIBS, they are used *instead
42+ # of* what we populate here (thus that's advanced usage and not recommended).
43+ CEED_LDFLAGS ?=
44+ CEED_LDLIBS ?=
4145
4246UNDERSCORE ?= 1
4347
@@ -138,14 +142,14 @@ FFLAGS ?= $(OPT) $(FFLAGS.$(FC_VENDOR))
138142ifeq ($(COVERAGE ) , 1)
139143 CFLAGS += --coverage
140144 CXXFLAGS += --coverage
141- override LDFLAGS += --coverage
145+ CEED_LDFLAGS += --coverage
142146endif
143147
144148CFLAGS += $(if $(ASAN ) ,$(AFLAGS ) )
145149FFLAGS += $(if $(ASAN ) ,$(AFLAGS ) )
146- override LDFLAGS += $(if $(ASAN ) ,$(AFLAGS ) )
150+ CEED_LDFLAGS += $(if $(ASAN ) ,$(AFLAGS ) )
147151CPPFLAGS += -I./include
148- LDLIBS = -lm
152+ CEED_LDLIBS = -lm
149153OBJDIR := build
150154LIBDIR := lib
151155
@@ -268,8 +272,8 @@ info:
268272 $(info FFLAGS = $(value FFLAGS) )
269273 $(info NVCCFLAGS = $(value NVCCFLAGS) )
270274 $(info HIPCCFLAGS = $(value HIPCCFLAGS) )
271- $(info LDFLAGS = $(value LDFLAGS ) )
272- $(info LDLIBS = $(LDLIBS ) )
275+ $(info CEED_LDFLAGS = $(value CEED_LDFLAGS ) )
276+ $(info CEED_LDLIBS = $(value CEED_LDLIBS ) )
273277 $(info AR = $(AR ) )
274278 $(info ARFLAGS = $(ARFLAGS ) )
275279 $(info OPT = $(OPT ) )
@@ -302,7 +306,7 @@ info-backends-all:
302306 $(info make: 'lib' with backends: $(filter-out $(TEST_BACKENDS ) ,$(BACKENDS ) ) )
303307 @true
304308
305- $(libceed.so ) : override LDFLAGS += $(if $(DARWIN ) , -install_name @rpath/$(notdir $(libceed.so ) ) )
309+ $(libceed.so ) : CEED_LDFLAGS += $(if $(DARWIN ) , -install_name @rpath/$(notdir $(libceed.so ) ) )
306310
307311# Standard Backends
308312libceed.c += $(ref.c )
@@ -454,18 +458,18 @@ export BACKENDS
454458
455459_pkg_ldflags = $(filter -L% ,$(PKG_LIBS ) )
456460_pkg_ldlibs = $(filter-out -L% ,$(PKG_LIBS ) )
457- $(libceeds ) : override LDFLAGS += $(_pkg_ldflags ) $(_pkg_ldflags:-L%=-Wl,-rpath,% ) $(PKG_STUBS_LIBS )
458- $(libceeds ) : LDLIBS += $(_pkg_ldlibs )
461+ $(libceeds ) : CEED_LDFLAGS += $(_pkg_ldflags ) $(_pkg_ldflags:-L%=-Wl,-rpath,% ) $(PKG_STUBS_LIBS )
462+ $(libceeds ) : CEED_LDLIBS += $(_pkg_ldlibs )
459463ifeq ($(STATIC ) ,1)
460- $(examples ) $(tests ) : override LDFLAGS += $(_pkg_ldflags ) $(_pkg_ldflags:-L%=-Wl,-rpath,% ) $(PKG_STUBS_LIBS )
461- $(examples ) $(tests ) : LDLIBS += $(_pkg_ldlibs )
464+ $(examples ) $(tests ) : CEED_LDFLAGS += $(_pkg_ldflags ) $(_pkg_ldflags:-L%=-Wl,-rpath,% ) $(PKG_STUBS_LIBS )
465+ $(examples ) $(tests ) : CEED_LDLIBS += $(_pkg_ldlibs )
462466endif
463467
464468pkgconfig-libs-private = $(PKG_LIBS )
465469ifeq ($(LIBCEED_CONTAINS_CXX ) ,1)
466470 $(libceeds ) : LINK = $(CXX )
467471 ifeq ($(STATIC),1)
468- $(examples ) $(tests ) : LDLIBS += $(LIBCXX )
472+ $(examples ) $(tests ) : CEED_LDLIBS += $(LIBCXX )
469473 pkgconfig-libs-private += $(LIBCXX )
470474 endif
471475endif
@@ -478,7 +482,7 @@ libceed.o = $(libceed.c:%.c=$(OBJDIR)/%.o) $(libceed.cpp:%.cpp=$(OBJDIR)/%.o) $(
478482$(filter % fortran.o,$(libceed.o ) ) : CPPFLAGS += $(if $(filter 1,$(UNDERSCORE ) ) ,-DUNDERSCORE)
479483$(libceed.o ) : | info-backends
480484$(libceed.so ) : $(call weak_last,$(libceed.o ) ) | $$(@D ) /.DIR
481- $(call quiet,LINK) $(LDFLAGS ) -shared -o $@ $^ $(LDLIBS )
485+ $(call quiet,LINK) $(LDFLAGS ) $( CEED_LDFLAGS ) -shared -o $@ $^ $( CEED_LDLIBS ) $(LDLIBS )
482486
483487$(libceed.a ) : $(call weak_last,$(libceed.o ) ) | $$(@D ) /.DIR
484488 $(call quiet,AR) $(ARFLAGS ) $@ $^
@@ -496,16 +500,16 @@ $(OBJDIR)/%.o : $(CURDIR)/%.hip.cpp | $$(@D)/.DIR
496500 $(call quiet,HIPCC) $(HIPCCFLAGS ) -c -o $@ $(abspath $< )
497501
498502$(OBJDIR ) /% : tests/% .c | $$(@D ) /.DIR
499- $(call quiet,LINK.c) $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(LDLIBS )
503+ $(call quiet,LINK.c) $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(CEED_LDLIBS ) $( LDLIBS )
500504
501505$(OBJDIR ) /% : tests/% .f90 | $$(@D ) /.DIR
502- $(call quiet,LINK.F) -DSOURCE_DIR=' "$(abspath $(<D))/"' $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(LDLIBS )
506+ $(call quiet,LINK.F) -DSOURCE_DIR=' "$(abspath $(<D))/"' $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(CEED_LDLIBS ) $( LDLIBS )
503507
504508$(OBJDIR ) /% : examples/ceed/% .c | $$(@D ) /.DIR
505- $(call quiet,LINK.c) $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(LDLIBS )
509+ $(call quiet,LINK.c) $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(CEED_LDLIBS ) $( LDLIBS )
506510
507511$(OBJDIR ) /% : examples/ceed/% .f | $$(@D ) /.DIR
508- $(call quiet,LINK.F) -DSOURCE_DIR=' "$(abspath $(<D))/"' $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(LDLIBS )
512+ $(call quiet,LINK.F) -DSOURCE_DIR=' "$(abspath $(<D))/"' $(CEED_LDFLAGS ) -o $@ $(abspath $< ) $(CEED_LIBS ) $(CEED_LDLIBS ) $( LDLIBS )
509513
510514$(OBJDIR ) /mfem-% : examples/mfem/% .cpp $(libceed ) | $$(@D ) /.DIR
511515 +$(MAKE ) -C examples/mfem CEED_DIR=` pwd` \
0 commit comments