Added ability to detect and use either gcc or Sun WorkShop C compiler
authorJames Carlson <carlsonj@workingcode.com>
Sat, 7 Sep 2002 05:15:25 +0000 (05:15 +0000)
committerJames Carlson <carlsonj@workingcode.com>
Sat, 7 Sep 2002 05:15:25 +0000 (05:15 +0000)
on Solaris.  Added support for Solaris 10.  Quieted down warning in
ppp_comp.c due to bad preprocessor usage.  Quieted WorkShop warnings
in options.c (casting of void * to function) and pppd.h (constant too
large).  Tested in 32 and 64 bit modes with gcc and WorkShop.

15 files changed:
chat/Makefile.sol2
configure
modules/ppp_comp.c
pppd/Makefile.sol2
pppd/options.c
pppd/plugins/Makefile.sol2
pppd/pppd.h
pppd/sys-solaris.c
pppdump/Makefile.sol2
pppstats/Makefile.sol2
solaris/Makedefs
solaris/Makedefs.gcc [new file with mode: 0644]
solaris/Makedefs.sol2
solaris/Makefile.sol2gcc [new file with mode: 0644]
solaris/Makefile.sol2gcc-64 [new file with mode: 0644]

index f566cc68b49273068a52f3d579748aaf10ccfcca..10d331467ed6f25631981f8b33e6d227884d4cb4 100644 (file)
@@ -2,7 +2,7 @@
 # Makefile for chat on Solaris 2
 #
 
-include ../solaris/Makedefs
+include ../Makedefs.com
 
 CFLAGS = $(COPTS) -DNO_USLEEP -DSOL2
 
index 6238cf6d16836225cf6eadc00bf770945d344cb0..2744f4e5617616b6a5bb7b38bb09a6e592220cd3 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: configure,v 1.28 2002/01/22 16:02:56 dfs Exp $
+# $Id: configure,v 1.29 2002/09/07 05:15:25 carlsonj Exp $
 
 #  if [ -d /NextApps ]; then
 #    system="NeXTStep"
@@ -20,15 +20,35 @@ case $system in
     case $release in
 #      [0-3]*) state="ancient";;
 #      4*)     state="known"; ksrc="sunos4"; makext="sunos4";;
-      5.[1-6]*)        state="known"; ksrc="solaris"; makext="sol2";;
-      5.[7-9]*)        state="known"; ksrc="solaris"; makext="sol2";
+      5.[7-9]*|5.[1-9][0-9])   state="known"; ksrc="solaris"; makext="sol2";
               case $arch in
-               sun4u)  lp64='y';;
+               sun4u)  archvariant='-64';;
                *)      ;;
              esac;;
-    esac;;
-    NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
-      state="notincluded";;
+      5.[1-6]*)        state="known"; ksrc="solaris"; makext="sol2";;
+    esac
+    if [ -x /opt/SUNWspro/bin/cc ] &&
+       /opt/SUNWspro/bin/cc -flags >/dev/null 2>&1; then
+      : # use Sun WorkShop compiler
+    elif gcc --version >/dev/null 2>&1; then
+      archvariant=gcc$archvariant
+      compiletype=.gcc
+      if [ "$arch" = "sun4u" ]; then
+        ( cd /tmp; touch ppp$$.c
+         gcc -c -m64 ppp$$.c >/dev/null 2>&1 || (
+           echo "gcc is unable to make 64 bit modules, and your $arch system needs them."
+           echo "consider upgrading gcc on this machine, or switching to Sun WorkShop."
+           rm -f ppp$$.c
+           exit 1
+         ) || exit 1
+         rm -f ppp$$.c ppp$$.o
+        ) || exit 1
+      fi
+    else
+      echo "C compiler not found; hoping for the best."
+    fi;;
+  NetBSD|FreeBSD|ULTRIX|OSF1|NeXTStep|SINIX-?|UNIX_SV|UNIX_System_V)
+    state="notincluded";;
 #    NetBSD)
 #      makext="bsd";
 #      case $release in
@@ -111,26 +131,14 @@ case $state in
     echo "in this distribution.  Sorry.";;
 esac
 
-orig_makext=$makext
-
 if [ -d "$ksrc" ]; then
   echo "Creating links to Makefiles."
   rm -f Makefile
   ln -s $ksrc/Makefile.top Makefile
   echo "  Makefile -> $ksrc/Makefile.top"
