Subject: [PATCH] build system for NetBSD
From: Johnny C. Lam (lamj@stat.cmu.edu)
Date: Tue Feb 29 2000 - 11:38:39 CST
The following adds support for building under NetBSD.  The patch is
relative to the abi-0.7.8 source tree.  Please consider its inclusion
for the next release of AbiWord.
        Cheers,
     -- Johnny C. Lam <lamj@stat.cmu.edu>
        Department of Statistics, Carnegie Mellon University
        http://www.stat.cmu.edu/~lamj/
--- src/config/abi_defs.mk.orig	Tue Jan 11 06:46:50 2000
+++ src/config/abi_defs.mk	Tue Feb 29 12:05:03 2000
@@ -353,14 +353,18 @@
 
 ifeq ($(ABI_NATIVE),unix)
 ifdef ABI_OPT_GNOME
-CFLAGS 		+=	`$(GNOME_CONFIG) --cflags gnorba gnomeui` -DHAVE_GNOME
-EXTRA_LIBS	+=	`$(GNOME_CONFIG) --libs gnorba gnomeui`
+GNOME_CFLAGS	:=	$(shell $(GNOME_CONFIG) --cflags gnorba gnomeui)
+GNOME_LIBS	:=	$(shell $(GNOME_CONFIG) --libs gnorba gnomeui)
+CFLAGS 		+=	$(GNOME_CFLAGS) -DHAVE_GNOME
+EXTRA_LIBS	+=	$(GNOME_LIBS)
 ABI_GNOME_DIR		= gnome
 ABI_GNOME_PREFIX	= Gnome
 ABI_OPTIONS+=Gnome:On
 else
-CFLAGS 		+=	`$(GTK_CONFIG) --cflags`
-EXTRA_LIBS	+=	`$(GTK_CONFIG) --libs`
+GTK_CFLAGS	:=	$(shell $(GTK_CONFIG) --cflags)
+GTK_LIBS	:=	$(shell $(GTK_CONFIG) --libs)
+CFLAGS 		+=	$(GTK_CFLAGS)
+EXTRA_LIBS	+=	$(GTK_LIBS)
 ABI_OPTIONS+=Gnome:Off
 endif
 endif
--- src/config/platforms/netbsd.mk.orig	Sun Dec 12 10:07:09 1999
+++ src/config/platforms/netbsd.mk	Tue Feb 29 12:05:03 2000
@@ -30,8 +30,13 @@
 ## compiler/loader options are used.  It will probably also be used
 ## in constructing the name object file destination directory.
 
-OS_ARCH		:= $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/ | sed "s/\//-/")
+OS_ARCH		:= $(shell uname -m)
+
+ifneq (,$(shell $(CC) -E - -dM </usr/include/machine/endian.h | grep BYTE_ORDER.*LITTLE_ENDIAN))
 OS_ENDIAN	= LittleEndian32
+else
+OS_ENDIAN	= BigEndian32
+endif
 
 # Define tools
 CC		= gcc
@@ -65,17 +70,20 @@
 endif
 
 # Includes
-OS_INCLUDES		=
+OS_INCLUDES		+=
 G++INCLUDES		= -I/usr/include/g++
 
 # Compiler flags
 PLATFORM_FLAGS		= -pipe -DNETBSD -DNetBSD
 PORT_FLAGS		= -DHAVE_STRERROR
-OS_CFLAGS		= $(DSO_CFLAGS) $(PLATFORM_FLAGS) $(PORT_FLAGS)
+OS_CFLAGS		+= $(DSO_CFLAGS) $(PLATFORM_FLAGS) $(PORT_FLAGS)
 
 PLATFORM_FLAGS		+= 
 PORT_FLAGS		+= 
 
+# Linker flags
+OS_DLLFLAGS		+=
+
 GLIB_CONFIG		= glib-config
 GTK_CONFIG		= gtk-config
 GNOME_CONFIG    	= gnome-config
