summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPeter Eisentraut <peter_e@gmx.net>2000-10-31 19:55:20 +0000
committerPeter Eisentraut <peter_e@gmx.net>2000-10-31 19:55:20 +0000
commitb99ee7f37d41803ac643d525c4e700644ddb6030 (patch)
tree8ed656fc59d04e2cdbb55cf5f98a827d2fdf779b /src
parentdc0f5cb09025bf8c5cc3900bfa4738a83457028f (diff)
This is the minimal version of the Darwin support patch from
Bruce Hartzler <bruceh@mail.utexas.edu>. It contains shared library support, regression test map, and the usual template files. The dynamic loader is missing, the spin lock code apparently doesn't assemble due to syntax problems, and semaphores are to be hoped for from Apple.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.shlib11
-rw-r--r--src/backend/port/dynloader/darwin.c36
-rw-r--r--src/backend/port/dynloader/darwin.h5
-rw-r--r--src/include/port/darwin.h6
-rw-r--r--src/makefiles/Makefile.darwin7
-rw-r--r--src/template/darwin4
-rw-r--r--src/test/regress/resultmap3
7 files changed, 69 insertions, 3 deletions
diff --git a/src/Makefile.shlib b/src/Makefile.shlib
index 8f60f3a196e..2d7cc4a0e1f 100644
--- a/src/Makefile.shlib
+++ b/src/Makefile.shlib
@@ -6,7 +6,7 @@
# Copyright (c) 1998, Regents of the University of California
#
# IDENTIFICATION
-# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.30 2000/10/27 23:59:39 petere Exp $
+# $Header: /cvsroot/pgsql/src/Makefile.shlib,v 1.31 2000/10/31 19:55:18 petere Exp $
#
#-------------------------------------------------------------------------
@@ -52,9 +52,9 @@
# Got that? Look at src/interfaces/libpq/Makefile for an example.
ifndef cplusplus
-COMPILER = $(CC)
+COMPILER = $(CC) $(CFLAGS)
else
-COMPILER = $(CXX)
+COMPILER = $(CXX) $(CXXFLAGS)
endif
@@ -103,6 +103,11 @@ ifeq ($(PORTNAME), aix)
SHLIB_LINK += -lc
endif
+ifeq ($(PORTNAME), darwin)
+ shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
+ LINK.shared = $(COMPILER) $(CFLAGS_SL)
+endif
+
ifeq ($(PORTNAME), openbsd)
shlib := lib$(NAME)$(DLSUFFIX).$(SO_MAJOR_VERSION).$(SO_MINOR_VERSION)
ifdef ELF_SYSTEM
diff --git a/src/backend/port/dynloader/darwin.c b/src/backend/port/dynloader/darwin.c
new file mode 100644
index 00000000000..fa39a7dd319
--- /dev/null
+++ b/src/backend/port/dynloader/darwin.c
@@ -0,0 +1,36 @@
+/*
+ * This is a place holder until someone supplies a dynamic loader
+ * interface for this platform.
+ *
+ * $Header: /cvsroot/pgsql/src/backend/port/dynloader/darwin.c,v 1.1 2000/10/31 19:55:19 petere Exp $
+ */
+
+#include "postgres.h"
+#include "fmgr.h"
+#include "utils/dynamic_loader.h"
+#include "dynloader.h"
+
+void *
+pg_dlopen(char *filename)
+{
+ return (void *) NULL;
+}
+
+PGFunction
+pg_dlsym(void *handle, char *funcname)
+{
+ return NULL;
+}
+
+void
+pg_dlclose(void *handle)
+{
+}
+
+char *
+pg_dlerror()
+{
+ static char errmsg[] = "the dynamic loader for darwin doesn't exist yet";
+
+ return errmsg;
+}
diff --git a/src/backend/port/dynloader/darwin.h b/src/backend/port/dynloader/darwin.h
new file mode 100644
index 00000000000..9ab7e857615
--- /dev/null
+++ b/src/backend/port/dynloader/darwin.h
@@ -0,0 +1,5 @@
+/* $Header: /cvsroot/pgsql/src/backend/port/dynloader/darwin.h,v 1.1 2000/10/31 19:55:19 petere Exp $ */
+void *pg_dlopen(char *filename);
+PGFunction pg_dlsym(void *handle, char *funcname);
+void pg_dlclose(void *handle);
+char *pg_dlerror();
diff --git a/src/include/port/darwin.h b/src/include/port/darwin.h
new file mode 100644
index 00000000000..597b998a017
--- /dev/null
+++ b/src/include/port/darwin.h
@@ -0,0 +1,6 @@
+#define HAS_TEST_AND_SET
+#if defined(__powerpc__)
+typedef unsigned int slock_t;
+#else
+typedef unsigned char slock_t;
+#endif
diff --git a/src/makefiles/Makefile.darwin b/src/makefiles/Makefile.darwin
new file mode 100644
index 00000000000..09f270bf7be
--- /dev/null
+++ b/src/makefiles/Makefile.darwin
@@ -0,0 +1,7 @@
+AROPT = cr
+
+DLSUFFIX = .so
+CFLAGS_SL = -bundle -undefined suppress
+
+%.so: %.o
+ $(CC) $(CFLAGS) $(CFLAGS_SL) -o $@ $<
diff --git a/src/template/darwin b/src/template/darwin
new file mode 100644
index 00000000000..fb99dffb89c
--- /dev/null
+++ b/src/template/darwin
@@ -0,0 +1,4 @@
+# regular cpp is broken in current development releases
+CC="$CC -traditional-cpp"
+# be on safe side while they sort out their compiler
+CFLAGS=-O0
diff --git a/src/test/regress/resultmap b/src/test/regress/resultmap
index d7c72635796..b274de07f8b 100644
--- a/src/test/regress/resultmap
+++ b/src/test/regress/resultmap
@@ -12,6 +12,7 @@ float8/.*-qnx=float8-exp-three-digits
float8/alpha.*-dec-osf=float8-fp-exception
float8/i.86-pc-cygwin=float8-small-is-zero
geometry/.*-bsdi=geometry-positive-zeros-bsd
+geometry/.*-darwin=geometry-positive-zeros
geometry/.*-freebsd=geometry-positive-zeros
geometry/.*-freebsd4.0=geometry-positive-zeros-bsd
geometry/.*-irix6=geometry-irix
@@ -35,6 +36,7 @@ horology/sparc-sun-solaris=horology-solaris-1947
horology/.*-sysv5uw=horology-solaris-1947
int2/.*-aix4=int2-too-large
int2/.*-bsdi=int2-too-large
+int2/.*-darwin=int2-too-large
int2/.*-freebsd=int2-too-large
int2/.*-irix6=int2-too-large
int2/.*-netbsd=int2-too-large
@@ -50,6 +52,7 @@ int2/.*-sysv5uw=int2-too-large
int2/.*-beos=int2-range-error
int4/.*-aix4=int4-too-large
int4/.*-bsdi=int4-too-large
+int4/.*-darwin=int4-too-large
int4/.*-freebsd=int4-too-large
int4/.*-irix6=int4-too-large
int4/.*-netbsd=int4-too-large