-  if [ "$ksrc" = solaris ]; then
-    # Point to 64-bit Makefile extension
-    if [ "$lp64" = y ]; then 
-      makext=$makext-64 
-    fi
-    rm -f $ksrc/Makefile
-    ln -s Makefile.$makext $ksrc/Makefile
-    echo "  $ksrc/Makefile -> Makefile.$makext"
-    # Restore extension
-    if [ "$lp64" = y ]; then 
-      makext=$orig_makext 
-    fi
-  fi
+  rm -f Makedefs.com
+  ln -s $ksrc/Makedefs$compiletype Makedefs.com
+  echo "  $ksrc/Makedefs$compiletype -> Makedefs.com"
   for dir in pppd pppstats chat pppdump pppd/plugins pppd/plugins/rp-pppoe pppd/plugins/radius; do
     rm -f $dir/Makefile
     if [ -f $dir/Makefile.$makext ]; then
@@ -138,4 +146,13 @@ if [ -d "$ksrc" ]; then
       echo "  $dir/Makefile -> Makefile.$makext"
     fi
   done
+  if [ "$archvariant" ]; then
+    makext=$makext$archvariant
+    rm -f $ksrc/Makefile
+    ln -s Makefile.$makext $ksrc/Makefile
+    echo "  $ksrc/Makefile -> Makefile.$makext"
+  fi
+else
+  echo "Unable to locate kernel source $ksrc"
+  exit 1
 fi
index 7c475ef28536bed2e32fcfda39d86e2feefd3efb..87d0c1d37382e49f8db51621b57b462190aa5bb8 100644 (file)
@@ -24,7 +24,7 @@
  * OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
  * OR MODIFICATIONS.
  *