@@ -101,5 +109,12 @@
 
 ABI_NATIVE	= unix
 ABI_FE		= Unix
+
+##################################################################
+## ABIPKGDIR defines the directory containing the Makefile to use to
+## build a set of distribution archives (.deb, .rpm, .tgz, .exe, etc)
+## This is relative to $(ABI_ROOT)/src/pkg
+
+ABIPKGDIR	= netbsd
 
 # End of NetBSD defs
--- src/config/require/unix/Makefile.orig	Tue Feb  1 18:55:24 2000
+++ src/config/require/unix/Makefile	Tue Feb 29 12:05:03 2000
@@ -74,7 +74,9 @@
 
 _ZLIB_:
         @if [    -r /usr/lib/libz.a				\
+	      -o -r ${LOCALBASE}/lib/libz.a			\
               -o -r /usr/local/lib/libz.a			\
+	      -o -r ${X11BASE}/lib/libz.a			\
               -o -r /usr/X11R6/lib/libz.a			\
             ]; then						\
                 echo Found zlib in system directories;		\
@@ -90,7 +92,9 @@
 
 _LIBPNG_:
         @if [    -r /usr/lib/libpng.a				\
+	      -o -r ${LOCALBASE}/lib/libpng.a			\
               -o -r /usr/local/lib/libpng.a			\
+	      -o -r ${X11BASE}/lib/libpng.a			\
               -o -r /usr/X11R6/lib/libpng.a			\
             ]; then						\
                 echo Found libpng in system directories;	\
--- src/hello/main/unix/Makefile.orig	Mon Dec 13 16:10:25 1999
+++ src/hello/main/unix/Makefile	Tue Feb 29 12:05:03 2000
@@ -24,7 +24,7 @@
 
 CPPSRCS=		UnixMain.cpp
 
-INCLUDES=		`gtk-config --cflags`
+INCLUDES=		$(GTK_CFLAGS)
 
 PROGRAM=		AbiHello
 
--- src/pkg/common/unix/scripts/install.sh.orig	Wed Jun  2 16:19:32 1999
+++ src/pkg/common/unix/scripts/install.sh	Tue Feb 29 12:17:41 2000
@@ -2,14 +2,14 @@
 #
 # This script is invoked by the Makefiles when the "install" target
 # is specified.  It just puts things where most users will probably
-# be happy, in $TARGET, with symbolic links (in $BINDIR) to the binaries
-# in $TARGET/bin
+# be happy, in $TARGET, with the binaries in $LIBEXECDIR, with
+# symbolic links (in $BINDIR) to the binaries in $LIBEXECDIR.
 # 
 # $SRCDIR should be the place where the compile process (the "canonical"
 # target especially) put all the stuff.  $SCRIPTDIR should be set by the 
 # caller so we can know where we are.  $BINDIR is where the symbolic
-# links are eventually installed, to point to the "bin/*" files within
-# $TARGET/bin
+# links are eventually installed, to point to the executable files within
+# $LIBEXECDIR
 
 # if no target, bail
 if [ -z "$TARGET" ]
@@ -52,6 +52,21 @@
     exit 1
 fi
 
+# Make sure the libexec dir exists
+if [ -z "$LIBEXECDIR" ]
+then
+    LIBEXECDIR=${TARGET}/bin
+fi
+mkdir -p $LIBEXECDIR
+
+if [ ! -d $LIBEXECDIR ]
+then
+    echo ""
+    echo "Error creating directory [$LIBEXECDIR]."
+    echo ""
+    exit 1
+fi
+
 # start with breathing room
 echo ""
 
@@ -63,9 +78,9 @@
 # Copy the files from $SRCDIR to $TARGET
 (cd $SRCDIR/AbiSuite; tar cf - *) | (cd $TARGET; tar xf -)
 
-echo "Installing program binaries to [$TARGET/bin]..."
+echo "Installing program binaries to [$LIBEXECDIR]..."
 # Setup bins 
