Make it compile on FreeBSD and NetBSD.
authorAndre Noll <maan@systemlinux.org>
Tue, 23 Dec 2008 16:26:52 +0000 (17:26 +0100)
committerAndre Noll <maan@systemlinux.org>
Tue, 23 Dec 2008 16:26:52 +0000 (17:26 +0100)
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
gcc-compat.h

index 0cce3b9..a4293c7 100644 (file)
--- 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)
index ec24db9..4ba96ae 100644 (file)
@@ -71,3 +71,8 @@
  * header files.
  */
 #define _static_inline_ static inline
+
+#ifndef HAVE_STAT64
+#define stat64 stat
+#define lstat64 lstat
+#endif