diff options
| -rw-r--r-- | Makefile | 6 | ||||
| -rw-r--r-- | config.mak.uname | 10 | ||||
| -rw-r--r-- | configure.ac | 8 | ||||
| -rw-r--r-- | git-compat-util.h | 8 | 
4 files changed, 30 insertions, 2 deletions
@@ -30,6 +30,8 @@ all::  # Define LIBPCREDIR=/foo/bar if your libpcre header and library files are in  # /foo/bar/include and /foo/bar/lib directories.  # +# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header. +#  # Define NO_CURL if you do not have libcurl installed.  git-http-fetch and  # git-http-push are not built, and you cannot use http:// and https://  # transports (neither smart nor dumb). @@ -1099,6 +1101,10 @@ ifdef USE_LIBPCRE  	EXTLIBS += -lpcre  endif +ifdef HAVE_ALLOCA_H +	BASIC_CFLAGS += -DHAVE_ALLOCA_H +endif +  ifdef NO_CURL  	BASIC_CFLAGS += -DNO_CURL  	REMOTE_CURL_PRIMARY = diff --git a/config.mak.uname b/config.mak.uname index 7d31fad241..71602ee9a1 100644 --- a/config.mak.uname +++ b/config.mak.uname @@ -28,6 +28,7 @@ ifeq ($(uname_S),OSF1)  	NO_NSEC = YesPlease  endif  ifeq ($(uname_S),Linux) +	HAVE_ALLOCA_H = YesPlease  	NO_STRLCPY = YesPlease  	NO_MKSTEMPS = YesPlease  	HAVE_PATHS_H = YesPlease @@ -35,6 +36,7 @@ ifeq ($(uname_S),Linux)  	HAVE_DEV_TTY = YesPlease  endif  ifeq ($(uname_S),GNU/kFreeBSD) +	HAVE_ALLOCA_H = YesPlease  	NO_STRLCPY = YesPlease  	NO_MKSTEMPS = YesPlease  	HAVE_PATHS_H = YesPlease @@ -103,6 +105,7 @@ ifeq ($(uname_S),SunOS)  	NEEDS_NSL = YesPlease  	SHELL_PATH = /bin/bash  	SANE_TOOL_PATH = /usr/xpg6/bin:/usr/xpg4/bin +	HAVE_ALLOCA_H = YesPlease  	NO_STRCASESTR = YesPlease  	NO_MEMMEM = YesPlease  	NO_MKDTEMP = YesPlease @@ -146,7 +149,7 @@ ifeq ($(uname_S),SunOS)  	endif  	INSTALL = /usr/ucb/install  	TAR = gtar -	BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__ -DHAVE_ALLOCA_H +	BASIC_CFLAGS += -D__EXTENSIONS__ -D__sun__  endif  ifeq ($(uname_O),Cygwin)  	ifeq ($(shell expr "$(uname_R)" : '1\.[1-6]\.'),4) @@ -166,6 +169,7 @@ ifeq ($(uname_O),Cygwin)  	else  		NO_REGEX = UnfortunatelyYes  	endif +	HAVE_ALLOCA_H = YesPlease  	NEEDS_LIBICONV = YesPlease  	NO_FAST_WORKING_DIRECTORY = UnfortunatelyYes  	NO_ST_BLOCKS_IN_STRUCT_STAT = YesPlease @@ -239,6 +243,7 @@ ifeq ($(uname_S),AIX)  endif  ifeq ($(uname_S),GNU)  	# GNU/Hurd +	HAVE_ALLOCA_H = YesPlease  	NO_STRLCPY = YesPlease  	NO_MKSTEMPS = YesPlease  	HAVE_PATHS_H = YesPlease @@ -316,6 +321,7 @@ endif  ifeq ($(uname_S),Windows)  	GIT_VERSION := $(GIT_VERSION).MSVC  	pathsep = ; +	HAVE_ALLOCA_H = YesPlease  	NO_PREAD = YesPlease  	NEEDS_CRYPTO_WITH_SSL = YesPlease  	NO_LIBGEN_H = YesPlease @@ -363,7 +369,7 @@ ifeq ($(uname_S),Windows)  	COMPAT_OBJS = compat/msvc.o compat/winansi.o \  		compat/win32/pthread.o compat/win32/syslog.o \  		compat/win32/dirent.o -	COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -DHAVE_ALLOCA_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\" +	COMPAT_CFLAGS = -D__USE_MINGW_ACCESS -DNOGDI -DHAVE_STRING_H -Icompat -Icompat/regex -Icompat/win32 -DSTRIP_EXTENSION=\".exe\"  	BASIC_LDFLAGS = -IGNORE:4217 -IGNORE:4049 -NOLOGO -SUBSYSTEM:CONSOLE -NODEFAULTLIB:MSVCRT.lib  	EXTLIBS = user32.lib advapi32.lib shell32.lib wininet.lib ws2_32.lib  	PTHREAD_LIBS = diff --git a/configure.ac b/configure.ac index 2f433939dc..0eae70430c 100644 --- a/configure.ac +++ b/configure.ac @@ -272,6 +272,14 @@ AS_HELP_STRING([],           [ARG can be also prefix for libpcre library and hea  	GIT_CONF_SUBST([LIBPCREDIR])      fi)  # +# Define HAVE_ALLOCA_H if you have working alloca(3) defined in that header. +AC_FUNC_ALLOCA +case $ac_cv_working_alloca_h in +    yes)    HAVE_ALLOCA_H=YesPlease;; +    *)      HAVE_ALLOCA_H='';; +esac +GIT_CONF_SUBST([HAVE_ALLOCA_H]) +#  # Define NO_CURL if you do not have curl installed.  git-http-pull and  # git-http-push are not built, and you cannot use http:// and https://  # transports. diff --git a/git-compat-util.h b/git-compat-util.h index cbd86c37f5..63b2b3bb47 100644 --- a/git-compat-util.h +++ b/git-compat-util.h @@ -526,6 +526,14 @@ extern void release_pack_memory(size_t);  typedef void (*try_to_free_t)(size_t);  extern try_to_free_t set_try_to_free_routine(try_to_free_t); +#ifdef HAVE_ALLOCA_H +# include <alloca.h> +# define xalloca(size)      (alloca(size)) +# define xalloca_free(p)    do {} while (0) +#else +# define xalloca(size)      (xmalloc(size)) +# define xalloca_free(p)    (free(p)) +#endif  extern char *xstrdup(const char *str);  extern void *xmalloc(size_t size);  extern void *xmallocz(size_t size);  | 