-(cd $SRCDIR; tar cf - bin/Abi*) | (cd $TARGET; tar xf -)
+(cd $SRCDIR/bin; tar cf - Abi*) | (cd $LIBEXECDIR; tar xf -)
 
 ########################################################################
 # If we're on Solaris, run makepsres on the font path
@@ -91,10 +106,10 @@
 cd $SCRIPTDIR
 
 echo "Making wrapper script at [$TARGET/bin/AbiWord]..."
-./makewrapper.sh AbiWord $TARGET
+./makewrapper.sh AbiWord $TARGET $LIBEXECDIR
 # TODO : make use of these
-# ./makewrapper.sh AbiCalc $TARGET
-# ./makewrapper.sh AbiFile $TARGET
+# ./makewrapper.sh AbiCalc $TARGET $LIBEXECDIR
+# ./makewrapper.sh AbiFile $TARGET $LIBEXECDIR
 
 
 ########################################################################
@@ -107,12 +122,12 @@
 
 # NOTE : Solaris ln doesn't seem to honor the -f (force flag), so
 # NOTE : we have to remove them first.
-rm -f $BINDIR/AbiWord ; ln -s $TARGET/bin/AbiWord $BINDIR/AbiWord
-rm -f $BINDIR/abiword ; ln -s $TARGET/bin/AbiWord $BINDIR/abiword
+rm -f $BINDIR/AbiWord ; ln -s $LIBEXECDIR/AbiWord $BINDIR/AbiWord
+rm -f $BINDIR/abiword ; ln -s $LIBEXECDIR/AbiWord $BINDIR/abiword
 
 # TODO : make use of these, etc.
-# rm -f $BINDIR/AbiCalc ; ln -s $TARGET/bin/AbiCalc $LINK_DIR/AbiCalc
-# rm -f $BINDIR/abicalc ; ln -s $TARGET/bin/AbiCalc $LINK_DIR/abicalc
+# rm -f $BINDIR/AbiCalc ; ln -s $LIBEXECDIR/AbiCalc $LINK_DIR/AbiCalc
+# rm -f $BINDIR/abicalc ; ln -s $LIBEXECDIR/AbiCalc $LINK_DIR/abicalc
 
 ########################################################################
 # Done
--- src/pkg/common/unix/scripts/makewrapper.sh.orig	Thu Jun 24 16:54:37 1999
+++ src/pkg/common/unix/scripts/makewrapper.sh	Tue Feb 29 12:19:00 2000
@@ -3,15 +3,16 @@
 # This script is invoked to create wrapper scripts for AbiSuite
 # binaries.  One should pass it the _base_ name of the program
 # to wrap (one would pass "AbiWord" to wrap "AbiWord_s" and 
-# "AbiWord_d"), and the install base of the tree, to which "bin"
-# will be appended for binary and script locations.
+# "AbiWord_d"), the install base of the tree and, optionally, the location
+# of the machine-dependent binaries and scripts.
 
 # Examples:
-#     makewrapper.sh AbiWord /usr/local/AbiSuite
-#     makewrapper.sh AbiCalc /usr/local/AbiSuite
+#     makewrapper.sh AbiWord /usr/local/AbiSuite /usr/local/libexec/AbiSuite
+#     makewrapper.sh AbiCalc /usr/local/AbiSuite /usr/local/libexec/AbiSuite
 
 PROGRAM_NAME=$1
 INSTALL_BASE=$2
+LIBEXECDIR=$3
 
 # Did they supply any arguments?
 if [ -z "$PROGRAM_NAME" ]
@@ -28,11 +29,15 @@
     echo ""
     exit 1
 fi
+if [ -z "$LIBEXECDIR" ]
+then
+    LIBEXECDIR=${INSTALL_BASE}/bin
+fi
 
 # Make directory path up to program we're creating
-mkdir -p $INSTALL_BASE/bin
+mkdir -p $LIBEXECDIR
 
