From 76c1de74e9dbdeef52629632de91a50ed6e20dbe Mon Sep 17 00:00:00 2001 From: Andre Noll Date: Tue, 23 Dec 2008 17:26:52 +0100 Subject: [PATCH] Make it compile on FreeBSD and NetBSD. off_t on BSD is 64 bit even on 32bit machines, so there are no special tricks needed to get large file support. In fact, getconf has no options for large file support and struct stat64 and lstat64() do not exist on BSD systems. This caused the compilation to fail on those systems. Fix this problem by checking for BSD via uname -s in the Makefile. If uname indicates we're on BSD, then do not use getconf and #define stat64 and lstat64() to stat and lstat() respectively. --- Makefile | 18 +++++++++++++----- gcc-compat.h | 5 +++++ 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 0cce3b9..a4293c7 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,7 @@ objects := adu.o string.o cmdline.o fd.o select.o create.o interactive.o select.cmdline.o format.o user.o all: adu version := 0.0.5 +uname_S := $(shell sh -c 'uname -s 2>/dev/null || echo not') DEBUG_CPPFLAGS += -Wno-sign-compare -g -Wunused -Wundef -W DEBUG_CPPFLAGS += -Wredundant-decls @@ -13,13 +14,20 @@ CPPFLAGS += -Werror-implicit-function-declaration CPPFLAGS += -Wmissing-format-attribute CPPFLAGS += -Wunused-macros CPPFLAGS += -Wbad-function-cast -CPPFLAGS += -D_LARGEFILE64_SOURCE -CPPFLAGS += $(shell getconf LFS64_CFLAGS) CPPFLAGS += -DVERSION='"$(version)"' +CPPFLAGS += -I/usr/local/include -LDFLAGS += -D_LARGEFILE64_SOURCE -LDFLAGS += $(shell getconf LFS64_LDFLAGS) -LDFLAGS += $(shell getconf LFS64_LIBS) +LDFLAGS += -L/usr/local/lib + + +ifeq (,$(findstring BSD,$(uname_S))) + CPPFLAGS += -D_LARGEFILE64_SOURCE + CPPFLAGS += $(shell getconf LFS64_CFLAGS) + LDFLAGS += -D_LARGEFILE64_SOURCE + LDFLAGS += $(shell getconf LFS64_LDFLAGS) + LDFLAGS += $(shell getconf LFS64_LIBS) + CPPFLAGS += -DHAVE_STAT64=1 +endif Makefile.deps: $(wildcard *.c *.h) diff --git a/gcc-compat.h b/gcc-compat.h index ec24db9..4ba96ae 100644 --- a/gcc-compat.h +++ b/gcc-compat.h @@ -71,3 +71,8 @@ * header files. */ #define _static_inline_ static inline + +#ifndef HAVE_STAT64 +#define stat64 stat +#define lstat64 lstat +#endif -- 2.39.2