Here is the first batch of files and diffs for the BeOS port. I've run into

problems with some bits of it, but when all the patches are in it'll build
and we can fix it from there :)  I've got a version that builds and runs and
that is the basis for these patches.

The first file has the new additional files that are required,
    template/beos
    backend/port/dynloader/beos.c
    backend/port/dynloader/beos.h
    include/port/beos.h
    makefiles/Makefile.beos

The second is a tarball of diffs against a few files.  I've added sys/ipc.h
to configure and config.h via configure.in and config.h.in and then started
adding the check as this file isn't needed on BeOS and having loads of
#ifdef BEOS isn't as obvious as #ifdef HAVE_SYS_IPC_H and isn't as
autconf'ish :)
Files touched are
    include/c.h
    configure.in
    include/config.h.in
    include/storage/ipc.h
    include/utils/int8.h

Let me know how these go.  I'll await a response before submitting any more.

Any problems just get in touch.

David Reid
This commit is contained in:
Bruce Momjian 2000-10-02 17:16:01 +00:00
parent 89f6443ca3
commit 7a7e0240ea
9 changed files with 141 additions and 4 deletions

View File

@ -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])

View File

@ -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);
}

View File

@ -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 */

View File

@ -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

View File

@ -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

10
src/include/port/beos.h Normal file
View File

@ -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

View File

@ -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"

View File

@ -0,0 +1,6 @@
MK_NO_LORDER=true
ifdef ELF_SYSTEM
LDFLAGS += -Wl,-E
endif
%.so: %.o
$(LD) -x -Bshareable -o $@ $<

9
src/template/beos Normal file
View File

@ -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