-cat >$INSTALL_BASE/bin/$PROGRAM_NAME<<EOF
+cat >$LIBEXECDIR/$PROGRAM_NAME<<EOF
 #!/bin/sh
 #
 # AbiSuite program wrapper script, dynamically generated
@@ -42,6 +47,9 @@
 ABISUITE_HOME=$INSTALL_BASE
 export ABISUITE_HOME
 
+# Change this if you move the AbiSuite binaries.
+ABISUITE_LIBEXEC=$LIBEXECDIR
+
 # Change this if you move your fonts.
 ABISUITE_FONT_HOME=\$ABISUITE_HOME/fonts
 
@@ -52,18 +60,18 @@
 fi
 
 # Figure out which binary to run
-if [ -f \$ABISUITE_HOME/bin/${PROGRAM_NAME}_d ]
+if [ -f \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_d ]
 then
-    \$ABISUITE_HOME/bin/${PROGRAM_NAME}_d "\$@"
-elif [ -f \$ABISUITE_HOME/bin/${PROGRAM_NAME}_s ]
+    \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_d "\$@"
+elif [ -f \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_s ]
 then
-    \$ABISUITE_HOME/bin/${PROGRAM_NAME}_s "\$@"
+    \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_s "\$@"
 else
     echo ""
     echo "Error: can't find ${PROGRAM_NAME} executables:"
-    echo "    \$ABISUITE_HOME/bin/${PROGRAM_NAME}_d"
+    echo "    \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_d"
     echo "    -or-"
-    echo "    \$ABISUITE_HOME/bin/${PROGRAM_NAME}_s"
+    echo "    \$ABISUITE_LIBEXEC/${PROGRAM_NAME}_s"
     echo ""
     exit
 fi
@@ -75,6 +83,6 @@
 fi
 EOF
 
-chmod 755 ${INSTALL_BASE}/bin/$PROGRAM_NAME
+chmod 755 ${LIBEXECDIR}/$PROGRAM_NAME
 
 
--- src/wp/main/unix/Makefile.orig	Mon Dec 13 16:10:26 1999
+++ src/wp/main/unix/Makefile	Tue Feb 29 12:05:03 2000
@@ -24,7 +24,7 @@
 
 CPPSRCS=		UnixMain.cpp
 
-INCLUDES=		`$(GTK_CONFIG) --cflags`
+INCLUDES=		$(GTK_CFLAGS)
 
 PROGRAM=		$(BINDIR)/AbiWord_d
 PROGRAM_S=		$(BINDIR)/AbiWord_s
--- src/wp/main/unix/gnome/Makefile.orig	Mon Dec 13 16:10:26 1999
+++ src/wp/main/unix/gnome/Makefile	Tue Feb 29 12:05:03 2000
@@ -24,7 +24,7 @@
 
 CPPSRCS=		UnixGnomeMain.cpp
 
-INCLUDES=		`$(GNOME_CONFIG) gnomeui --cflags`
+INCLUDES=		$(GNOME_CFLAGS)
 
 PROGRAM=		$(BINDIR)/AbiWord_d
 PROGRAM_S=		$(BINDIR)/AbiWord_s
--- /dev/null	Tue Feb 29 11:59:52 2000
+++ src/pkg/netbsd/Makefile	Tue Feb 29 12:35:49 2000
@@ -0,0 +1,9 @@
+ABI_ROOT:=$(shell pwd)/../../..
+include $(ABI_ROOT)/src/config/abi_defs_wp.mk
+include $(ABI_ROOT)/src/config/abi_rules.mk
+
+# The plain "install" common to all Unix targets
+install:
+	@TARGET=$(prefix)/AbiSuite BINDIR=$(prefix)/bin SRCDIR=$(OUTDIR) \
+		SCRIPTDIR=$(ABI_ROOT)/src/pkg/common/unix/scripts \
+		$(ABI_ROOT)/src/pkg/common/unix/scripts/install.sh
This archive was generated by hypermail 2b25 : Tue Feb 29 2000 - 11:38:42 CST