better depcheck

git-svn-id: svn://svn.icculus.org/netradiant/trunk@77 61c419a2-8eb2-4b30-bcec-8cead039b335
This commit is contained in:
rpolzer 2008-09-17 07:29:59 +00:00
parent 0ffd2ffcfe
commit f79a93f095

View File

@ -15,23 +15,26 @@ RADIANT_ABOUTMSG ?= Custom build
CC ?= gcc CC ?= gcc
CXX ?= g++ CXX ?= g++
LDD ?= ldd # nothing on Win32
RANLIB ?= ranlib RANLIB ?= ranlib
AR ?= ar AR ?= ar
LDD ?= ldd # nothing on Win32
PKGCONFIG ?= pkg-config PKGCONFIG ?= pkg-config
PKG_CONFIG_PATH ?= PKG_CONFIG_PATH ?=
FIND ?= find SH ?= $(SHELL)
MKDIR ?= mkdir -p
CP ?= cp
CAT ?= cat
SH ?= sh
ECHO ?= echo ECHO ?= echo
ECHO_NOLF ?= echo -n ECHO_NOLF ?= echo -n
DIFF ?= diff CAT ?= cat
MKDIR ?= mkdir -p
CP ?= cp
CP_R ?= $(CP) -r CP_R ?= $(CP) -r
RM ?= rm
RM_R ?= $(RM) -r RM_R ?= $(RM) -r
TEE_STDERR ?= | tee /dev/stderr TEE_STDERR ?= | tee /dev/stderr
FIND ?= find
DIFF ?= diff
STDOUT_TO_DEVNULL ?= >/dev/null STDOUT_TO_DEVNULL ?= >/dev/null
STDERR_TO_DEVNULL ?= 2>/dev/null STDERR_TO_DEVNULL ?= 2>/dev/null
STDERR_TO_STDOUT ?= 2>&1 STDERR_TO_STDOUT ?= 2>&1
@ -144,45 +147,59 @@ dependencies-check:
else else
dependencies-check: dependencies-check:
@$(ECHO) @$(ECHO)
@$(ECHO) checking that the system tools exist @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \
$(FIND) --help $(TO_DEVNULL); [ $$? != 127 ] checkbinary() \
$(MKDIR) --help $(TO_DEVNULL); [ $$? != 127 ] { \
$(CP) --help $(TO_DEVNULL); [ $$? != 127 ] $(ECHO_NOLF) "Checking for $$2 ($$1)... "; \
$(CAT) --help $(TO_DEVNULL); [ $$? != 127 ] $$2 --help $(TO_DEVNULL); \
$(SH) --help $(TO_DEVNULL); [ $$? != 127 ] if [ $$? != 127 ]; then \
$(ECHO) --help $(TO_DEVNULL); [ $$? != 127 ] $(ECHO) "found."; \
$(ECHO_NOLF) --help $(TO_DEVNULL); [ $$? != 127 ] else \
$(DIFF) --help $(TO_DEVNULL); [ $$? != 127 ] $(ECHO) "not found, please install it or set PATH right!"; \
$(CP_R) --help $(TO_DEVNULL); [ $$? != 127 ] $(ECHO) "To see the failed commands, set DEPENDENCIES_CHECK=verbose"; \
$(RM_R) --help $(TO_DEVNULL); [ $$? != 127 ] $(ECHO) "To proceed anyway, set DEPENDENCIES_CHECK=off"; \
$(ECHO) 42 $(TEE_STDERR) $(TO_DEVNULL); [ $$? != 127 ] exit 1; \
fi; \
}; \
$(ECHO) checking that the build tools exist; \
checkbinary "bash (or another shell)" "$(SH)"; \
checkbinary coreutils "$(ECHO)"; \
checkbinary coreutils "$(ECHO_NOLF)"; \
checkbinary coreutils "$(CAT)"; \
checkbinary coreutils "$(MKDIR)"; \
checkbinary coreutils "$(CP)"; \
checkbinary coreutils "$(CP_R)"; \
checkbinary coreutils "$(RM)"; \
checkbinary coreutils "$(RM_R)"; \
checkbinary coreutils "$(ECHO) test $(TEE_STDERR)"; \
checkbinary findutils "$(FIND)"; \
checkbinary diff "$(DIFF)"; \
checkbinary gcc "$(CC)"; \
checkbinary g++ "$(CXX)"; \
checkbinary binutils "$(RANLIB)"; \
checkbinary binutils "$(AR)"; \
[ "$(OS)" != "Win32" ] && checkbinary libc6 "$(LDD)"; \
$(ECHO) All required tools have been found!
@$(ECHO) @$(ECHO)
@$(ECHO) checking that the build tools exist
$(CC) --help $(TO_DEVNULL); [ $$? != 127 ]
$(CXX) --help $(TO_DEVNULL); [ $$? != 127 ]
[ -n "$(LDD)" ] && $(LDD) --help $(TO_DEVNULL); [ $$? != 127 ]
$(RANLIB) --help $(TO_DEVNULL); [ $$? != 127 ]
$(AR) --help $(TO_DEVNULL); [ $$? != 127 ]
@$(ECHO)
@$(ECHO) checking that the dependencies exist
@if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \ @if [ x"$(DEPENDENCIES_CHECK)" = x"verbose" ]; then set -x; fi; \
checkheader() \ checkheader() \
{ \ { \
$(ECHO_NOLF) "Checking for $$1... "; \ $(ECHO_NOLF) "Checking for $$2 ($$1)... "; \
if \ if \
$(CXX) conftest.cpp $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS) $(CPPFLAGS_COMMON) $$4 -DCONFTEST_HEADER="<$$2>" -DCONFTEST_SYMBOL="$$3" $(TARGET_ARCH) $(LDFLAGS) -c -o conftest.o $(TO_DEVNULL) && \ $(CXX) conftest.cpp $(CFLAGS) $(CXXFLAGS) $(CFLAGS_COMMON) $(CXXFLAGS_COMMON) $(CPPFLAGS) $(CPPFLAGS_COMMON) $$4 -DCONFTEST_HEADER="<$$2>" -DCONFTEST_SYMBOL="$$3" $(TARGET_ARCH) $(LDFLAGS) -c -o conftest.o $(TO_DEVNULL) && \
$(CXX) conftest.o $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest $(TO_DEVNULL); \ $(CXX) conftest.o $(LDFLAGS_COMMON) $$5 $(LIBS_COMMON) $(LIBS) -o conftest $(TO_DEVNULL); \
then \ then \
$(RM) conftest conftest.o; \ $(RM) conftest conftest.o conftest.d; \
$(ECHO) "found."; \ $(ECHO) "found."; \
else \ else \
$(RM) conftest conftest.o; \ $(RM) conftest conftest.o conftest.d; \
$(ECHO) "not found, please install it or set PKG_CONFIG_PATH right!"; \ $(ECHO) "not found, please install it or set PKG_CONFIG_PATH right!"; \
$(ECHO) "To see the failed commands, set DEPENDENCIES_CHECK=verbose"; \ $(ECHO) "To see the failed commands, set DEPENDENCIES_CHECK=verbose"; \
$(ECHO) "To proceed anyway, set DEPENDENCIES_CHECK=off"; \ $(ECHO) "To proceed anyway, set DEPENDENCIES_CHECK=off"; \
exit 1; \ exit 1; \
fi; \ fi; \
}; \ }; \
$(ECHO) checking that the dependencies exist; \
checkheader libglib2.0-dev glib/gutils.h g_path_is_absolute "$(CPPFLAGS_GLIB)" "$(LIBS_GLIB)"; \ checkheader libglib2.0-dev glib/gutils.h g_path_is_absolute "$(CPPFLAGS_GLIB)" "$(LIBS_GLIB)"; \
checkheader libxml2-dev libxml/xpath.h xmlXPathInit "$(CPPFLAGS_XML)" "$(LIBS_XML)"; \ checkheader libxml2-dev libxml/xpath.h xmlXPathInit "$(CPPFLAGS_XML)" "$(LIBS_XML)"; \
checkheader libpng12-dev png.h png_create_read_struct "$(CPPFLAGS_PNG)" "$(LIBS_PNG)"; \ checkheader libpng12-dev png.h png_create_read_struct "$(CPPFLAGS_PNG)" "$(LIBS_PNG)"; \
@ -192,6 +209,7 @@ dependencies-check:
[ "$(OS)" != "Win32" ] && checkheader libc6-dev dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \ [ "$(OS)" != "Win32" ] && checkheader libc6-dev dlfcn.h dlopen "$(CPPFLAGS_DL)" "$(LIBS_DL)"; \
checkheader zlib1g-dev zlib.h zlibVersion "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \ checkheader zlib1g-dev zlib.h zlibVersion "$(CPPFLAGS_ZLIB)" "$(LIBS_ZLIB)"; \
$(ECHO) All required libraries have been found! $(ECHO) All required libraries have been found!
@$(ECHO)
endif endif
.PHONY: binaries .PHONY: binaries