Make sure that LDFLAGS are set when running configuration steps

This is necessary for example when specific flags are required to
find a library in a configuration rule, e.g. LDFLAGS=/some/path
This commit is contained in:
Christophe de Dinechin 2017-11-30 12:19:44 +01:00
parent 856fca299e
commit 37f7dc4f9d
2 changed files with 26 additions and 20 deletions

View File

@ -106,28 +106,34 @@ TEST_ENV= LD_LIBRARY_PATH=$(OUTPUT)
# Configuration checks
#------------------------------------------------------------------------------
CFG_UPPER=$(shell echo -n "$(ORIG_TARGET)" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_')
CFG_FLAGS=$(shell grep '// [A-Z]*FLAGS=' "$<" | sed -e 's|// [A-Z]*FLAGS=||g')
CFG_UPPER= $(shell echo -n "$(ORIG_TARGET)" | tr '[:lower:]' '[:upper:]' | tr -c '[:alnum:]' '_')
CFG_LFLAGS= $(LDFLAGS) \
$(shell grep '// [A-Z]*FLAGS=' "$<" | \
sed -e 's|// [A-Z]*FLAGS=||g')
CFG_FLAGS= $(CFG_LFLAGS) \
$(shell $(CAT) $(PKG_CFLAGS) $(PKG_LDFLAGS))
CFG_DEF= echo '\#define'
CFG_TEST= \
$(CFG_FLAGS) "$<" -o "$<".exe > "$<".err 2>&1 && \
"$<".exe > "$<".out && echo 1 || echo 0
CFG_UNDEF0= \
CFG_TEST= "$<" -o "$<".exe > "$<".err 2>&1 && \
[ -x "$<".exe ] && \
"$<".exe > "$<".out && CFG_RC=1 || CFG_RC=0;
CFG_UNDEF0= $$CFG_RC \
| sed -e 's|^\#define \(.*\) 0$$|/* \#undef \1 */|g' > "$@"; \
[ -f "$<".out ] && cat >> "$@" "$<".out; true
CFG_CFLAGS= $(CFLAGS) $(shell $(CAT) $(PKG_CFLAGS) $(PKG_LDFLAGS))
CFG_CXXFLAGS= $(CXXFLAGS) $(shell $(CAT) $(PKG_CFLAGS) $(PKG_LDFLAGS))
CFG_CC_CMD= `$(CC) $(CFG_CFLAGS) $(CFLAGS_CONFIG_$*) $(CFG_TEST)`
CFG_CXX_CMD= `$(CXX) $(CFG_CXXFLAGS) $(CXXFLAGS_CONFIG_$*) $(CFG_TEST)`
CFG_LIB_CMD= `$(CC) $(CFLAGS_CONFIG_$*) -l$* $(CFG_TEST)`
CFG_FN_CMD= `$(CC) $(CFG_CFLAGS) $(CFLAGS_CONFIG_$*) $(CFG_TEST)`
CFG_DEF= echo '\#define'
CC_CONFIG= $(CFG_DEF) HAVE_$(CFG_UPPER)_H $(CFG_CC_CMD) $(CFG_UNDEF0)
CXX_CONFIG= $(CFG_DEF) HAVE_$(CFG_UPPER) $(CFG_CXX_CMD) $(CFG_UNDEF0)
LIB_CONFIG= $(CFG_DEF) HAVE_LIB$(CFG_UPPER) $(CFG_LIB_CMD) $(CFG_UNDEF0)
FN_CONFIG= $(CFG_DEF) HAVE_$(CFG_UPPER) $(CFG_FN_CMD) $(CFG_UNDEF0)
CFG_CFLAGS= $(CFLAGS) $(CFG_FLAGS)
CFG_CXXFLAGS= $(CXXFLAGS) $(CFG_FLAGS)
CFG_CC_CMD= $(CC) $(CFG_CFLAGS) $(CFLAGS_CONFIG_$*) $(CFG_TEST)
CFG_CXX_CMD= $(CXX) $(CFG_CXXFLAGS) $(CXXFLAGS_CONFIG_$*) $(CFG_TEST)
CFG_LIB_CMD= $(CC) $(CFG_LFLAGS) $(CFLAGS_CONFIG_$*) -l$* $(CFG_TEST)
CFG_FN_CMD= $(CC) $(CFG_CFLAGS) $(CFLAGS_CONFIG_$*) $(CFG_TEST)
CC_CONFIG= $(CFG_CC_CMD) $(CFG_DEF) HAVE_$(CFG_UPPER)_H $(CFG_UNDEF0)
CXX_CONFIG= $(CFG_CXX_CMD) $(CFG_DEF) HAVE_$(CFG_UPPER) $(CFG_UNDEF0)
LIB_CONFIG= $(CFG_LIB_CMD) $(CFG_DEF) HAVE_LIB$(CFG_UPPER) $(CFG_UNDEF0)
FN_CONFIG= $(CFG_FN_CMD) $(CFG_DEF) HAVE_$(CFG_UPPER) $(CFG_UNDEF0)
MAKE_CONFIG= sed -e 's|^\#define \([^ ]*\) \(.*\)$$|\1=\2|g' \
-e 's|.*undef.*||g' < "$<" > "$@"

View File

@ -27,7 +27,7 @@ XDEFINES= $(DEFINES) $(DEFINES_$(BUILDENV)) $(DEFINES_$(TARGET)) $(DE
CPPFLAGS+= $(CPPFLAGS_$(BUILDENV)) $(CPPFLAGS_$(TARGET)) $(CPPFLAGS_EXTRA) $(XDEFINES:%=-D%) $(XINCLUDES:%=-I%)
CFLAGS+= $(CPPFLAGS) $(CFLAGS_STD) $(CFLAGS_PKGCONFIG) $(CFLAGS_$(BUILDENV)) $(CFLAGS_$(TARGET)) $(CFLAGS_EXTRA)
CXXFLAGS+= $(CPPFLAGS) $(CXXFLAGS_STD) $(CFLAGS_PKGCONFIG) $(CXXFLAGS_$(BUILDENV)) $(CXXFLAGS_$(TARGET)) $(CFLAGS_EXTRA) $(CXXFLAGS_EXTRA)
LDFLAGS+= $(CFLAGS_STD) $(CXXFLAGS_STD) $(LDFLAGS_PKGCONFIG) $(LDFLAGS_$(BUILDENV)) $(LDFLAGS_$(TARGET)) $(CFLAGS_EXTRA) $(LDFLAGS_EXTRA)
LDFLAGS+= $(LDFLAGS_PKGCONFIG) $(LDFLAGS_$(BUILDENV)) $(LDFLAGS_$(TARGET)) $(CFLAGS_EXTRA) $(LDFLAGS_EXTRA)
ifndef DIR
FULLDIR:= $(abspath .)/
@ -404,7 +404,7 @@ $(OBJDIR)lib%.cfg.ldflags: $(OBJDIR)CFG_HAVE_lib%.h $(PKG_DEPS)
NORM_CONFIG=$(subst <,.lt.,$(subst >,.gt.,$(subst /,.sl.,$(CONFIG))))
ORIG_TARGET=$(subst .lt.,<,$(subst .gt.,>,$(subst .sl.,/,$*)))
CONFIG_DEPS= $(MAKEFILE_DEPS) $(OBJDIR).mkdir \
CONFIG_DEPS= $(PKG_DEPS) \
$(PKGCONFIGS:%=$(OBJDIR)pkg-config.mk) \
$(PKG_LIBS:%=$(OBJDIR)pkg-config.mk)
@ -432,7 +432,7 @@ $(OBJDIR)CFG-C++H_HAVE_%.cpp: $(OBJDIR).mkdir $(CONFIG_DEPS)
# Library
$(OBJDIR)CFG_HAVE_lib%.h: $(OBJDIR)CFG-LIB_HAVE_lib%.c $(PKG_DEPS)
$(PRINT_LIBCONFIG) $(LIB_CONFIG)
$(OBJDIR)CFG-LIB_HAVE_lib%.c: $(OBJDIR).mkdir $(PKG_DEPS)
$(OBJDIR)CFG-LIB_HAVE_lib%.c: $(PKG_DEPS)
$(PRINT_COMMAND) echo 'int main() { return 0; }' > "$@"
.PRECIOUS: $(OBJDIR)CFG-LIB_HAVE_lib%.c