From efafd1506e57577d210c3a2fa424993c43461ab5 Mon Sep 17 00:00:00 2001 From: "Marc G. Fournier" Date: Mon, 19 Aug 1996 13:50:44 +0000 Subject: [PATCH] Added a SVR4 port --- below my signature, there are a coupls of diffs and files in a shell archive, which were needed to build postgres95 1.02 on Siemens Nixdorfs MIPS based SINIX systems. Except for the compiler switches "-W0" and "-LD-Blargedynsym" these diffs should also apply for other SVR4 based systems. The changes in "Makefile.global" and "genbki.sh" can probably be ignored (I needed gawk, to make the script run). There is one bugfix thou. In "src/backend/parser/sysfunc.c" the function in this file didn't honor the EUROPEAN_DATES ifdef. --- Submitted by: Frank Ridderbusch --- src/Makefile.global | 38 ++++---- src/backend/Makefile | 7 +- src/backend/catalog/genbki.sh | 4 +- src/backend/parser/sysfunc.c | 5 + src/backend/port/svr4/Makefile.inc | 20 ++++ src/backend/port/svr4/machine.h | 19 ++++ src/backend/port/svr4/port-protos.h | 38 ++++++++ src/backend/port/svr4/port.c | 143 ++++++++++++++++++++++++++++ src/backend/port/svr4/rusagestub.h | 30 ++++++ src/backend/storage/ipc.h | 3 +- src/backend/utils/adt/float.c | 4 +- src/backend/utils/adt/nabstime.c | 3 +- src/mk/port/postgres.mk.svr4 | 48 +++++++++- 13 files changed, 332 insertions(+), 30 deletions(-) create mode 100644 src/backend/port/svr4/Makefile.inc create mode 100644 src/backend/port/svr4/machine.h create mode 100644 src/backend/port/svr4/port-protos.h create mode 100644 src/backend/port/svr4/port.c create mode 100644 src/backend/port/svr4/rusagestub.h diff --git a/src/Makefile.global b/src/Makefile.global index e22ebeaf31..614fdb7e3c 100644 --- a/src/Makefile.global +++ b/src/Makefile.global @@ -7,7 +7,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/Attic/Makefile.global,v 1.19 1996/07/31 18:55:49 scrappy Exp $ +# $Header: /cvsroot/pgsql/src/Attic/Makefile.global,v 1.19.2.1 1996/08/19 13:46:05 scrappy Exp $ # # NOTES # This is seen by any Makefiles that include mk/postgres.mk. To @@ -59,15 +59,15 @@ # until after this file is processed! # make sure that you have no whitespaces after the PORTNAME setting # or the makefiles can get confused -PORTNAME= BSD44_derived +PORTNAME= svr4 # SRCDIR specifies where the source files are. -SRCDIR= /home/staff/scrappy/cvs/postgres95/src +SRCDIR= /home/tools/postgres95-1.02/src # For convenience, POSTGRESDIR is where DATADIR, BINDIR, and LIBDIR # and other target destinations are rooted. Of course, each of these is # changable separately. -POSTGRESDIR= /home/staff/scrappy/cvs/postgres95 +POSTGRESDIR= /home/tools/postgres95-1.02 # POSTGRESLOGIN is the login name of the user who gets special # privileges within the database. By default it is "postgres", but @@ -130,7 +130,7 @@ CFLAGS+= -DNAMEDATALEN=$(NAMEDATALEN) -DOIDNAMELEN=$(OIDNAMELEN) # Comment out CDEBUG to turn off debugging and sanity-checking. # # XXX on MIPS, use -g3 if you want to compile with -O -#CDEBUG= -g +CDEBUG= -O # Comment out ENFORCE_ALIGNMENT if you do NOT want unaligned access to # multi-byte types to generate a bus error. @@ -138,7 +138,7 @@ ENFORCE_ALIGNMENT= true # turn this on if you prefer European style dates instead of American # style dates -# EUROPEAN_DATES = 1 +EUROPEAN_DATES = 1 # Comment out PROFILE to disable profiling. # @@ -154,13 +154,13 @@ ENFORCE_ALIGNMENT= true # and READLINE_LIBDIR to reflect the location of the readline and history # headers and libraries. # -#USE_READLINE= true +USE_READLINE= true # directories for the readline and history libraries. -READLINE_INCDIR= /usr/local/include -HISTORY_INCDIR= /usr/local/include -READLINE_LIBDIR= /usr/local/lib -HISTORY_LIBDIR= /usr/local/lib +READLINE_INCDIR= /home/tools/include +HISTORY_INCDIR= /home/tools/include -I/home/tools/include/readline +READLINE_LIBDIR= /home/tools/lib +HISTORY_LIBDIR= /home/tools/lib # If you do not plan to use Host based authentication, # comment out the following line @@ -208,19 +208,19 @@ endif # location of Tcl/Tk headers and libraries # # Uncomment this to build the tcl utilities. -#USE_TCL= true +USE_TCL= true # customize these to your site's needs # -TCL_INCDIR= /usr/local/include -TCL_LIBDIR= /usr/local/lib +TCL_INCDIR= /home/tools/include +TCL_LIBDIR= /home/tools/lib TCL_LIB = -ltcl7.5 -TK_INCDIR= /usr/local/include -TK_LIBDIR= /usr/local/lib +TK_INCDIR= /home/tools/include +TK_LIBDIR= /home/tools/lib TK_LIB = -ltk4.1 -X11_INCDIR = /usr/X11R6.1/include -X11_LIBDIR = /usr/X11R6.1/lib -X11_LIB = -lX11 +X11_INCDIR = /usr/include +X11_LIBDIR = /usr/lib +X11_LIB = -lX11 -lsocket -lnsl # # include port specific rules and variables. For instance: diff --git a/src/backend/Makefile b/src/backend/Makefile index fbde3abee0..a84253a451 100644 --- a/src/backend/Makefile +++ b/src/backend/Makefile @@ -7,7 +7,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.2 1996/07/31 17:19:49 scrappy Exp $ +# $Header: /cvsroot/pgsql/src/backend/Makefile,v 1.2.2.1 1996/08/19 13:46:19 scrappy Exp $ # #------------------------------------------------------------------------- @@ -118,6 +118,11 @@ ifeq ($(PORTNAME), linux) LDADD+= -lc endif +# the following is special for Reliant UNIX SVR4 (formerly SINIX) +ifeq ($(PORTNAME), svr4) +LDFLAGS+= -LD-Blargedynsym +endif + postgres: $(POSTGRES_DEPEND) $(OBJS) $(EXPORTS) $(CC) $(LDFLAGS) -o $(objdir)/$(@F) $(addprefix $(objdir)/,$(notdir $(OBJS))) $(LDADD) diff --git a/src/backend/catalog/genbki.sh b/src/backend/catalog/genbki.sh index 2f7e4025b8..74d3e0f324 100644 --- a/src/backend/catalog/genbki.sh +++ b/src/backend/catalog/genbki.sh @@ -10,7 +10,7 @@ # # # IDENTIFICATION -# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/genbki.sh,v 1.1.1.1 1996/07/09 06:21:15 scrappy Exp $ +# $Header: /cvsroot/pgsql/src/backend/catalog/Attic/genbki.sh,v 1.1.1.1.2.1 1996/08/19 13:46:26 scrappy Exp $ # # NOTES # non-essential whitespace is removed from the generated file. @@ -62,7 +62,7 @@ sed -e 's/\/\*.*\*\///g' \ -e 's/\ NameData/\ name/g' \ -e 's/(NameData/(name/g' \ -e 's/(Oid/(oid/g' | \ -awk ' +gawk ' # ---------------- # now use awk to process remaining .h file.. # diff --git a/src/backend/parser/sysfunc.c b/src/backend/parser/sysfunc.c index c69ca1b5b0..5cc1935b7b 100644 --- a/src/backend/parser/sysfunc.c +++ b/src/backend/parser/sysfunc.c @@ -30,8 +30,13 @@ char *Sysfunc_system_date(void) time(&cur_time_secs); cur_time_expanded = localtime(&cur_time_secs); +#if defined(EUROPEAN_DATES) || defined(EUROPEAN_STYLE) + sprintf(buf, "%02.2d-%02.2d-%04.4d", cur_time_expanded->tm_mday, + cur_time_expanded->tm_mon+1, cur_time_expanded->tm_year+1900); +#else sprintf(buf, "%02.2d-%02.2d-%04.4d", cur_time_expanded->tm_mon+1, cur_time_expanded->tm_mday, cur_time_expanded->tm_year+1900); +#endif return &buf[0]; } diff --git a/src/backend/port/svr4/Makefile.inc b/src/backend/port/svr4/Makefile.inc new file mode 100644 index 0000000000..f04a2bc2d0 --- /dev/null +++ b/src/backend/port/svr4/Makefile.inc @@ -0,0 +1,20 @@ +#------------------------------------------------------------------------- +# +# Makefile.inc-- +# Makefile for port/svr4 (Intel x86/Intel SVR4 specific stuff) +# +# Copyright (c) 1994, Regents of the University of California +# +# +# IDENTIFICATION +# /usr/local/devel/pglite/cvs/src/backend/port/svr4/Makefile.inc,v 1.3 1995/03/21 06:51:21 andrew Exp +# +#------------------------------------------------------------------------- + +CFLAGS+= -DUSE_POSIX_TIME -DNEED_ISINF -DNEED_RUSAGE -DNO_EMPTY_STMTS + +LDADD+= -ll -ldl + +SUBSRCS+= port.c + +HEADERS+= machine.h port-protos.h rusagestub.h diff --git a/src/backend/port/svr4/machine.h b/src/backend/port/svr4/machine.h new file mode 100644 index 0000000000..fd1f22c8a9 --- /dev/null +++ b/src/backend/port/svr4/machine.h @@ -0,0 +1,19 @@ +/*------------------------------------------------------------------------- + * + * machine.h-- + * + * + * + * Copyright (c) 1994, Regents of the University of California + * + * machine.h,v 1.1.1.1 1994/11/07 05:19:38 andrew Exp + * + *------------------------------------------------------------------------- + */ +#ifndef MACHINE_H +#define MACHINE_H + +#define BLCKSZ 8192 + +#endif + diff --git a/src/backend/port/svr4/port-protos.h b/src/backend/port/svr4/port-protos.h new file mode 100644 index 0000000000..4b992570ac --- /dev/null +++ b/src/backend/port/svr4/port-protos.h @@ -0,0 +1,38 @@ +/*------------------------------------------------------------------------- + * + * port-protos.h-- + * port-specific prototypes for Intel x86/Intel SVR4 + * + * + * Copyright (c) 1994, Regents of the University of California + * + * port-protos.h,v 1.2 1995/03/17 06:40:18 andrew Exp + * + *------------------------------------------------------------------------- + */ +#ifndef PORT_PROTOS_H +#define PORT_PROTOS_H + +#include +#include "fmgr.h" /* for func_ptr */ +#include "utils/dynamic_loader.h" + +/* dynloader.c */ +/* + * Dynamic Loader on Intel x86/Intel SVR4. + * + * this dynamic loader uses the system dynamic loading interface for shared + * libraries (ie. dlopen/dlsym/dlclose). The user must specify a shared + * library as the file to be dynamically loaded. + * + */ +#define pg_dlopen(f) dlopen(f,RTLD_LAZY) +#define pg_dlsym dlsym +#define pg_dlclose dlclose +#define pg_dlerror dlerror + +/* port.c */ +extern long random(void); +extern void srandom(int seed); + +#endif /* PORT_PROTOS_H */ diff --git a/src/backend/port/svr4/port.c b/src/backend/port/svr4/port.c new file mode 100644 index 0000000000..137cebbcbe --- /dev/null +++ b/src/backend/port/svr4/port.c @@ -0,0 +1,143 @@ +/*------------------------------------------------------------------------- + * + * port.c-- + * Intel x86/Intel SVR4-specific routines + * + * Copyright (c) 1994, Regents of the University of California + * + * + * IDENTIFICATION + * /usr/local/devel/pglite/cvs/src/backend/port/svr4/port.c,v 1.2 1995/03/17 06:40:19 andrew Exp + * + *------------------------------------------------------------------------- + */ +#include /* for pow() prototype */ + +#include +#include "rusagestub.h" + +long +random() +{ + return(lrand48()); +} + +void +srandom(int seed) +{ + srand48((long int) seed); +} + +int +getrusage(int who, struct rusage *rusage) +{ + struct tms tms; + register int tick_rate = CLK_TCK; /* ticks per second */ + clock_t u, s; + + if (rusage == (struct rusage *) NULL) { + errno = EFAULT; + return(-1); + } + if (times(&tms) < 0) { + /* errno set by times */ + return(-1); + } + switch (who) { + case RUSAGE_SELF: + u = tms.tms_utime; + s = tms.tms_stime; + break; + case RUSAGE_CHILDREN: + u = tms.tms_cutime; + s = tms.tms_cstime; + break; + default: + errno = EINVAL; + return(-1); + } +#define TICK_TO_SEC(T, RATE) ((T)/(RATE)) +#define TICK_TO_USEC(T,RATE) (((T)%(RATE)*1000000)/RATE) + rusage->ru_utime.tv_sec = TICK_TO_SEC(u, tick_rate); + rusage->ru_utime.tv_usec = TICK_TO_USEC(u, tick_rate); + rusage->ru_stime.tv_sec = TICK_TO_SEC(s, tick_rate); + rusage->ru_stime.tv_usec = TICK_TO_USEC(u, tick_rate); + return(0); +} + +/* + * Copyright (c) 1987 Regents of the University of California. + * All rights reserved. + * + * Redistribution and use in source and binary forms are permitted + * provided that this notice is preserved and that due credit is given + * to the University of California at Berkeley. The name of the University + * may not be used to endorse or promote products derived from this + * software without specific written prior permission. This software + * is provided ``as is'' without express or implied warranty. + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)strcasecmp.c 5.5 (Berkeley) 11/24/87"; +#endif /* LIBC_SCCS and not lint */ + +#include +#include + +/* + * This array is designed for mapping upper and lower case letter + * together for a case independent comparison. The mappings are +p * based upon ascii character sequences. + */ +static unsigned char charmap[] = { + '\000', '\001', '\002', '\003', '\004', '\005', '\006', '\007', + '\010', '\011', '\012', '\013', '\014', '\015', '\016', '\017', + '\020', '\021', '\022', '\023', '\024', '\025', '\026', '\027', + '\030', '\031', '\032', '\033', '\034', '\035', '\036', '\037', + '\040', '\041', '\042', '\043', '\044', '\045', '\046', '\047', + '\050', '\051', '\052', '\053', '\054', '\055', '\056', '\057', + '\060', '\061', '\062', '\063', '\064', '\065', '\066', '\067', + '\070', '\071', '\072', '\073', '\074', '\075', '\076', '\077', + '\100', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\133', '\134', '\135', '\136', '\137', + '\140', '\141', '\142', '\143', '\144', '\145', '\146', '\147', + '\150', '\151', '\152', '\153', '\154', '\155', '\156', '\157', + '\160', '\161', '\162', '\163', '\164', '\165', '\166', '\167', + '\170', '\171', '\172', '\173', '\174', '\175', '\176', '\177', + '\200', '\201', '\202', '\203', '\204', '\205', '\206', '\207', + '\210', '\211', '\212', '\213', '\214', '\215', '\216', '\217', + '\220', '\221', '\222', '\223', '\224', '\225', '\226', '\227', + '\230', '\231', '\232', '\233', '\234', '\235', '\236', '\237', + '\240', '\241', '\242', '\243', '\244', '\245', '\246', '\247', + '\250', '\251', '\252', '\253', '\254', '\255', '\256', '\257', + '\260', '\261', '\262', '\263', '\264', '\265', '\266', '\267', + '\270', '\271', '\272', '\273', '\274', '\275', '\276', '\277', + '\300', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\333', '\334', '\335', '\336', '\337', + '\340', '\341', '\342', '\343', '\344', '\345', '\346', '\347', + '\350', '\351', '\352', '\353', '\354', '\355', '\356', '\357', + '\360', '\361', '\362', '\363', '\364', '\365', '\366', '\367', + '\370', '\371', '\372', '\373', '\374', '\375', '\376', '\377', +}; + +int +strcasecmp(char *s1, char *s2) +{ + register unsigned char u1, u2; + + for (;;) { + u1 = (unsigned char) *s1++; + u2 = (unsigned char) *s2++; + if (charmap[u1] != charmap[u2]) { + return charmap[u1] - charmap[u2]; + } + if (u1 == '\0') { + return 0; + } + } +} + diff --git a/src/backend/port/svr4/rusagestub.h b/src/backend/port/svr4/rusagestub.h new file mode 100644 index 0000000000..d2393eb792 --- /dev/null +++ b/src/backend/port/svr4/rusagestub.h @@ -0,0 +1,30 @@ +/*------------------------------------------------------------------------- + * + * rusagestub.h-- + * Stubs for getrusage(3). + * + * + * Copyright (c) 1994, Regents of the University of California + * + * rusagestub.h,v 1.1.1.1 1994/11/07 05:19:39 andrew Exp + * + *------------------------------------------------------------------------- + */ +#ifndef RUSAGESTUB_H +#define RUSAGESTUB_H + +#include /* for struct timeval */ +#include /* for struct tms */ +#include /* for CLK_TCK */ + +#define RUSAGE_SELF 0 +#define RUSAGE_CHILDREN -1 + +struct rusage { + struct timeval ru_utime; /* user time used */ + struct timeval ru_stime; /* system time used */ +}; + +extern int getrusage(int who, struct rusage *rusage); + +#endif /* RUSAGESTUB_H */ diff --git a/src/backend/storage/ipc.h b/src/backend/storage/ipc.h index 9a4bfe7411..8a4d2225c4 100644 --- a/src/backend/storage/ipc.h +++ b/src/backend/storage/ipc.h @@ -6,7 +6,7 @@ * * Copyright (c) 1994, Regents of the University of California * - * $Id: ipc.h,v 1.4 1996/07/26 20:39:04 scrappy Exp $ + * $Id: ipc.h,v 1.4.2.1 1996/08/19 13:47:13 scrappy Exp $ * * NOTES * This file is very architecture-specific. This stuff should actually @@ -122,6 +122,7 @@ extern int S_LOCK_FREE(slock_t *lock); defined(PORTNAME_i386_solaris) || \ defined(PORTNAME_sparc_solaris) || \ defined(PORTNAME_ultrix4) || \ + defined(PORTNAME_svr4) || \ defined(WIN32) union semun { int val; diff --git a/src/backend/utils/adt/float.c b/src/backend/utils/adt/float.c index f4b3bef543..b33c61025b 100644 --- a/src/backend/utils/adt/float.c +++ b/src/backend/utils/adt/float.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.2 1996/07/20 08:36:17 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/float.c,v 1.2.2.1 1996/08/19 13:47:26 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -1275,7 +1275,7 @@ static int isinf(x) } #endif /* PORTNAME_alpha */ -#if defined(PORTNAME_sparc_solaris)||defined(PORTNAME_i386_solaris) +#if defined(PORTNAME_sparc_solaris)||defined(PORTNAME_i386_solaris) || defined(PORTNAME_svr4) #include static int isinf(d) diff --git a/src/backend/utils/adt/nabstime.c b/src/backend/utils/adt/nabstime.c index 3faa3a216f..27b5208d41 100644 --- a/src/backend/utils/adt/nabstime.c +++ b/src/backend/utils/adt/nabstime.c @@ -7,7 +7,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.3 1996/07/22 21:56:03 scrappy Exp $ + * $Header: /cvsroot/pgsql/src/backend/utils/adt/nabstime.c,v 1.3.2.1 1996/08/19 13:47:28 scrappy Exp $ * *------------------------------------------------------------------------- */ @@ -296,6 +296,7 @@ tryabsdate(char *fields[], int nf, struct tm *tm, int *tzp) defined(PORTNAME_i386_solaris) || \ defined(PORTNAME_irix5) || \ defined(PORTNAME_sparc_solaris) || \ + defined(PORTNAME_svr4) || \ defined(WIN32) tzset(); #ifndef WIN32 diff --git a/src/mk/port/postgres.mk.svr4 b/src/mk/port/postgres.mk.svr4 index 18ce27f071..fba4f2dd1d 100644 --- a/src/mk/port/postgres.mk.svr4 +++ b/src/mk/port/postgres.mk.svr4 @@ -5,7 +5,7 @@ # # Copyright (c) 1994-5, Regents of the University of California # -# $Id: postgres.mk.svr4,v 1.1.1.1 1996/07/09 06:22:20 scrappy Exp $ +# $Id: postgres.mk.svr4,v 1.1.1.1.2.1 1996/08/19 13:50:44 scrappy Exp $ # # NOTE # This file has not been tested. -ay 3/95 @@ -14,6 +14,11 @@ ifndef MK_PORT MK_PORT= svr4 +# cc won't work? +#CC= gcc +CC= cc -W0 +YACC= bison -y + # # for postgres.mk # @@ -23,13 +28,48 @@ CFLAGS_BE+= -DUSE_POSIX_SIGNALS # symbol names to tell them what to export/import. MAKE_EXPORTS= true +# RANLIB is not used on svr4 +RANLIB=touch + +# GNU install +INSTALL=/home/tools/bin/install + +# +# Random things that must be passed everywhere to enable +# everything to compile. :-/ +# +# The extra -I flag is to scoop up extra BSD-emulating headers. +CFLAGS_BE+= -DSYSV_DIRENT -I$(POSTGRESDIR)/src/backend/port/svr4 +LDADD_BE+= -lsocket -lnsl -lc /usr/ucblib/libucb.a + +LD_ADD+= $(LDADD_BE) + +# +# for postgres.mk +# +CFLAGS_OPT= -O + # # for postgres.user.mk # -CFLAGS_SL= -K pic +#CFLAGS_SL= -K pic +ifeq ($(CC), cc) +#CFLAGS_SL= -K PIC +else +#CFLAGS_SL= -fPIC +endif + SLSUFF= .so -%.so: %.o - $(LD) -G $(LDFLAGS) -o $(objdir)/$(@F) $(objdir)/$(