diff options
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | src/backend/port/dynloader/beos.c | 60 | ||||
-rw-r--r-- | src/backend/port/dynloader/beos.h | 33 | ||||
-rw-r--r-- | src/include/c.h | 16 | ||||
-rw-r--r-- | src/include/config.h.in | 5 | ||||
-rw-r--r-- | src/include/port/beos.h | 10 | ||||
-rw-r--r-- | src/include/storage/ipc.h | 4 | ||||
-rw-r--r-- | src/makefiles/Makefile.beos | 6 | ||||
-rw-r--r-- | src/template/beos | 9 |
9 files changed, 141 insertions, 4 deletions
diff --git a/configure.in b/configure.in index 51230d9e220..798f6728a62 100644 --- a/configure.in +++ b/configure.in @@ -660,7 +660,7 @@ fi ## Header files ## dnl sys/socket.h and sys/types.h are required by AC_FUNC_ACCEPT_ARGTYPES -AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h netinet/tcp.h pwd.h sys/pstat.h sys/select.h sys/socket.h sys/types.h sys/un.h termios.h]) +AC_CHECK_HEADERS([crypt.h dld.h endian.h fp_class.h getopt.h ieeefp.h netinet/tcp.h pwd.h sys/ipc.h sys/pstat.h sys/select.h sys/socket.h sys/types.h sys/un.h termios.h]) AC_CHECK_HEADERS([readline/readline.h readline.h], [break]) AC_CHECK_HEADERS([readline/history.h history.h], [break]) diff --git a/src/backend/port/dynloader/beos.c b/src/backend/port/dynloader/beos.c new file mode 100644 index 00000000000..c2a6b788457 --- /dev/null +++ b/src/backend/port/dynloader/beos.c @@ -0,0 +1,60 @@ +/*------------------------------------------------------------------------- + * + * dynloader.c + * Dynamic Loader for Postgres for BeOS + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * $Header: /cvsroot/pgsql/src/backend/port/dynloader/Attic/beos.c,v 1.1 2000/10/02 17:15:53 momjian Exp $ + * + *------------------------------------------------------------------------- + */ + +#include "postgres.h" +#include <kernel/OS.h> +#include <image.h> +#include <errno.h> + +#include "dynloader.h" + +extern char pg_pathname[]; + +void * +beos_dlopen(const char *filename) +{ + image_id id = -1; + + if ((id = load_add_on(filename)) < 0) + return NULL; + + return (void *) id; +} + +void +beos_dlclose(void *handle) +{ + image_id id = (image_id) handle; + unload_add_on(id); + return; +} + +void * +beos_dlsym(void *handle, const char *name) +{ + image_id id = (image_id)handle; + void *addr; + + if (get_image_symbol(id, name, B_SYMBOL_TYPE_ANY, &addr) != B_OK) + return NULL; + + return addr; +} + +char * +beos_dlerror() +{ + return (char *)strerror(errno); +} diff --git a/src/backend/port/dynloader/beos.h b/src/backend/port/dynloader/beos.h new file mode 100644 index 00000000000..3765ff06296 --- /dev/null +++ b/src/backend/port/dynloader/beos.h @@ -0,0 +1,33 @@ +/*------------------------------------------------------------------------- + * + * port_protos.h + * port-specific prototypes for BeOS + * + * + * Portions Copyright (c) 1996-2000, PostgreSQL, Inc + * Portions Copyright (c) 1994, Regents of the University of California + * + * $Id: beos.h,v 1.1 2000/10/02 17:15:53 momjian Exp $ + * + *------------------------------------------------------------------------- + */ +#ifndef PORT_PROTOS_H +#define PORT_PROTOS_H + +#include "postgres.h" + +#include "fmgr.h" +#include "utils/dynamic_loader.h" + +char *beos_dlerror(void); +void *beos_dlopen(const char *filename); +void *beos_dlsym(void *handle, const char *name); +void beos_dlclose(void *handle); + +#define pg_dlopen(f) beos_dlopen(f) +#define pg_dlsym beos_dlsym +#define pg_dlclose beos_dlclose +#define pg_dlerror beos_dlerror + + +#endif /* PORT_PROTOS_H */ diff --git a/src/include/c.h b/src/include/c.h index a11106df8c8..fcef4a0ff30 100644 --- a/src/include/c.h +++ b/src/include/c.h @@ -8,7 +8,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: c.h,v 1.82 2000/09/29 13:53:32 petere Exp $ + * $Id: c.h,v 1.83 2000/10/02 17:15:55 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -56,6 +56,9 @@ #include <errno.h> #include <sys/fcntl.h> /* ensure O_BINARY is available */ #endif +#ifdef __BEOS__ +#include <SupportDefs.h> +#endif /* ---------------------------------------------------------------- * Section 1: bool, true, false, TRUE, FALSE, NULL @@ -66,6 +69,7 @@ * Boolean value, either true or false. * */ +#ifndef __BEOS__ #ifndef __cplusplus #ifndef bool typedef char bool; @@ -78,6 +82,7 @@ typedef char bool; #ifndef false #define false ((bool) 0) #endif +#endif /* __BEOS__ */ typedef bool *BoolPtr; #ifndef TRUE @@ -165,9 +170,11 @@ typedef char *Pointer; * used for numerical computations and the * frontend/backend protocol. */ +#ifndef __BEOS__ typedef signed char int8; /* == 8 bits */ typedef signed short int16; /* == 16 bits */ typedef signed int int32; /* == 32 bits */ +#endif /* __BEOS__ */ /* * uintN @@ -175,9 +182,11 @@ typedef signed int int32; /* == 32 bits */ * used for numerical computations and the * frontend/backend protocol. */ +#ifndef __BEOS__ typedef unsigned char uint8; /* == 8 bits */ typedef unsigned short uint16; /* == 16 bits */ typedef unsigned int uint32; /* == 32 bits */ +#endif /* __BEOS__ */ /* * floatN @@ -259,6 +268,8 @@ typedef int32 int4; typedef float float4; typedef double float8; +/* BeOS already has int64 defined, so skip these... */ +#ifndef BEOS #ifdef HAVE_LONG_INT_64 /* Plain "long int" fits, use it */ typedef long int int64; @@ -272,6 +283,9 @@ typedef long int int64; #define INT64_IS_BUSTED #endif #endif +#else /* Add BeOS support */ +#include <SupportDefs.h> +#endif /* BEOS */ /* ---------------------------------------------------------------- * Section 4: datum type + support macros diff --git a/src/include/config.h.in b/src/include/config.h.in index c363bceb4ca..86b9623995e 100644 --- a/src/include/config.h.in +++ b/src/include/config.h.in @@ -8,7 +8,7 @@ * or in config.h afterwards. Of course, if you edit config.h, then your * changes will be overwritten the next time you run configure. * - * $Id: config.h.in,v 1.137 2000/09/29 22:00:45 momjian Exp $ + * $Id: config.h.in,v 1.138 2000/10/02 17:15:55 momjian Exp $ */ #ifndef CONFIG_H @@ -342,6 +342,9 @@ /* Set to 1 if you have <readline/readline.h> */ #undef HAVE_READLINE_READLINE_H +/* Define if you have <sys/ipc.h> */ +#undef HAVE_SYS_IPC_H + /* Set to 1 if you have <sys/select.h> */ #undef HAVE_SYS_SELECT_H diff --git a/src/include/port/beos.h b/src/include/port/beos.h new file mode 100644 index 00000000000..c7b33efecb9 --- /dev/null +++ b/src/include/port/beos.h @@ -0,0 +1,10 @@ +#include <kernel/OS.h> +#define USE_POSIX_TIME +#define HAS_TEST_AND_SET + +typedef unsigned char slock_t; + +#define AF_UNIX 1 +#define IPPROTO_IP 0 + + diff --git a/src/include/storage/ipc.h b/src/include/storage/ipc.h index 7b015130281..a3abfea0377 100644 --- a/src/include/storage/ipc.h +++ b/src/include/storage/ipc.h @@ -7,7 +7,7 @@ * Portions Copyright (c) 1996-2000, PostgreSQL, Inc * Portions Copyright (c) 1994, Regents of the University of California * - * $Id: ipc.h,v 1.38 2000/01/26 05:58:32 momjian Exp $ + * $Id: ipc.h,v 1.39 2000/10/02 17:15:58 momjian Exp $ * * NOTES * This file is very architecture-specific. This stuff should actually @@ -23,7 +23,9 @@ #define IPC_H #include <sys/types.h> +#ifdef HAVE_SYS_IPC_H #include <sys/ipc.h> /* For IPC_PRIVATE */ +#endif #include "config.h" diff --git a/src/makefiles/Makefile.beos b/src/makefiles/Makefile.beos new file mode 100644 index 00000000000..d0ca050c039 --- /dev/null +++ b/src/makefiles/Makefile.beos @@ -0,0 +1,6 @@ +MK_NO_LORDER=true +ifdef ELF_SYSTEM +LDFLAGS += -Wl,-E +endif +%.so: %.o + $(LD) -x -Bshareable -o $@ $< diff --git a/src/template/beos b/src/template/beos new file mode 100644 index 00000000000..0a62b51a1e4 --- /dev/null +++ b/src/template/beos @@ -0,0 +1,9 @@ +AROPT:crs +SHARED_LIB:-fpic -DPIC +CFLAGS:-O2 -DBEOS +SRCH_INC: +SRCH_LIB: +USE_LOCALE:no +DLSUFFIX:.so +YFLAGS:-d +YACC:bison -y |