Add results from pkg-config to config.h
This commit is contained in:
parent
6dd6537407
commit
0ae490d5fd
|
@ -132,27 +132,31 @@ MIQ_CFGLFLAGS= $(MIQ_LDFLAGS) \
|
||||||
MIQ_CFGFLAGS= $(MIQ_CFGLFLAGS) \
|
MIQ_CFGFLAGS= $(MIQ_CFGLFLAGS) \
|
||||||
$(shell $(CAT) $(MIQ_PKGCFLAGS) $(MIQ_PKGLDFLAGS))
|
$(shell $(CAT) $(MIQ_PKGCFLAGS) $(MIQ_PKGLDFLAGS))
|
||||||
|
|
||||||
|
MIQ_CFGSET= && MIQ_CFGRC=1 || MIQ_CFGRC=0;
|
||||||
MIQ_CFGTEST= "$<" -o "$<".exe > "$<".err 2>&1 && \
|
MIQ_CFGTEST= "$<" -o "$<".exe > "$<".err 2>&1 && \
|
||||||
[ -x "$<".exe ] && \
|
[ -x "$<".exe ] && \
|
||||||
"$<".exe > "$<".out && MIQ_CFGRC=1 || MIQ_CFGRC=0;
|
"$<".exe > "$<".out \
|
||||||
|
$(MIQ_CFGSET)
|
||||||
MIQ_CFGUNDEF0= $$MIQ_CFGRC \
|
MIQ_CFGUNDEF0= $$MIQ_CFGRC \
|
||||||
| sed -e 's|^\#define \(.*\) 0$$|/* \#undef \1 */|g' > "$@"; \
|
| sed -e 's|^\#define \(.*\) 0$$|/* \#undef \1 */|g' > "$@"; \
|
||||||
[ -f "$<".out ] && cat >> "$@" "$<".out; true
|
[ -f "$<".out ] && cat >> "$@" "$<".out; true
|
||||||
|
|
||||||
MIQ_CFGDEF= echo '\#define'
|
MIQ_CFGDEF= echo '\#define'
|
||||||
|
|
||||||
MIQ_CFGCFLAGS= $(MIQ_CFLAGS) $(MIQ_CFGFLAGS) $(CFLAGS_CONFIG_$*)
|
MIQ_CFGCFLAGS= $(CFLAGS) $(CFLAGS_CONFIG_$*)
|
||||||
MIQ_CFGCXXFLAGS=$(MIQCXXFLAGS) $(MIQ_CFGFLAGS) $(CFLAGS_CONFIG_$*)
|
MIQ_CFGCXXFLAGS=$(CXXFLAGS) $(CFLAGS_CONFIG_$*)
|
||||||
|
|
||||||
MIQ_CFGCC_CMD= $(CC) $(MIQ_CFGCFLAGS) $(MIQ_CFGTEST)
|
MIQ_CFGCC_CMD= $(CC) $(MIQ_CFGCFLAGS) $(MIQ_CFGTEST)
|
||||||
MIQ_CFGCXX_CMD= $(CXX) $(MIQ_CFGCXXFLAGS) $(MIQ_CFGTEST)
|
MIQ_CFGCXX_CMD= $(CXX) $(MIQ_CFGCXXFLAGS) $(MIQ_CFGTEST)
|
||||||
MIQ_CFGLIB_CMD= $(CC) $(MIQ_CFGLFLAGS) -l$* $(MIQ_CFGTEST)
|
MIQ_CFGLIB_CMD= $(CC) $(MIQ_CFGLFLAGS) -l$* $(MIQ_CFGTEST)
|
||||||
MIQ_CFGFN_CMD= $(CC) $(MIQ_CFGCFLAGS) $(CFLAGS_CONFIG_$*) $(MIQ_CFGTEST)
|
MIQ_CFGFN_CMD= $(CC) $(MIQ_CFGCFLAGS) $(CFLAGS_CONFIG_$*) $(MIQ_CFGTEST)
|
||||||
|
MIQ_CFGPK_CMD= pkg-config $* --silence-errors $(MIQ_CFGSET)
|
||||||
|
|
||||||
CC_CONFIG= $(MIQ_CFGCC_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER)_H $(MIQ_CFGUNDEF0)
|
MIQ_CC_CFG= $(MIQ_CFGCC_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER)_H $(MIQ_CFGUNDEF0)
|
||||||
CXX_CONFIG= $(MIQ_CFGCXX_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
MIQ_CXX_CFG= $(MIQ_CFGCXX_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
||||||
LIB_CONFIG= $(MIQ_CFGLIB_CMD) $(MIQ_CFGDEF) HAVE_LIB$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
MIQ_LIB_CFG= $(MIQ_CFGLIB_CMD) $(MIQ_CFGDEF) HAVE_LIB$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
||||||
FN_CONFIG= $(MIQ_CFGFN_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
MIQ_FN_CFG= $(MIQ_CFGFN_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
||||||
|
MIQ_PK_CFG= $(MIQ_CFGPK_CMD) $(MIQ_CFGDEF) HAVE_$(MIQ_CFGUPPER) $(MIQ_CFGUNDEF0)
|
||||||
|
|
||||||
MAKE_CONFIG= sed -e 's|^\#define \([^ ]*\) \(.*\)$$|\1=\2|g' \
|
MIQ_MK_CFG= sed -e 's|^\#define \([^ ]*\) \(.*\)$$|\1=\2|g' \
|
||||||
-e 's|.*undef.*||g' < "$<" > "$@"
|
-e 's|.*undef.*||g' < "$<" > "$@"
|
||||||
|
|
|
@ -65,7 +65,7 @@ NOT_PARALLEL?= .NOTPARALLEL
|
||||||
GIT_REVISION:= $(shell git rev-parse --short HEAD 2> /dev/null || echo "unknown")
|
GIT_REVISION:= $(shell git rev-parse --short HEAD 2> /dev/null || echo "unknown")
|
||||||
|
|
||||||
# Package installation directory
|
# Package installation directory
|
||||||
PACKAGE_DIR=$(PACKAGE_NAME:%=%/)
|
PACKAGE_DIR?=$(PACKAGE_NAME:%=%/)
|
||||||
PACKAGE_LIBS=$(MIQ_PRODLIB)
|
PACKAGE_LIBS=$(MIQ_PRODLIB)
|
||||||
PACKAGE_DLLS=$(MIQ_PRODDLL)
|
PACKAGE_DLLS=$(MIQ_PRODDLL)
|
||||||
|
|
||||||
|
|
21
rules.mk
21
rules.mk
|
@ -436,7 +436,9 @@ $(MIQ_OUTEXE): $(MIQ_TOLINK) $$(MIQ_TOLINK) $(MIQ_MAKEDEPS)
|
||||||
# Package configuration file
|
# Package configuration file
|
||||||
MIQ_PKGCFLAGS= $(PKGCONFIGS:%=$(MIQ_OBJDIR)%.pkg-config.cflags)
|
MIQ_PKGCFLAGS= $(PKGCONFIGS:%=$(MIQ_OBJDIR)%.pkg-config.cflags)
|
||||||
MIQ_PKGLDFLAGS= $(PKGCONFIGS:%=$(MIQ_OBJDIR)%.pkg-config.ldflags)
|
MIQ_PKGLDFLAGS= $(PKGCONFIGS:%=$(MIQ_OBJDIR)%.pkg-config.ldflags)
|
||||||
MIQ_PKGLIBS= $(patsubst %,$(OBJDIR)%.cfg.ldflags,$(filter lib%,$(CONFIG)))
|
MIQ_PKGCONFIGS= $(PKGCONFIGS:%?=%)
|
||||||
|
MIQ_PKGCFG= $(MIQ_PKGONFIGS:%=$(MIQ_OBJDIR)CFG_HAVE_PACKAGE_%.h)
|
||||||
|
MIQ_PKGLIBS= $(patsubst %,$(MIQ_OBJDIR)%.cfg.ldflags,$(filter lib%,$(CONFIG)))
|
||||||
MIQ_PKGDEPS= $(MIQ_MAKEDEPS) $(MIQ_OBJDIR).mkdir
|
MIQ_PKGDEPS= $(MIQ_MAKEDEPS) $(MIQ_OBJDIR).mkdir
|
||||||
|
|
||||||
# Build the package config from cflags, ldflags and libs config
|
# Build the package config from cflags, ldflags and libs config
|
||||||
|
@ -467,7 +469,7 @@ $(MIQ_OBJDIR)lib%.cfg.ldflags: $(MIQ_OBJDIR)CFG_HAVE_lib%.h $(MIQ_PKGDEPS)
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
|
|
||||||
# Normalize header configuration name (turn <foo.h> into .lt.foo.h.gt. and back)
|
# Normalize header configuration name (turn <foo.h> into .lt.foo.h.gt. and back)
|
||||||
MIQ_NORMCONFIG=$(subst <,.lt.,$(subst >,.gt.,$(subst /,.sl.,$(CONFIG))))
|
MIQ_NORMCONFIG=$(subst <,.lt.,$(subst >,.gt.,$(subst /,.sl.,$(CONFIG) $(PKGCONFIGS:%=PACKAGE_%))))
|
||||||
MIQ_ORIGTARGET=$(subst .lt.,<,$(subst .gt.,>,$(subst .sl.,/,$*)))
|
MIQ_ORIGTARGET=$(subst .lt.,<,$(subst .gt.,>,$(subst .sl.,/,$*)))
|
||||||
MIQ_CONFIGDEPS= $(MIQ_PKGDEPS) \
|
MIQ_CONFIGDEPS= $(MIQ_PKGDEPS) \
|
||||||
$(PKGCONFIGS:%=$(MIQ_OBJDIR)pkg-config.mk) \
|
$(PKGCONFIGS:%=$(MIQ_OBJDIR)pkg-config.mk) \
|
||||||
|
@ -479,39 +481,44 @@ config.h: $(MIQ_NORMCONFIG:%=$(MIQ_OBJDIR)CFG_HAVE_%.h)
|
||||||
|
|
||||||
# Build makefile configuration files from generated .h files
|
# Build makefile configuration files from generated .h files
|
||||||
$(MIQ_OBJDIR)CFG_HAVE_%.mk: $(MIQ_OBJDIR)CFG_HAVE_%.h $(MIQ_MAKEDEPS)
|
$(MIQ_OBJDIR)CFG_HAVE_%.mk: $(MIQ_OBJDIR)CFG_HAVE_%.h $(MIQ_MAKEDEPS)
|
||||||
$(PRINT_COMMAND) $(MAKE_CONFIG)
|
$(PRINT_COMMAND) $(MIQ_MK_CFG)
|
||||||
-include $(MIQ_NORMCONFIG:%=$(MIQ_OBJDIR)CFG_HAVE_%.mk)
|
-include $(MIQ_NORMCONFIG:%=$(MIQ_OBJDIR)CFG_HAVE_%.mk)
|
||||||
|
|
||||||
# C standard headers, e.g. HAVE_<stdio.h>
|
# C standard headers, e.g. HAVE_<stdio.h>
|
||||||
$(MIQ_OBJDIR)CFG_HAVE_.lt.%.h.gt..h: $(MIQ_OBJDIR)CFGCH%.c $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFG_HAVE_.lt.%.h.gt..h: $(MIQ_OBJDIR)CFGCH%.c $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_CONFIG) $(CC_CONFIG)
|
$(PRINT_CONFIG) $(MIQ_CC_CFG)
|
||||||
$(MIQ_OBJDIR)CFGCH%.c: $(MIQ_OBJDIR).mkdir $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFGCH%.c: $(MIQ_OBJDIR).mkdir $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_COMMAND) (echo '#include' "<$(MIQ_ORIGTARGET).h>" && echo 'int main() { return 0; }') > "$@"
|
$(PRINT_COMMAND) (echo '#include' "<$(MIQ_ORIGTARGET).h>" && echo 'int main() { return 0; }') > "$@"
|
||||||
.PRECIOUS: $(MIQ_OBJDIR)CFGCH%.c
|
.PRECIOUS: $(MIQ_OBJDIR)CFGCH%.c
|
||||||
|
|
||||||
# C++ Standard headers, e.g. HAVE_<iostream>
|
# C++ Standard headers, e.g. HAVE_<iostream>
|
||||||
$(MIQ_OBJDIR)CFG_HAVE_.lt.%.gt..h: $(MIQ_OBJDIR)CFGCPPH%.cpp $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFG_HAVE_.lt.%.gt..h: $(MIQ_OBJDIR)CFGCPPH%.cpp $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_CONFIG) $(CXX_CONFIG)
|
$(PRINT_CONFIG) $(MIQ_CXX_CFG)
|
||||||
$(MIQ_OBJDIR)CFGCPPH%.cpp: $(MIQ_OBJDIR).mkdir $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFGCPPH%.cpp: $(MIQ_OBJDIR).mkdir $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_COMMAND) (echo '#include' "<$(MIQ_ORIGTARGET)>" && echo 'int main() { return 0; }') > "$@"
|
$(PRINT_COMMAND) (echo '#include' "<$(MIQ_ORIGTARGET)>" && echo 'int main() { return 0; }') > "$@"
|
||||||
.PRECIOUS: $(MIQ_OBJDIR)CFGCPPH%.cpp
|
.PRECIOUS: $(MIQ_OBJDIR)CFGCPPH%.cpp
|
||||||
|
|
||||||
# Library, e.g. libm
|
# Library, e.g. libm
|
||||||
$(MIQ_OBJDIR)CFG_HAVE_lib%.h: $(MIQ_OBJDIR)CFGLIB%.c $(MIQ_PKGDEPS)
|
$(MIQ_OBJDIR)CFG_HAVE_lib%.h: $(MIQ_OBJDIR)CFGLIB%.c $(MIQ_PKGDEPS)
|
||||||
$(PRINT_LIBCONFIG) $(LIB_CONFIG)
|
$(PRINT_CONFIG) $(MIQ_LIB_CFG)
|
||||||
$(MIQ_OBJDIR)CFGLIB%.c: $(MIQ_PKGDEPS)
|
$(MIQ_OBJDIR)CFGLIB%.c: $(MIQ_PKGDEPS)
|
||||||
$(PRINT_COMMAND) echo 'int main() { return 0; }' > "$@"
|
$(PRINT_COMMAND) echo 'int main() { return 0; }' > "$@"
|
||||||
.PRECIOUS: $(MIQ_OBJDIR)CFGLIB%.c
|
.PRECIOUS: $(MIQ_OBJDIR)CFGLIB%.c
|
||||||
|
|
||||||
# Check if a function is present (code to test in config/check_foo.c)
|
# Check if a function is present (code to test in config/check_foo.c)
|
||||||
$(MIQ_OBJDIR)CFG_HAVE_%.h: $(MIQ_OBJDIR)CFGFN%.c $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFG_HAVE_%.h: $(MIQ_OBJDIR)CFGFN%.c $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_CONFIG) $(FN_CONFIG)
|
$(PRINT_CONFIG) $(MIQ_FN_CFG)
|
||||||
$(MIQ_OBJDIR)CFGFN%.c: $(CONFIG_SOURCES)check_%.c $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFGFN%.c: $(CONFIG_SOURCES)check_%.c $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_COMMAND) cp $< $@
|
$(PRINT_COMMAND) cp $< $@
|
||||||
$(MIQ_OBJDIR)CFGFN%.c: config/check_%.c $(MIQ_CONFIGDEPS)
|
$(MIQ_OBJDIR)CFGFN%.c: config/check_%.c $(MIQ_CONFIGDEPS)
|
||||||
$(PRINT_COMMAND) cp $< $@
|
$(PRINT_COMMAND) cp $< $@
|
||||||
.PRECIOUS: $(MIQ_OBJDIR)CFGFN%.c
|
.PRECIOUS: $(MIQ_OBJDIR)CFGFN%.c
|
||||||
|
|
||||||
|
# Packages
|
||||||
|
$(MIQ_OBJDIR)CFG_HAVE_PACKAGE_%?.h: $(MIQ_CONFIGDEPS)
|
||||||
|
$(PRINT_CONFIG) $(MIQ_PK_CFG)
|
||||||
|
$(MIQ_OBJDIR)CFG_HAVE_PACKAGE_%.h: $(MIQ_CONFIGDEPS)
|
||||||
|
$(PRINT_CONFIG) $(MIQ_PK_CFG)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue