[comp.lang.perl] Perl 4.003 on SunOs 4 and RS/6000

victor@watson.ibm.com (Victor Miller) (04/17/91)

I found the following problem with building perl 4.003 on SunOs 4: 

in hints/sunos_4_0_2.sh we have

echo ': work around botch in SunOS 4.0.1 and 4.0.2'	>>../perl.h
echo '#ifndef fputs'					>>../perl.h
echo '#define fputs(str,fp) fprintf(fp,"%s",str)'	>>../perl.h
echo '#endif'						>>../perl.h

Why does the first line start with a ':'?  This cause cc to choke.  I
changed the contents of the approriate line in perl.h to use standard
cc comments, and everything built ok.

I had gotten perl 3.044 to build successfully on RS/6000's by adding
the option -qlanglvl=ansi (I don't think much else).  However, lots of
things have changed in 4.003 and am stymied.  I have the following
errors:

shire.watson.ibm.com:/a/shire/homes/shire/victor/perl-4.003: make
	cc -c `sh cflags.SH perl.o` perl.c
	  CFLAGS =  -D_NO_PROTO -qlanglvl=ansi -O
       53 |     char *index(), *strcpy(), *getenv();
    1506-041: (S) Parameter list cannot contain fewer parameters than required by macro  definition.
      869 |     curcmd = &compiling;
            ...........a............
a - 1506-016: (E) Operands must be pointers to compatible types.
make: 1254-004 The error code from the last command is 1.

Make Quitting.


Can anyone help with this?
--
			Victor S. Miller
			Vnet and Bitnet:  VICTOR at WATSON
			Internet: victor@watson.ibm.com
			IBM, TJ Watson Research Center

jw@sics.se (Johan Widen) (04/18/91)

>>>>> In article <VICTOR.91Apr16174952@irt.watson.ibm.com>, victor@watson.ibm.com (Victor Miller) writes:

victor> I had gotten perl 3.044 to build successfully on RS/6000's by adding
victor> the option -qlanglvl=ansi (I don't think much else).  However, lots of
victor> things have changed in 4.003 and am stymied.  I have the following
victor> errors:

victor> shire.watson.ibm.com:/a/shire/homes/shire/victor/perl-4.003: make
victor> 	cc -c `sh cflags.SH perl.o` perl.c
victor> 	  CFLAGS =  -D_NO_PROTO -qlanglvl=ansi -O
victor>        53 |     char *index(), *strcpy(), *getenv();
victor>     1506-041: (S) Parameter list cannot contain fewer parameters than required by macro  definition.
victor>       869 |     curcmd = &compiling;
victor>             ...........a............
victor> a - 1506-016: (E) Operands must be pointers to compatible types.
victor> make: 1254-004 The error code from the last command is 1.

I made the following change to perl.c

*** perl.c.org	Tue Apr 16 09:59:49 1991
--- perl.c	Tue Apr 16 19:50:48 1991
***************
*** 50,56 ****
--- 50,58 ----
  {
      register STR *str;
      register char *s;
+ #ifndef __STDC__
      char *index(), *strcpy(), *getenv();
+ #endif
      bool dosearch = FALSE;
  #ifdef DOSUID
      char *validarg = "";

I did not compile with -qlanglvl=ansi and I did not use optimization either.
I seem to remember that I used -D_NO_PROTO but I'm not sure.

--
Johan Widen
SICS, PO Box 1263, S-164 28 KISTA, SWEDEN	Internet: jw@sics.se
Tel: +46 8 752 15 32	Ttx: 812 61 54 SICS S	Fax: +46 8 751 72 30