- * $Id: ppp_comp.c,v 1.12 1999/09/15 23:49:06 masputra Exp $
+ * $Id: ppp_comp.c,v 1.13 2002/09/07 05:15:25 carlsonj Exp $
  */
 
 /*
@@ -616,7 +616,7 @@ ppp_comp_wsrv(q)
         if (!bcanputnext(q,mp->b_band))
 #else
         if (!canputnext(q))
-#endif PRIOQ
+#endif /* PRIOQ */
        {
            putbq(q, mp);
            break;
@@ -694,7 +694,7 @@ ppp_comp_wsrv(q)
            if (cmp != NULL) {
 #ifdef PRIOQ
                cmp->b_band=mp->b_band;
-#endif PRIOQ
+#endif /* PRIOQ */
                freemsg(mp);
                mp = cmp;
            }
index 2f32aaf74da825044df64c8d4584292d7dd95d5e..83b23af80251c4c5c3605df2e2a2cd9cb8d47af6 100644 (file)
@@ -1,11 +1,10 @@
 #
 # Makefile for pppd under Solaris 2.
-# $Id: Makefile.sol2,v 1.21 2002/05/21 17:26:48 dfs Exp $
+# $Id: Makefile.sol2,v 1.22 2002/09/07 05:15:25 carlsonj Exp $
 #
 
-include ../solaris/Makedefs
+include ../Makedefs.com
 
-COPTS  += -xO2 -xspace -W0,-Lt
 CFLAGS =  -I../include -DSVR4 -DSOL2 $(COPTS)
 LIBS   = -lsocket -lnsl
 
index 5073ed795067d2d41b8b59d77409759a73516b97..d17df58709e70afe15af92156521603b8fbdebcc 100644 (file)
@@ -17,7 +17,7 @@
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  */
 
-#define RCSID  "$Id: options.c,v 1.85 2002/07/18 15:25:04 dfs Exp $"
+#define RCSID  "$Id: options.c,v 1.86 2002/09/07 05:15:25 carlsonj Exp $"
 
 #include <ctype.h>
 #include <stdio.h>
@@ -902,7 +902,9 @@ print_option(opt, mainopt, printer, arg)
                        void (*oprt) __P((option_t *,
                                          void ((*)__P((void *, char *, ...))),
                                          void *));
-                       oprt = opt->addr2;
+                       oprt = (void (*) __P((option_t *,
+                                        void ((*)__P((void *, char *, ...))),
+                                        void *)))opt->addr2;
                        (*oprt)(opt, printer, arg);
                } else if (opt->flags & OPT_A2STRVAL) {
                        p = (char *) opt->addr2;
index ee04761a094f838efedbca7adf099ee05b0f3f36..bc7d85d367f55f1fcc82552ce60fa32652aeff1a 100644 (file)
@@ -1,10 +1,10 @@
 #
 # Makefile for plugins on Solaris 2
 #
-# $Id: Makefile.sol2,v 1.2 1999/11/17 03:49:27 paulus Exp $
+# $Id: Makefile.sol2,v 1.3 2002/09/07 05:15:25 carlsonj Exp $
 #
 
-include ../../svr4/Makedefs
+include ../../Makedefs.com
 
 CFLAGS = -c -O -I.. -I../../include $(COPTS)
 LDFLAGS        = -G 
index 1a5a10991325c97186f113dc7c60ab4be0f81e05..fde104bc1b06a9fc74bf3b7f24d23f5bc10886b2 100644 (file)
@@ -16,7 +16,7 @@
  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  *
- * $Id: pppd.h,v 1.72 2002/09/01 12:00:15 dfs Exp $
+ * $Id: pppd.h,v 1.73 2002/09/07 05:15:25 carlsonj Exp $
  */
 
 /*
@@ -79,7 +79,7 @@ typedef struct {
        enum opt_type type;
        void    *addr;
        char    *description;
-       int     flags;
+       unsigned int flags;
        void    *addr2;
        int     upper_limit;
        int     lower_limit;
@@ -120,7 +120,7 @@ typedef struct {
 #define OPT_A2PRINTER  0x10000000 /* *addr2 is a fn for printing option */
 #define OPT_A2STRVAL   0x20000000 /* *addr2 points to current string value */
 #define OPT_NOPRINT    0x40000000 /* don't print this option at all */
-#define OPT_A3OR       0x80000000 /* addr3 -> third location to rcv | value */
+#define OPT_A3OR       0x80000000u /* addr3 -> third location to rcv | value */
 
 #define OPT_VAL(x)     ((x) & OPT_VALUE)
 
index dc2fe2bc20aab2c6ea72ea63a0194b941afbf7c7..f97b82bbc369247f7df05f2d31ea180d9a6d43dc 100644 (file)
  * OR MODIFICATIONS.
  */
 
-#define RCSID  "$Id: sys-solaris.c,v 1.7 2002/02/12 20:07:09 dfs Exp $"
+#define RCSID  "$Id: sys-solaris.c,v 1.8 2002/09/07 05:15:25 carlsonj Exp $"
 
 #include <limits.h>
 #include <stdio.h>
 #include <stddef.h>
 #include <stdlib.h>
+#include <string.h>
 #include <ctype.h>
 #include <errno.h>
 #include <fcntl.h>
index 5549bebdc827a7ae6ab9c7a1ebdeedd8e93e2933..e9196f634d5b72e07ecead0a09e302d8c0df0ee6 100644 (file)
@@ -1,9 +1,9 @@
 #
 # pppdump Makefile for SVR4 systems
-# $Id: Makefile.sol2,v 1.3 2000/04/18 23:51:27 masputra Exp $
+# $Id: Makefile.sol2,v 1.4 2002/09/07 05:15:25 carlsonj Exp $
 #
 
-include ../solaris/Makedefs
+include ../Makedefs.com
 
 CFLAGS= $(COPTS) -I../include/net
 OBJS = pppdump.o bsd-comp.o deflate.o zlib.o
index ace1a24e35cf5231df1c69415f5a74c3f61eb7b2..e0093a52f8f48616bfc48f5f7f0e51772b278f73 100644 (file)
@@ -1,9 +1,9 @@
 #
 # pppstats Makefile for SVR4 systems
-# $Id: Makefile.sol2,v 1.9 2000/04/18 23:51:27 masputra Exp $
+# $Id: Makefile.sol2,v 1.10 2002/09/07 05:15:25 carlsonj Exp $
 #
 
-include ../solaris/Makedefs
+include ../Makedefs.com
 
 CFLAGS = -DSTREAMS -I../include $(COPTS)
 
index 81db8ab2e83cbb561599bc1e6dd7310173901e30..f5ac9c7bde0b4d59a7371a9590707fe5fed4c39f 100644 (file)
@@ -8,9 +8,5 @@ BINDIR = /usr/local/bin
 MANDIR = /usr/local/man
 ETCDIR = /etc/ppp
 
+CC = /opt/SUNWspro/bin/cc
 COPTS = -O -Xa
-
-# For compiling with gcc, comment out the COPTS definition above and
-# uncomment the next 2 definitions.
-#CC = gcc
-#COPTS = -O2
diff --git a/solaris/Makedefs.gcc b/solaris/Makedefs.gcc
new file mode 100644 (file)
index 0000000..e24152f
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# defines common to several Makefiles
+#
+
+INSTALL= /usr/sbin/install
+
+BINDIR = /usr/local/bin
+MANDIR = /usr/local/man
+ETCDIR = /etc/ppp
+
+CC = gcc
+COPTS = -O2
index ee57da0cbea7c5f5e9454117391fd495540194d2..a0417bde5027c00a0cc97b26e0f9aa357af0925a 100644 (file)
@@ -1,10 +1,10 @@
 #
 # Generic make definitions for Solaris 2
 #
-# $Id: Makedefs.sol2,v 1.1 2000/04/18 23:51:27 masputra Exp $
+# $Id: Makedefs.sol2,v 1.2 2002/09/07 05:15:25 carlsonj Exp $
 #
 
-include ../solaris/Makedefs
+include ../Makedefs.com
 
 CPPFLAGS       = -D_KERNEL -DSVR4 -DSOL2 -DPRIOQ -DDEBUG -I../include
 CFLAGS         = $(CPPFLAGS) $(COPTS)
diff --git a/solaris/Makefile.sol2gcc b/solaris/Makefile.sol2gcc
new file mode 100644 (file)
index 0000000..0eb97ad
--- /dev/null
@@ -0,0 +1,64 @@
+#
+# Makefile for STREAMS modules for Solaris 2.
+#
+# $Id: Makefile.sol2gcc,v 1.1 2002/09/07 05:15:25 carlsonj Exp $
+#
+
+include Makedefs.sol2
+
+COMP_OBJS = ppp_comp.o bsd-comp.o deflate.o zlib.o vjcompress.o \
+       ppp_comp_mod.o
+
+all:   ppp ppp_ahdl ppp_comp
+
+ppp:   ppp.o ppp_mod.o
+       ld -r -o $@ ppp.o ppp_mod.o
+       chmod +x $@
+
+ppp_ahdl: ppp_ahdlc.o ppp_ahdlc_mod.o
+       ld -r -o $@ ppp_ahdlc.o ppp_ahdlc_mod.o
+       chmod +x $@
+
+ppp_comp: $(COMP_OBJS)
+       ld -r -o $@ $(COMP_OBJS)
+       chmod +x $@
+
+bsd-comp.o:    ../modules/bsd-comp.c
+       $(CC) $(CFLAGS) -c $?
+deflate.o:     ../modules/deflate.c
+       $(CC) $(CFLAGS) -c $?
+ppp.o: ppp.c
+       $(CC) $(CFLAGS) -c $?
+ppp_mod.o:     ppp_mod.c
+       $(CC) $(CFLAGS) -c $?
+ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
+       $(CC) $(CFLAGS) -c $?
+ppp_ahdlc.o: ppp_ahdlc.c
+       $(CC) $(CFLAGS) -c $?
+ppp_comp.o: ppp_comp.c
+       $(CC) $(CFLAGS) -c $?
+ppp_comp_mod.o:        ppp_comp_mod.c
+       $(CC) $(CFLAGS) -c $?
+vjcompress.o:  ../modules/vjcompress.c
+       $(CC) $(CFLAGS) -c $?
+zlib.o:        ../common/zlib.c
+       $(CC) $(CFLAGS) -c $?
+
+install:
+       cp ppp ppp.conf /kernel/drv
+       cp ppp_comp ppp_ahdl /kernel/strmod
+       if grep clone:ppp /etc/minor_perm; then :; else \
+         echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
+       /usr/sbin/rem_drv ppp 2>/dev/null || true
+       /usr/sbin/add_drv ppp
+
+SRCS   = ppp.c ppp_mod.c ppp_ahdlc.c ppp_ahdlc_mod.c \
+       ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
+       ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
+
+lint:
+       $(LINT32) $(SRCS)
+
+clean:
+       rm -f ppp ppp_comp ppp_ahdl *.o *~ core
+       rm -f *.ln
diff --git a/solaris/Makefile.sol2gcc-64 b/solaris/Makefile.sol2gcc-64
new file mode 100644 (file)
index 0000000..f826f1a
--- /dev/null
@@ -0,0 +1,85 @@
+#
+# Makefile for 64-bit STREAMS modules for Solaris 2.
+#
+# $Id: Makefile.sol2gcc-64,v 1.1 2002/09/07 05:15:25 carlsonj Exp $
+#
+
+include Makedefs.sol2
+
+# gcc flags for LP64 compilation / linkage
+COPTS           += -mcpu=v9 -m64 -mcmodel=medlow -mstack-bias -fno-builtin
+
+# subdirectory where 64-bit objects / binaries will be placed
+LP64DIR                = sparcv9
+
+# Name of legacy Makefile (for 32-bit binaries)
+STD_MAKE       = Makefile.sol2gcc
+
+COMP_OBJS      = $(LP64DIR)/ppp_comp.o $(LP64DIR)/bsd-comp.o \
+               $(LP64DIR)/deflate.o $(LP64DIR)/zlib.o $(LP64DIR)/vjcompress.o \
+               $(LP64DIR)/ppp_comp_mod.o
+
+all:   std_objs $(LP64DIR) ppp ppp_ahdl ppp_comp
+
+std_objs:
+       $(MAKE) -f $(STD_MAKE) all
+
+ppp:   $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
+       ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp.o $(LP64DIR)/ppp_mod.o
+       chmod +x $(LP64DIR)/$@
+
+ppp_ahdl: $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
+       ld -r -o $(LP64DIR)/$@ $(LP64DIR)/ppp_ahdlc.o $(LP64DIR)/ppp_ahdlc_mod.o
+       chmod +x $(LP64DIR)/$@
+
+ppp_comp: $(COMP_OBJS)
+       ld -r -o $(LP64DIR)/$@ $(COMP_OBJS)
+       chmod +x $(LP64DIR)/$@
+
+$(LP64DIR)/bsd-comp.o: ../modules/bsd-comp.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/deflate.o: ../modules/deflate.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp.o:      ppp.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp_mod.o:  ppp_mod.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp_ahdlc_mod.o: ppp_ahdlc_mod.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp_ahdlc.o: ppp_ahdlc.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp_comp.o: ppp_comp.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/ppp_comp_mod.o: ppp_comp_mod.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/vjcompress.o: ../modules/vjcompress.c
+       $(CC) $(CFLAGS) -c $? -o $@
+$(LP64DIR)/zlib.o:     ../common/zlib.c
+       $(CC) $(CFLAGS) -c $? -o $@
+
+$(LP64DIR):
+       mkdir -m 755 -p $@
+
+install:
+       cp ppp ppp.conf /kernel/drv
+       cp ppp_comp ppp_ahdl /kernel/strmod
+       cp $(LP64DIR)/ppp /kernel/drv/$(LP64DIR)
+       cp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl /kernel/strmod/$(LP64DIR)
+       if grep clone:ppp /etc/minor_perm; then :; else \
+         echo clone:ppp 0644 root sys >>/etc/minor_perm; fi
+       /usr/sbin/rem_drv ppp 2>/dev/null || true
+       /usr/sbin/add_drv ppp
+
+SRCS   = ppp.c ppp_mod.c ppp_ahdlc.c ppp_ahdlc_mod.c \
+       ppp_comp.c ../modules/bsd-comp.c ../modules/deflate.c \
+       ../common/zlib.c ../modules/vjcompress.c ppp_comp_mod.c
+
+lint:
+       $(LINT64) $(SRCS)
+
+lint-32:
+       $(LINT32) $(SRCS)
+
+clean:
+       $(MAKE) -f $(STD_MAKE) clean
+       rm -f $(LP64DIR)/ppp $(LP64DIR)/ppp_comp $(LP64DIR)/ppp_ahdl $(LP64DIR)/*.o $(LP64DIR)/*~ $(LP64DIR)/core