summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--c/Makefile.in9
-rw-r--r--c/src/exec/score/cpu/i386/cpu.h2
-rw-r--r--c/src/lib/Makefile.in10
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/Makefile.in9
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/network/Makefile.in3
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/network/network.c911
-rw-r--r--c/src/lib/libbsp/m68k/gen68360/wrapup/Makefile.in8
-rw-r--r--c/src/lib/wrapup/Makefile.in1
-rw-r--r--c/src/make/compilers/gcc-target-default.cfg8
-rw-r--r--c/src/wrapup/Makefile.in1
-rw-r--r--configure282
-rw-r--r--configure.in20
-rw-r--r--make/compilers/gcc-target-default.cfg8
-rw-r--r--make/custom/FreeBSD-posix.cfg4
-rw-r--r--make/custom/HPUX9-posix.cfg4
-rw-r--r--make/custom/Linux-posix.cfg4
-rw-r--r--make/custom/Solaris-posix.cfg4
-rw-r--r--make/custom/cvme961.cfg4
-rw-r--r--make/custom/default.cfg9
-rw-r--r--make/custom/dmv152.cfg4
-rw-r--r--make/custom/efi332.cfg4
-rw-r--r--make/custom/efi68k.cfg4
-rw-r--r--make/custom/erc32.cfg4
-rw-r--r--make/custom/force386.cfg4
-rw-r--r--make/custom/gen68302.cfg4
-rw-r--r--make/custom/gensh1.cfg4
-rw-r--r--make/custom/go32.cfg4
-rw-r--r--make/custom/i386ex.cfg4
-rw-r--r--make/custom/idp.cfg4
-rw-r--r--make/custom/mvme136.cfg4
-rw-r--r--make/custom/mvme147.cfg4
-rw-r--r--make/custom/mvme162.cfg4
-rw-r--r--make/custom/no_bsp.cfg4
-rw-r--r--make/custom/ods68302.cfg4
-rw-r--r--make/custom/p4000.cfg4
-rw-r--r--make/custom/p4600.cfg4
-rw-r--r--make/custom/p4650.cfg4
-rw-r--r--make/custom/papyrus.cfg4
-rw-r--r--make/custom/portsw.cfg4
-rw-r--r--make/custom/psim.cfg4
-rw-r--r--make/custom/simhppa.cfg4
-rw-r--r--make/target.cfg.in1
42 files changed, 832 insertions, 558 deletions
diff --git a/c/Makefile.in b/c/Makefile.in
index 6fd1960f5b..d53908a4be 100644
--- a/c/Makefile.in
+++ b/c/Makefile.in
@@ -29,6 +29,14 @@ SUB_DIRS=build-tools src
LIBKA9Q_yes_V = lib/include/ka9q
LIBKA9Q = $(LIBKA9Q_$(HAS_KA9Q)_V)
+# We only make the install point for the KA9Q header files if it is enabled.
+LIBNETWORKING_yes_V = lib/include/networking lib/include/networking/sys \
+ lib/include/networking/machine lib/include/networking/rtems \
+ lib/include/networking/vm lib/include/networking/net \
+ lib/include/networking/netinet lib/include/networking/arpa \
+ lib/include/networking/nfs
+LIBNETWORKING = $(LIBNETWORKING_$(HAS_NETWORKING)_V)
+
# We only make the rtems++ install point if it is enabled.
LIBRTEMSCPLUSPLUS_yes_V = lib/include/rtems++
LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
@@ -40,6 +48,7 @@ CREATE_DIRS = \
lib/include/netinet lib/include/libc lib/include/libc/sys \
lib/include/motorola lib/include/zilog \
$(LIBKA9Q) \
+ $(LIBNETWORKING) \
$(LIBRTEMSCPLUSPLUS) \
bin samples \
tests tests/screens tests/screens/sptests \
diff --git a/c/src/exec/score/cpu/i386/cpu.h b/c/src/exec/score/cpu/i386/cpu.h
index 9785730000..7af6bebfad 100644
--- a/c/src/exec/score/cpu/i386/cpu.h
+++ b/c/src/exec/score/cpu/i386/cpu.h
@@ -64,7 +64,7 @@ extern "C" {
#define CPU_IDLE_TASK_IS_FP FALSE
#define CPU_USE_DEFERRED_FP_SWITCH TRUE
-#define CPU_PROVIDES_IDLE_THREAD_BODY YES
+#define CPU_PROVIDES_IDLE_THREAD_BODY TRUE
#define CPU_STACK_GROWS_UP FALSE
#define CPU_STRUCTURE_ALIGNMENT
diff --git a/c/src/lib/Makefile.in b/c/src/lib/Makefile.in
index d2d137cddd..7f71ba0b55 100644
--- a/c/src/lib/Makefile.in
+++ b/c/src/lib/Makefile.in
@@ -15,6 +15,12 @@ include $(RTEMS_ROOT)/make/directory.cfg
LIBKA9Q_yes_V = libka9q
LIBKA9Q = $(LIBKA9Q_$(HAS_KA9Q)_V)
+# We only build the networking library if HAS_NETWORKING was defined
+LIBNETWORKING_yes_V = libnetworking
+LIBNETWORKING = $(LIBNETWORKING_$(HAS_NETWORKING)_V)
+NETWORKING_INCLUDE_yes_V = libnetworking/include
+NETWORKING_INCLUDE = $(NETWORKING_INCLUDE_$(HAS_NETWORKING)_V)
+
# We only build the rtems++ library if HAS_CPLUSPLUS was defined
LIBRTEMSCPLUSPLUS_yes_V = librtems++
LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
@@ -22,5 +28,5 @@ LIBRTEMSCPLUSPLUS = $(LIBRTEMSCPLUSPLUS_$(HAS_CPLUSPLUS)_V)
# General Hardware API library
LIBHWAPI=$(wildcard libhwapi)
-SUB_DIRS=start include libmisc libc libcpu libbsp \
- $(LIBKA9Q) $(LIBHWAPI) $(LIBRTEMSCPLUSPLUS) wrapup
+SUB_DIRS=start include $(NETWORKING_INCLUDE) libmisc libc libcpu libbsp \
+ $(LIBKA9Q) $(LIBNETWORKING) $(LIBHWAPI) $(LIBRTEMSCPLUSPLUS) wrapup
diff --git a/c/src/lib/libbsp/m68k/gen68360/Makefile.in b/c/src/lib/libbsp/m68k/gen68360/Makefile.in
index b5c08f7542..98cf93acef 100644
--- a/c/src/lib/libbsp/m68k/gen68360/Makefile.in
+++ b/c/src/lib/libbsp/m68k/gen68360/Makefile.in
@@ -14,11 +14,16 @@ include $(RTEMS_ROOT)/make/directory.cfg
SRCS=README
# We only build the ka9q device driver if HAS_KA9Q was defined
-KA9Q_DRIVER_yes_V = network
+KA9Q_DRIVER_yes_V = ka9q_network
KA9Q_DRIVER = $(KA9Q_DRIVER_$(HAS_KA9Q)_V)
+# We only build the networking device driver if HAS_NETWORKING was defined
+NETWORKING_DRIVER_yes_V = network
+NETWORKING_DRIVER = $(NETWORKING_DRIVER_$(HAS_NETWORKING)_V)
+
all: $(SRCS)
# wrapup is the one that actually builds and installs the library
# from the individual .rel files built in other directories
-SUB_DIRS=include start360 startup clock console timer $(KA9Q_DRIVER) wrapup
+SUB_DIRS=include start360 startup clock console timer \
+ $(KA9Q_DRIVER) $(NETWORKING_DRIVER) wrapup
diff --git a/c/src/lib/libbsp/m68k/gen68360/network/Makefile.in b/c/src/lib/libbsp/m68k/gen68360/network/Makefile.in
index 262e5be2b2..59728b648d 100644
--- a/c/src/lib/libbsp/m68k/gen68360/network/Makefile.in
+++ b/c/src/lib/libbsp/m68k/gen68360/network/Makefile.in
@@ -27,7 +27,8 @@ include $(RTEMS_ROOT)/make/leaf.cfg
# (OPTIONAL) Add local stuff here using +=
#
-DEFINES +=
+DEFINES += -D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS \
+ -DDIAGNOSTIC -DBOOTP_COMPAT
CPPFLAGS +=
CFLAGS +=
diff --git a/c/src/lib/libbsp/m68k/gen68360/network/network.c b/c/src/lib/libbsp/m68k/gen68360/network/network.c
index 5c9440cee6..73ff3fbddb 100644
--- a/c/src/lib/libbsp/m68k/gen68360/network/network.c
+++ b/c/src/lib/libbsp/m68k/gen68360/network/network.c
@@ -1,5 +1,5 @@
/*
- * RTEMS/KA9Q driver for M68360 SCC1 Ethernet
+ * RTEMS driver for M68360 SCC1 Ethernet
*
* W. Eric Norum
* Saskatchewan Accelerator Laboratory
@@ -11,15 +11,20 @@
*/
#include <bsp.h>
#include <m68360.h>
+#include <m68360.h>
+#include <stdarg.h>
#include <rtems/error.h>
-#include <ka9q/rtems_ka9q.h>
-#include <ka9q/global.h>
-#include <ka9q/enet.h>
-#include <ka9q/iface.h>
-#include <ka9q/netuser.h>
-#include <ka9q/trace.h>
-#include <ka9q/commands.h>
-#include <ka9q/domain.h>
+#include <rtems/rtems_bsdnet.h>
+
+#include <sys/param.h>
+#include <sys/mbuf.h>
+#include <sys/socket.h>
+#include <sys/sockio.h>
+
+#include <net/if.h>
+
+#include <netinet/in.h>
+#include <netinet/if_ether.h>
/*
* Number of SCCs supported by this driver
@@ -36,22 +41,34 @@
#define TX_BD_PER_BUF 4
/*
- * RTEMS event used by interrupt handler to signal daemons.
- * This must *not* be the same event used by the KA9Q task synchronization.
+ * RTEMS event used by interrupt handler to signal driver tasks.
+ * This must not be any of the events used by the network task synchronization.
*/
#define INTERRUPT_EVENT RTEMS_EVENT_1
/*
- * Receive buffer size -- Allow for a full ethernet packet plus a pointer
+ * RTEMS event used to start transmit daemon.
+ * This must not be the same as INTERRUPT_EVENT.
*/
-#define RBUF_SIZE (1520 + sizeof (struct iface *))
+#define START_TRANSMIT_EVENT RTEMS_EVENT_2
+
+/*
+ * Receive buffer size -- Allow for a full ethernet packet including CRC
+ */
+#define RBUF_SIZE 1520
+
+#if (MCLBYTES < RBUF_SIZE)
+# error "Driver must have MCLBYTES > RBUF_SIZE"
+#endif
/*
- * Hardware-specific storage
+ * Per-device data
*/
-struct m360EnetDriver {
+struct scc_softc {
+ struct arpcom arpcom;
struct mbuf **rxMbuf;
struct mbuf **txMbuf;
+ int acceptBroadcast;
int rxBdCount;
int txBdCount;
int txBdHead;
@@ -59,8 +76,8 @@ struct m360EnetDriver {
int txBdActiveCount;
m360BufferDescriptor_t *rxBdBase;
m360BufferDescriptor_t *txBdBase;
- struct iface *iface;
- rtems_id txWaitTid;
+ rtems_id rxDaemonTid;
+ rtems_id txDaemonTid;
/*
* Statistics
@@ -84,7 +101,7 @@ struct m360EnetDriver {
unsigned long txLostCarrier;
unsigned long txRawWait;
};
-static struct m360EnetDriver m360EnetDriver[NSCCDRIVER];
+static struct scc_softc scc_softc[NSCCDRIVER];
/*
* SCC1 interrupt handler
@@ -98,8 +115,8 @@ m360Enet_interrupt_handler (rtems_vector_number v)
if ((m360.scc1.sccm & 0x8) && (m360.scc1.scce & 0x8)) {
m360.scc1.scce = 0x8;
m360.scc1.sccm &= ~0x8;
- m360EnetDriver[0].rxInterrupts++;
- rtems_event_send (m360EnetDriver[0].iface->rxproc, INTERRUPT_EVENT);
+ scc_softc[0].rxInterrupts++;
+ rtems_event_send (scc_softc[0].rxDaemonTid, INTERRUPT_EVENT);
}
/*
@@ -108,8 +125,8 @@ m360Enet_interrupt_handler (rtems_vector_number v)
if ((m360.scc1.sccm & 0x12) && (m360.scc1.scce & 0x12)) {
m360.scc1.scce = 0x12;
m360.scc1.sccm &= ~0x12;
- m360EnetDriver[0].txInterrupts++;
- rtems_event_send (m360EnetDriver[0].txWaitTid, INTERRUPT_EVENT);
+ scc_softc[0].txInterrupts++;
+ rtems_event_send (scc_softc[0].txDaemonTid, INTERRUPT_EVENT);
}
m360.cisr = 1UL << 30; /* Clear SCC1 interrupt-in-service bit */
}
@@ -118,11 +135,11 @@ m360Enet_interrupt_handler (rtems_vector_number v)
* Initialize the ethernet hardware
*/
static void
-m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
+m360Enet_initialize_hardware (struct scc_softc *sc)
{
int i;
unsigned char *hwaddr;
- rtems_status_code sc;
+ rtems_status_code status;
rtems_isr_entry old_handler;
/*
@@ -148,16 +165,18 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
/*
* Allocate mbuf pointers
*/
- dp->rxMbuf = mallocw (dp->rxBdCount * sizeof *dp->rxMbuf);
- dp->txMbuf = mallocw (dp->txBdCount * sizeof *dp->txMbuf);
+ sc->rxMbuf = malloc (sc->rxBdCount * sizeof *sc->rxMbuf, M_MBUF, M_NOWAIT);
+ sc->txMbuf = malloc (sc->txBdCount * sizeof *sc->txMbuf, M_MBUF, M_NOWAIT);
+ if (!sc->rxMbuf || !sc->txMbuf)
+ rtems_panic ("No memory for mbuf pointers");
/*
* Set receiver and transmitter buffer descriptor bases
*/
- dp->rxBdBase = M360AllocateBufferDescriptors(dp->rxBdCount);
- dp->txBdBase = M360AllocateBufferDescriptors(dp->txBdCount);
- m360.scc1p.rbase = (char *)dp->rxBdBase - (char *)&m360;
- m360.scc1p.tbase = (char *)dp->txBdBase - (char *)&m360;
+ sc->rxBdBase = M360AllocateBufferDescriptors(sc->rxBdCount);
+ sc->txBdBase = M360AllocateBufferDescriptors(sc->txBdCount);
+ m360.scc1p.rbase = (char *)sc->rxBdBase - (char *)&m360;
+ m360.scc1p.tbase = (char *)sc->txBdBase - (char *)&m360;
/*
* Send "Init parameters" command
@@ -173,7 +192,7 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
/*
* Set maximum receive buffer length
*/
- m360.scc1p.mrblr = 1520;
+ m360.scc1p.mrblr = RBUF_SIZE;
/*
* Set CRC parameters
@@ -203,8 +222,8 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
*/
m360.scc1p.un.ethernet.mflr = 1518;
m360.scc1p.un.ethernet.minflr = 64;
- m360.scc1p.un.ethernet.maxd1 = 1520;
- m360.scc1p.un.ethernet.maxd2 = 1520;
+ m360.scc1p.un.ethernet.maxd1 = RBUF_SIZE;
+ m360.scc1p.un.ethernet.maxd2 = RBUF_SIZE;
/*
* Clear group address hash table
@@ -217,7 +236,7 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
/*
* Set our physical address
*/
- hwaddr = dp->iface->hwaddr;
+ hwaddr = sc->arpcom.ac_enaddr;
m360.scc1p.un.ethernet.paddr_h = (hwaddr[5] << 8) | hwaddr[4];
m360.scc1p.un.ethernet.paddr_m = (hwaddr[3] << 8) | hwaddr[2];
m360.scc1p.un.ethernet.paddr_l = (hwaddr[1] << 8) | hwaddr[0];
@@ -238,18 +257,18 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
/*
* Set up receive buffer descriptors
*/
- for (i = 0 ; i < dp->rxBdCount ; i++)
- (dp->rxBdBase + i)->status = 0;
+ for (i = 0 ; i < sc->rxBdCount ; i++)
+ (sc->rxBdBase + i)->status = 0;
/*
* Set up transmit buffer descriptors
*/
- for (i = 0 ; i < dp->txBdCount ; i++) {
- (dp->txBdBase + i)->status = 0;
- dp->txMbuf[i] = NULL;
+ for (i = 0 ; i < sc->txBdCount ; i++) {
+ (sc->txBdBase + i)->status = 0;
+ sc->txMbuf[i] = NULL;
}
- dp->txBdHead = dp->txBdTail = 0;
- dp->txBdActiveCount = 0;
+ sc->txBdHead = sc->txBdTail = 0;
+ sc->txBdActiveCount = 0;
/*
* Clear any outstanding events
@@ -259,12 +278,12 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
/*
* Set up interrupts
*/
- sc = rtems_interrupt_catch (m360Enet_interrupt_handler,
+ status = rtems_interrupt_catch (m360Enet_interrupt_handler,
(m360.cicr & 0xE0) | 0x1E,
&old_handler);
- if (sc != RTEMS_SUCCESSFUL)
+ if (status != RTEMS_SUCCESSFUL)
rtems_panic ("Can't attach M360 SCC1 interrupt handler: %s\n",
- rtems_status_text (sc));
+ rtems_status_text (status));
m360.scc1.sccm = 0; /* No interrupts unmasked till necessary */
m360.cimr |= (1UL << 30); /* Enable SCC1 interrupt */
@@ -297,7 +316,7 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
* Wait 22 bits before looking for start of frame delimiter
* Disable full-duplex operation
*/
- m360.scc1.psmr = 0x880A | (broadcastFlag ? 0 : 0x100);
+ m360.scc1.psmr = 0x880A | (sc->acceptBroadcast ? 0 : 0x100);
/*
* Enable the TENA (RTS1*) pin
@@ -309,11 +328,6 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
m360.pcpar |= 0x1;
m360.pcdir &= ~0x1;
#endif
-
- /*
- * Enable receiver and transmitter
- */
- m360.scc1.gsmr_l = 0x1088003c;
}
/*
@@ -325,16 +339,17 @@ m360Enet_initialize_hardware (struct m360EnetDriver *dp, int broadcastFlag)
* ready bit cleared by the CPM".
*/
static void
-m360Enet_retire_tx_bd (struct m360EnetDriver *dp)
+m360Enet_retire_tx_bd (struct scc_softc *sc)
{
rtems_unsigned16 status;
int i;
int nRetired;
+ struct mbuf *m, *n;
- i = dp->txBdTail;
+ i = sc->txBdTail;
nRetired = 0;
- while ((dp->txBdActiveCount != 0)
- && (((status = (dp->txBdBase + i)->status) & M360_BD_READY) == 0)) {
+ while ((sc->txBdActiveCount != 0)
+ && (((status = (sc->txBdBase + i)->status) & M360_BD_READY) == 0)) {
/*
* See if anything went wrong
*/
@@ -351,11 +366,11 @@ m360Enet_retire_tx_bd (struct m360EnetDriver *dp)
M360_BD_RETRY_LIMIT |
M360_BD_UNDERRUN)) {
if (status & M360_BD_LATE_COLLISION)
- m360EnetDriver[0].txLateCollision++;
+ scc_softc[0].txLateCollision++;
if (status & M360_BD_RETRY_LIMIT)
- m360EnetDriver[0].txRetryLimit++;
+ scc_softc[0].txRetryLimit++;
if (status & M360_BD_UNDERRUN)
- m360EnetDriver[0].txUnderrun++;
+ scc_softc[0].txUnderrun++;
/*
* Restart the transmitter
@@ -363,11 +378,11 @@ m360Enet_retire_tx_bd (struct m360EnetDriver *dp)
M360ExecuteRISC (M360_CR_OP_RESTART_TX | M360_CR_CHAN_SCC1);
}
if (status & M360_BD_DEFER)
- m360EnetDriver[0].txDeferred++;
+ scc_softc[0].txDeferred++;
if (status & M360_BD_HEARTBEAT)
- m360EnetDriver[0].txHeartbeat++;
+ scc_softc[0].txHeartbeat++;
if (status & M360_BD_CARRIER_LOST)
- m360EnetDriver[0].txLostCarrier++;
+ scc_softc[0].txLostCarrier++;
}
nRetired++;
if (status & M360_BD_LAST) {
@@ -375,181 +390,45 @@ m360Enet_retire_tx_bd (struct m360EnetDriver *dp)
* A full frame has been transmitted.
* Free all the associated buffer descriptors.
*/
- dp->txBdActiveCount -= nRetired;
+ sc->txBdActiveCount -= nRetired;
while (nRetired) {
nRetired--;
- free_mbuf (&dp->txMbuf[dp->txBdTail]);
- if (++dp->txBdTail == dp->txBdCount)
- dp->txBdTail = 0;
+ m = sc->txMbuf[sc->txBdTail];
+ MFREE (m, n);
+ if (++sc->txBdTail == sc->txBdCount)
+ sc->txBdTail = 0;
}
}
- if (++i == dp->txBdCount)
+ if (++i == sc->txBdCount)
i = 0;
}
}
/*
- * Send raw packet (caller provides header).
- * This code runs in the context of the interface transmit
- * task or in the context of the network task.
- */
-static int
-m360Enet_raw (struct iface *iface, struct mbuf **bpp)
-{
- struct m360EnetDriver *dp = &m360EnetDriver[iface->dev];
- struct mbuf *bp;
- volatile m360BufferDescriptor_t *firstTxBd, *txBd;
- rtems_unsigned16 status;
- int nAdded;
-
- /*
- * Fill in some logging data
- */
- iface->rawsndcnt++;
- iface->lastsent = secclock ();
- dump (iface, IF_TRACE_OUT, *bpp);
-
- /*
- * It would not do to have two tasks active in the transmit
- * loop at the same time.
- * The blocking is simple-minded since the odds of two tasks
- * simultaneously attempting to use this code are low. The only
- * way that two tasks can try to run here is:
- * 1) Task A enters this code and ends up having to
- * wait for a transmit buffer descriptor.
- * 2) Task B gains control and tries to transmit a packet.
- * The RTEMS/KA9Q scheduling semaphore ensures that there
- * are no race conditions associated with manipulating the
- * txWaitTid variable.
- */
- if (dp->txWaitTid) {
- dp->txRawWait++;
- while (dp->txWaitTid)
- rtems_ka9q_ppause (10);
- }
-
- /*
- * Free up buffer descriptors
- */
- m360Enet_retire_tx_bd (dp);
-
- /*
- * Set up the transmit buffer descriptors.
- * No need to pad out short packets since the
- * hardware takes care of that automatically.
- * No need to copy the packet to a contiguous buffer
- * since the hardware is capable of scatter/gather DMA.
- */
- bp = *bpp;
- nAdded = 0;
- txBd = firstTxBd = dp->txBdBase + dp->txBdHead;
- for (;;) {
- /*
- * Wait for buffer descriptor to become available.
- */
- if ((dp->txBdActiveCount + nAdded) == dp->txBdCount) {
- /*
- * Find out who we are
- */
- if (dp->txWaitTid == 0)
- rtems_task_ident (0, 0, &dp->txWaitTid);
-
- /*
- * Clear old events
- */
- m360.scc1.scce = 0x12;
-
- /*
- * Wait for buffer descriptor to become available.
- * Note that the buffer descriptors are checked
- * *before* * entering the wait loop -- this catches
- * the possibility that a buffer descriptor became
- * available between the `if' above, and the clearing
- * of the event register.
- * This is to catch the case where the transmitter
- * stops in the middle of a frame -- and only the
- * last buffer descriptor in a frame can generate
- * an interrupt.
- */
- m360Enet_retire_tx_bd (dp);
- while ((dp->txBdActiveCount + nAdded) == dp->txBdCount) {
- /*
- * Unmask TXB (buffer transmitted) and
- * TXE (transmitter error) events.
- */
- m360.scc1.sccm |= 0x12;
-
- rtems_ka9q_event_receive (INTERRUPT_EVENT,
- RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT);
- m360Enet_retire_tx_bd (dp);
- }
- }
-
- /*
- * Fill in the buffer descriptor
- */
- txBd->buffer = bp->data;
- txBd->length = bp->cnt;
- dp->txMbuf[dp->txBdHead] = bp;
-
- /*
- * Don't set the READY flag till the whole packet has been readied.
- */
- status = nAdded ? M360_BD_READY : 0;
- nAdded++;
- if (++dp->txBdHead == dp->txBdCount) {
- status |= M360_BD_WRAP;
- dp->txBdHead = 0;
- }
-
- /*
- * Set the transmit buffer status.
- * Break out of the loop if this mbuf is the last in the frame.
- */
- if ((bp = bp->next) == NULL) {
- status |= M360_BD_PAD | M360_BD_LAST | M360_BD_TX_CRC | M360_BD_INTERRUPT;
- txBd->status = status;
- firstTxBd->status |= M360_BD_READY;
- dp->txBdActiveCount += nAdded;
- break;
- }
- txBd->status = status;
- txBd = dp->txBdBase + dp->txBdHead;
- }
-
- /*
- * Show that we've finished with the packet
- */
- dp->txWaitTid = 0;
- *bpp = NULL;
- return 0;
-}
-
-/*
* SCC reader task
*/
static void
-m360Enet_rx (int dev, void *p1, void *p2)
+scc_rxDaemon (void *arg)
{
- struct iface *iface = (struct iface *)p1;
- struct m360EnetDriver *dp = (struct m360EnetDriver *)p2;
- struct mbuf *bp;
+ struct scc_softc *sc = (struct scc_softc *)arg;
+ struct ifnet *ifp = &sc->arpcom.ac_if;
+ struct mbuf *m;
rtems_unsigned16 status;
m360BufferDescriptor_t *rxBd;
int rxBdIndex;
- int continuousCount;
/*
* Allocate space for incoming packets and start reception
*/
for (rxBdIndex = 0 ; ;) {
- rxBd = dp->rxBdBase + rxBdIndex;
- dp->rxMbuf[rxBdIndex] = bp = ambufw (RBUF_SIZE);
- bp->data += sizeof (struct iface *);
- rxBd->buffer = bp->data;
+ rxBd = sc->rxBdBase + rxBdIndex;
+ MGETHDR (m, M_WAIT, MT_DATA);
+ MCLGET (m, M_WAIT);
+ m->m_pkthdr.rcvif = ifp;
+ sc->rxMbuf[rxBdIndex] = m;
+ rxBd->buffer = mtod (m, void *);
rxBd->status = M360_BD_EMPTY | M360_BD_INTERRUPT;
- if (++rxBdIndex == dp->rxBdCount) {
+ if (++rxBdIndex == sc->rxBdCount) {
rxBd->status |= M360_BD_WRAP;
break;
}
@@ -558,21 +437,15 @@ m360Enet_rx (int dev, void *p1, void *p2)
/*
* Input packet handling loop
*/
- continuousCount = 0;
rxBdIndex = 0;
for (;;) {
- rxBd = dp->rxBdBase + rxBdIndex;
+ rxBd = sc->rxBdBase + rxBdIndex;
/*
* Wait for packet if there's not one ready
*/
if ((status = rxBd->status) & M360_BD_EMPTY) {
/*
- * Reset `continuous-packet' count
- */
- continuousCount = 0;
-
- /*
* Clear old events
*/
m360.scc1.scce = 0x8;
@@ -585,14 +458,17 @@ m360Enet_rx (int dev, void *p1, void *p2)
* `if' above, and the clearing of the event register.
*/
while ((status = rxBd->status) & M360_BD_EMPTY) {
+ rtems_event_set events;
+
/*
* Unmask RXF (Full frame received) event
*/
m360.scc1.sccm |= 0x8;
- rtems_ka9q_event_receive (INTERRUPT_EVENT,
+ rtems_bsdnet_event_receive (INTERRUPT_EVENT,
RTEMS_WAIT|RTEMS_EVENT_ANY,
- RTEMS_NO_TIMEOUT);
+ RTEMS_NO_TIMEOUT,
+ &events);
}
}
@@ -610,56 +486,49 @@ m360Enet_rx (int dev, void *p1, void *p2)
(M360_BD_LAST |
M360_BD_FIRST_IN_FRAME)) {
/*
- * Pass the packet up the chain
- * The mbuf count is reduced to remove
- * the frame check sequence at the end
- * of the packet.
+ * Pass the packet up the chain.
+ * FIXME: Packet filtering hook could be done here.
*/
- bp = dp->rxMbuf[rxBdIndex];
- bp->cnt = rxBd->length - sizeof (uint32);
- net_route (iface, &bp);
+ struct ether_header *eh;
+ int s;
- /*
- * Give the network code a chance to digest the
- * packet. This guards against a flurry of
- * incoming packets (usually an ARP storm) from
- * using up all the available memory.
- */
- if (++continuousCount >= dp->rxBdCount)
- kwait_null ();
+ m = sc->rxMbuf[rxBdIndex];
+ m->m_len = m->m_pkthdr.len = rxBd->length -
+ sizeof(rtems_unsigned32) -
+ sizeof(struct ether_header);
+ eh = mtod (m, struct ether_header *);
+ m->m_data += sizeof(struct ether_header);
+ ether_input (ifp, eh, m);
/*
* Allocate a new mbuf
- * FIXME: It seems to me that it would be better
- * if there were some way to limit number of mbufs
- * in use by this interface, but I don't see any
- * way of determining when the mbuf we pass up
- * is freed.
*/
- dp->rxMbuf[rxBdIndex] = bp = ambufw (RBUF_SIZE);
- bp->data += sizeof (struct iface *);
- rxBd->buffer = bp->data;
+ MGETHDR (m, M_WAIT, MT_DATA);
+ MCLGET (m, M_WAIT);
+ m->m_pkthdr.rcvif = ifp;
+ sc->rxMbuf[rxBdIndex] = m;
+ rxBd->buffer = mtod (m, void *);
}
else {
/*
* Something went wrong with the reception
*/
if (!(status & M360_BD_LAST))
- dp->rxNotLast++;
+ sc->rxNotLast++;
if (!(status & M360_BD_FIRST_IN_FRAME))
- dp->rxNotFirst++;
+ sc->rxNotFirst++;
if (status & M360_BD_LONG)
- dp->rxGiant++;
+ sc->rxGiant++;
if (status & M360_BD_NONALIGNED)
- dp->rxNonOctet++;
+ sc->rxNonOctet++;
if (status & M360_BD_SHORT)
- dp->rxRunt++;
+ sc->rxRunt++;
if (status & M360_BD_CRC_ERROR)
- dp->rxBadCRC++;
+ sc->rxBadCRC++;
if (status & M360_BD_OVERRUN)
- dp->rxOverrun++;
+ sc->rxOverrun++;
if (status & M360_BD_COLLISION)
- dp->rxCollision++;
+ sc->rxCollision++;
}
/*
@@ -670,230 +539,416 @@ m360Enet_rx (int dev, void *p1, void *p2)
/*
* Move to next buffer descriptor
*/
- if (++rxBdIndex == dp->rxBdCount)
+ if (++rxBdIndex == sc->rxBdCount)
rxBdIndex = 0;
}
}
+static void
+sendpacket (struct ifnet *ifp, struct mbuf *m)
+{
+ struct scc_softc *sc = ifp->if_softc;
+ volatile m360BufferDescriptor_t *firstTxBd, *txBd;
+ struct mbuf *l = NULL;
+ rtems_unsigned16 status;
+ int nAdded;
+
+ /*
+ * Free up buffer descriptors
+ */
+ m360Enet_retire_tx_bd (sc);
+
+ /*
+ * Set up the transmit buffer descriptors.
+ * No need to pad out short packets since the
+ * hardware takes care of that automatically.
+ * No need to copy the packet to a contiguous buffer
+ * since the hardware is capable of scatter/gather DMA.
+ */
+ nAdded = 0;
+ txBd = firstTxBd = sc->txBdBase + sc->txBdHead;
+ for (;;) {
+ /*
+ * Wait for buffer descriptor to become available.
+ */
+ if ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
+ /*
+ * Clear old events
+ */
+ m360.scc1.scce = 0x12;
+
+ /*
+ * Wait for buffer descriptor to become available.
+ * Note that the buffer descriptors are checked
+ * *before* * entering the wait loop -- this catches
+ * the possibility that a buffer descriptor became
+ * available between the `if' above, and the clearing
+ * of the event register.
+ * This is to catch the case where the transmitter
+ * stops in the middle of a frame -- and only the
+ * last buffer descriptor in a frame can generate
+ * an interrupt.
+ */
+ m360Enet_retire_tx_bd (sc);
+ while ((sc->txBdActiveCount + nAdded) == sc->txBdCount) {
+ rtems_event_set events;
+
+ /*
+ * Unmask TXB (buffer transmitted) and
+ * TXE (transmitter error) events.
+ */
+ m360.scc1.sccm |= 0x12;
+ rtems_bsdnet_event_receive (INTERRUPT_EVENT,
+ RTEMS_WAIT|RTEMS_EVENT_ANY,
+ RTEMS_NO_TIMEOUT,
+ &events);
+ m360Enet_retire_tx_bd (sc);
+ }
+ }
+
+ /*
+ * Don't set the READY flag till the
+ * whole packet has been readied.
+ */
+ status = nAdded ? M360_BD_READY : 0;
+
+ /*
+ * FIXME: Why not deal with empty mbufs at at higher level?
+ * The IP fragmentation routine in ip_output
+ * can produce packet fragments with zero length.
+ * I think that ip_output should be changed to get
+ * rid of these zero-length mbufs, but for now,
+ * I'll deal with them here.
+ */
+ if (m->m_len) {
+ /*
+ * Fill in the buffer descriptor
+ */
+ txBd->buffer = mtod (m, void *);
+ txBd->length = m->m_len;
+ sc->txMbuf[sc->txBdHead] = m;
+ nAdded++;
+ if (++sc->txBdHead == sc->txBdCount) {
+ status |= M360_BD_WRAP;
+ sc->txBdHead = 0;
+ }
+ l = m;
+ m = m->m_next;
+ }
+ else {
+ /*
+ * Just toss empty mbufs
+ */
+ struct mbuf *n;
+ MFREE (m, n);
+ m = n;
+ if (l != NULL)
+ l->m_next = m;
+ }
+
+ /*
+ * Set the transmit buffer status.
+ * Break out of the loop if this mbuf is the last in the frame.
+ */
+ if (m == NULL) {
+ if (nAdded) {
+ status |= M360_BD_PAD | M360_BD_LAST | M360_BD_TX_CRC | M360_BD_INTERRUPT;
+ txBd->status = status;
+ firstTxBd->status |= M360_BD_READY;
+ sc->txBdActiveCount += nAdded;
+ }
+ break;
+ }
+ txBd->status = status;
+ txBd = sc->txBdBase + sc->txBdHead;
+ }
+}
+
/*
- * Shut down the interface
- * FIXME: This is a pretty simple-minded routine. It doesn't worry
- * about cleaning up mbufs, shutting down daemons, etc.
+ * Driver transmit daemon
*/
-static int
-m360Enet_stop (struct iface *iface)
+void
+scc_txDaemon (void *arg)
{
+ struct scc_softc *sc = (struct scc_softc *)arg;
+ struct ifnet *ifp = &sc->arpcom.ac_if;
+ struct mbuf *m;
+ rtems_event_set events;
+
+ for (;;) {
+ /*
+ * Wait for packet
+ */
+ rtems_bsdnet_event_receive (START_TRANSMIT_EVENT, RTEMS_EVENT_ANY | RTEMS_WAIT, RTEMS_NO_TIMEOUT, &events);
+
+ /*
+ * Send packets till queue is empty
+ */
+ for (;;) {
+ /*
+ * Get the next mbuf chain to transmit.
+ */
+ IF_DEQUEUE(&ifp->if_snd, m);
+ if (!m)
+ break;
+ sendpacket (ifp, m);
+ }
+ ifp->if_flags &= ~IFF_OACTIVE;
+ }
+}
+
+/*
+ * Send packet (caller provides header).
+ */
+static void
+scc_start (struct ifnet *ifp)
+{
+ struct scc_softc *sc = ifp->if_softc;
+
+ rtems_event_send (sc->txDaemonTid, START_TRANSMIT_EVENT);
+ ifp->if_flags |= IFF_OACTIVE;
+}
+
+/*
+ * Initialize and start the device
+ */
+static void
+scc_init (void *arg)
+{
+ struct scc_softc *sc = arg;
+ struct ifnet *ifp = &sc->arpcom.ac_if;
+
+ if (sc->txDaemonTid == 0) {
+
+ /*
+ * Set up SCC hardware
+ */
+ m360Enet_initialize_hardware (sc);
+
+ /*
+ * Start driver tasks
+ */
+ sc->txDaemonTid = rtems_bsdnet_newproc ("SCtx", 4096, scc_txDaemon, sc);
+ sc->rxDaemonTid = rtems_bsdnet_newproc ("SCrx", 4096, scc_rxDaemon, sc);
+
+ }
+
/*
- * Stop the transmitter
+ * Set flags appropriately
*/
- M360ExecuteRISC (M360_CR_OP_GR_STOP_TX | M360_CR_CHAN_SCC1);
+ if (ifp->if_flags & IFF_PROMISC)
+ m360.scc1.psmr |= 0x200;
+ else
+ m360.scc1.psmr &= ~0x200;
/*
- * Wait for graceful stop
- * FIXME: Maybe there should be a watchdog loop around this....
+ * Tell the world that we're running.
*/
- while ((m360.scc1.scce & 0x80) == 0)
- continue;
+ ifp->if_flags |= IFF_RUNNING;
+
+ /*
+ * Enable receiver and transmitter
+ */
+ m360.scc1.gsmr_l |= 0x30;
+}
+
+/*
+ * Stop the device
+ */
+static void
+scc_stop (struct scc_softc *sc)
+{
+ struct ifnet *ifp = &sc->arpcom.ac_if;
+
+ ifp->if_flags &= ~IFF_RUNNING;
/*
* Shut down receiver and transmitter
*/
m360.scc1.gsmr_l &= ~0x30;
- return 0;
}
+
/*
* Show interface statistics
*/
static void
-m360Enet_show (struct iface *iface)
+scc_stats (struct scc_softc *sc)
{
- printf (" Rx Interrupts:%-8lu", m360EnetDriver[0].rxInterrupts);
- printf (" Not First:%-8lu", m360EnetDriver[0].rxNotFirst);
- printf (" Not Last:%-8lu\n", m360EnetDriver[0].rxNotLast);
- printf (" Giant:%-8lu", m360EnetDriver[0].rxGiant);
- printf (" Runt:%-8lu", m360EnetDriver[0].rxRunt);
- printf (" Non-octet:%-8lu\n", m360EnetDriver[0].rxNonOctet);
- printf (" Bad CRC:%-8lu", m360EnetDriver[0].rxBadCRC);
- printf (" Overrun:%-8lu", m360EnetDriver[0].rxOverrun);
- printf (" Collision:%-8lu\n", m360EnetDriver[0].rxCollision);
+ printf (" Rx Interrupts:%-8lu", sc->rxInterrupts);
+ printf (" Not First:%-8lu", sc->rxNotFirst);
+ printf (" Not Last:%-8lu\n", sc->rxNotLast);
+ printf (" Giant:%-8lu", sc->rxGiant);
+ printf (" Runt:%-8lu", sc->rxRunt);
+ printf (" Non-octet:%-8lu\n", sc->rxNonOctet);
+ printf (" Bad CRC:%-8lu", sc->rxBadCRC);
+ printf (" Overrun:%-8lu", sc->rxOverrun);
+ printf (" Collision:%-8lu\n", sc->rxCollision);
printf (" Discarded:%-8lu\n", (unsigned long)m360.scc1p.un.ethernet.disfc);
- printf (" Tx Interrupts:%-8lu", m360EnetDriver[0].txInterrupts);
- printf (" Deferred:%-8lu", m360EnetDriver[0].txDeferred);
- printf (" Missed Hearbeat:%-8lu\n", m360EnetDriver[0].txHeartbeat);
- printf (" No Carrier:%-8lu", m360EnetDriver[0].txLostCarrier);
- printf ("Retransmit Limit:%-8lu", m360EnetDriver[0].txRetryLimit);
- printf (" Late Collision:%-8lu\n", m360EnetDriver[0].txLateCollision);
- printf (" Underrun:%-8lu", m360EnetDriver[0].txUnderrun);
- printf (" Raw output wait:%-8lu\n", m360EnetDriver[0].txRawWait);
+ printf (" Tx Interrupts:%-8lu", sc->txInterrupts);
+ printf (" Deferred:%-8lu", sc->txDeferred);
+ printf (" Missed Hearbeat:%-8lu\n", sc->txHeartbeat);
+ printf (" No Carrier:%-8lu", sc->txLostCarrier);
+ printf ("Retransmit Limit:%-8lu", sc->txRetryLimit);
+ printf (" Late Collision:%-8lu\n", sc->txLateCollision);
+ printf (" Underrun:%-8lu", sc->txUnderrun);
+ printf (" Raw output wait:%-8lu\n", sc->txRawWait);
+}
+
+/*
+ * Driver ioctl handler
+ */
+static int
+scc_ioctl (struct ifnet *ifp, int command, caddr_t data)
+{
+ struct ifaddr *ifa = (struct ifaddr *)data;
+ struct scc_softc *sc = ifp->if_softc;
+ struct ifreq *ifr = (struct ifreq *) data;
+ int error = 0;
+
+ switch (command) {
+ case SIOCGIFADDR:
+ case SIOCSIFADDR:
+ ether_ioctl (ifp, command, data);
+ break;
+
+ case SIOCSIFFLAGS:
+ switch (ifp->if_flags & (IFF_UP | IFF_RUNNING)) {
+ case IFF_RUNNING:
+ scc_stop (sc);
+ break;
+
+ case IFF_UP:
+ scc_init (sc);
+ break;
+
+ case IFF_UP | IFF_RUNNING:
+ scc_stop (sc);
+ scc_init (sc);
+ break;
+
+ default:
+ break;
+ }
+ break;
+
+ case SIO_RTEMS_SHOW_STATS:
+ scc_stats (sc);
+ break;
+
+ /*
+ * FIXME: All sorts of multicast commands need to be added here!
+ */
+ default:
+ error = EINVAL;
+ break;
+ }
+ return error;
}
/*
* Attach an SCC driver to the system
- * This is the only `extern' function in the driver.
- *
- * argv[0]: interface label, e.g., "rtems"
- * The remainder of the arguemnts are key/value pairs:
- * mtu ## -- maximum transmission unit, default 1500
- * broadcast y/n -- accept or ignore broadcast packets, default yes
- * rbuf ## -- Set number of receive buffer descriptors
- * rbuf ## -- Set number of transmit buffer descriptors
- * ip ###.###.###.### -- IP address
- * ether ##:##:##:##:##:## -- Ethernet address
- * ether prom -- Get Ethernet address from bootstrap PROM
*/
int
-rtems_ka9q_driver_attach (int argc, char *argv[], void *p)
+rtems_scc1_driver_attach (struct rtems_bsdnet_ifconfig *config)
{
- struct iface *iface;
- struct m360EnetDriver *dp;
- char *cp;
+ struct scc_softc *sc;
+ struct ifnet *ifp;
+ int mtu;
int i;
- int argIndex;
- int broadcastFlag;
- char cbuf[30];
/*
* Find a free driver
*/
for (i = 0 ; i < NSCCDRIVER ; i++) {
- if (m360EnetDriver[i].iface == NULL)
+ sc = &scc_softc[i];
+ ifp = &sc->arpcom.ac_if;
+ if (ifp->if_softc == NULL)
break;
}
if (i >= NSCCDRIVER) {
printf ("Too many SCC drivers.\n");
- return -1;
- }
- if (if_lookup (argv[0]) != NULL) {
- printf ("Interface %s already exists\n", argv[0]);
- return -1;
+ return 0;
}
- dp = &m360EnetDriver[i];
-
- /*
- * Create an inteface descriptor
- */
- iface = callocw (1, sizeof *iface);
- iface->name = strdup (argv[0]);
-
- /*
- * Set default values
- */
- broadcastFlag = 1;
- dp->txWaitTid = 0;
- dp->rxBdCount = RX_BUF_COUNT;
- dp->txBdCount = TX_BUF_COUNT * TX_BD_PER_BUF;
- iface->mtu = 1500;
- iface->addr = Ip_addr;
- iface->hwaddr = mallocw (EADDR_LEN);
- memset (iface->hwaddr, 0x08, EADDR_LEN);
/*
- * Parse arguments
+ * Process options
*/
- for (argIndex = 1 ; argIndex < (argc - 1) ; argIndex++) {
- if (strcmp ("mtu", argv[argIndex]) == 0) {
- iface->mtu = atoi (argv[++argIndex]);
- }
- else if (strcmp ("broadcast", argv[argIndex]) == 0) {
- if (*argv[++argIndex] == 'n')
- broadcastFlag = 0;
- }
- else if (strcmp ("rbuf", argv[argIndex]) == 0) {
- dp->rxBdCount = atoi (argv[++argIndex]);
- }
- else if (strcmp ("tbuf", argv[argIndex]) == 0) {
- dp->txBdCount = atoi (argv[++argIndex]) * TX_BD_PER_BUF;
- }
- else if (strcmp ("ip", argv[argIndex]) == 0) {
- iface->addr = resolve (argv[++argIndex]);
- }
- else if (strcmp ("ether", argv[argIndex]) == 0) {
- argIndex++;
- if (strcmp (argv[argIndex], "prom") == 0) {
- /*
- * The first 4 bytes of the bootstrap prom
- * contain the value loaded into the stack
- * pointer as part of the CPU32's hardware
- * reset exception handler. The following
- * 4 bytes contain the value loaded into the
- * program counter. The boards' Ethernet
- * address is stored in the six bytes
- * immediately preceding this initial
- * program counter value.
- *
- * See start360/start360.s.
- */
- extern void *_RomBase; /* From linkcmds */
- const unsigned long *ExceptionVectors;
- const unsigned char *entryPoint;
+ if (config->hardware_address) {
+ memcpy (sc->arpcom.ac_enaddr, config->hardware_address, ETHER_ADDR_LEN);
+ }
+ else {
+ /*
+ * The first 4 bytes of the bootstrap prom
+ * contain the value loaded into the stack
+ * pointer as part of the CPU32's hardware
+ * reset exception handler. The following
+ * 4 bytes contain the value loaded into the
+ * program counter. The boards' Ethernet
+ * address is stored in the six bytes
+ * immediately preceding this initial
+ * program counter value.
+ *
+ * See start360/start360.s.
+ */
+ extern void *_RomBase; /* From linkcmds */
+ const unsigned long *ExceptionVectors;
+ const unsigned char *entryPoint;
- /*
- * Sanity check -- assume entry point must be
- * within 1 MByte of beginning of boot ROM.
- */
- ExceptionVectors = (const unsigned long *)&_RomBase;
- entryPoint = (const unsigned char *)ExceptionVectors[1];
- if (((unsigned long)entryPoint - (unsigned long)ExceptionVectors)
- >= (1 * 1024 * 1024)) {
- printf ("Warning -- Ethernet address can not be found in bootstrap PROM.\n");
- iface->hwaddr[0] = 0x08;
- iface->hwaddr[1] = 0xF3;
- iface->hwaddr[2] = 0x3E;
- iface->hwaddr[3] = 0xC2;
- iface->hwaddr[4] = 0xE7;
- iface->hwaddr[5] = 0x08;
- }
- else {
- memcpy (iface->hwaddr, entryPoint - 6, 6);
- }
- }
- else {
- gether (iface->hwaddr, argv[argIndex]);
- }
+ /*
+ * Sanity check -- assume entry point must be
+ * within 1 MByte of beginning of boot ROM.
+ */
+ ExceptionVectors = (const unsigned long *)&_RomBase;
+ entryPoint = (const unsigned char *)ExceptionVectors[1];
+ if (((unsigned long)entryPoint - (unsigned long)ExceptionVectors)
+ >= (1 * 1024 * 1024)) {
+ printf ("Warning -- Ethernet address can not be found in bootstrap PROM.\n");
+ sc->arpcom.ac_enaddr[0] = 0x08;
+ sc->arpcom.ac_enaddr[1] = 0xF3;
+ sc->arpcom.ac_enaddr[2] = 0x3E;
+ sc->arpcom.ac_enaddr[3] = 0xC2;
+ sc->arpcom.ac_enaddr[4] = 0x7E;
+ sc->arpcom.ac_enaddr[5] = 0x38;
}
else {
- printf ("Argument %d (%s) is invalid.\n", argIndex, argv[argIndex]);
- return -1;
+ memcpy (sc->arpcom.ac_enaddr, entryPoint - ETHER_ADDR_LEN, ETHER_ADDR_LEN);
}
}
- printf ("Ethernet address: %s\n", pether (cbuf, iface->hwaddr));
-
- /*
- * Fill in remainder of interface configuration
- */
- iface->dev = i;
- iface->raw = m360Enet_raw;
- iface->stop = m360Enet_stop;
- iface->show = m360Enet_show;
- dp->iface = iface;
- setencap (iface, "Ethernet");
-
- /*
- * Set up SCC hardware
- */
- m360Enet_initialize_hardware (dp, broadcastFlag);
-
- /*
- * Chain onto list of interfaces
- */
- iface->next = Ifaces;
- Ifaces = iface;
-
- /*
- * Start I/O daemons
- */
- cp = if_name (iface, " tx");
- iface->txproc = newproc (cp, 1024, if_tx, iface->dev, iface, NULL, 0);
- free (cp);
- cp = if_name (iface, " rx");
- iface->rxproc = newproc (cp, 1024, m360Enet_rx, iface->dev, iface, dp, 0);
- free (cp);
- return 0;
-}
-
-/*
- * FIXME: There should be an ioctl routine to allow things like
- * enabling/disabling reception of broadcast packets.
- */
+ if (config->mtu)
+ mtu = config->mtu;
+ else
+ mtu = ETHERMTU;
+ if (config->rbuf_count)
+ sc->rxBdCount = config->rbuf_count;
+ else
+ sc->rxBdCount = RX_BUF_COUNT;
+ if (config->xbuf_count)
+ sc->txBdCount = config->xbuf_count;
+ else
+ sc->txBdCount = TX_BUF_COUNT * TX_BD_PER_BUF;
+ sc->acceptBroadcast = !config->ignore_broadcast;
+
+ /*
+ * Set up network interface values
+ */
+ ifp->if_softc = sc;
+ ifp->if_unit = i + 1;
+ ifp->if_name = "scc";
+ ifp->if_mtu = mtu;
+ ifp->if_init = scc_init;
+ ifp->if_ioctl = scc_ioctl;
+ ifp->if_start = scc_start;
+ ifp->if_output = ether_output;
+ ifp->if_flags = IFF_BROADCAST | IFF_SIMPLEX;
+ if (ifp->if_snd.ifq_maxlen == 0)
+ ifp->if_snd.ifq_maxlen = ifqmaxlen;
+
+ /*
+ * Attach the interface
+ */
+ if_attach (ifp);
+ ether_ifattach (ifp);
+ return 1;
+};
diff --git a/c/src/lib/libbsp/m68k/gen68360/wrapup/Makefile.in b/c/src/lib/libbsp/m68k/gen68360/wrapup/Makefile.in
index 3f150338dd..de02880710 100644
--- a/c/src/lib/libbsp/m68k/gen68360/wrapup/Makefile.in
+++ b/c/src/lib/libbsp/m68k/gen68360/wrapup/Makefile.in
@@ -9,10 +9,14 @@ RTEMS_ROOT = @top_srcdir@
PROJECT_ROOT = @PROJECT_ROOT@
# We only build the ka9q device driver if HAS_KA9Q was defined
-KA9Q_DRIVER_yes_V = network
+KA9Q_DRIVER_yes_V = ka9q_network
KA9Q_DRIVER = $(KA9Q_DRIVER_$(HAS_KA9Q)_V)
-BSP_PIECES=startup clock console timer $(KA9Q_DRIVER)
+# We only build the networking device driver if HAS_NETWORKING was defined
+NETWORKING_DRIVER_yes_V = network
+NETWORKING_DRIVER = $(NETWORKING_DRIVER_$(HAS_NETWORKING)_V)
+
+BSP_PIECES=startup clock console timer $(KA9Q_DRIVER) $(NETWORKING_DRIVER)
CPU_PIECES=
GENERIC_PIECES=
diff --git a/c/src/lib/wrapup/Makefile.in b/c/src/lib/wrapup/Makefile.in
index bef0aa637b..52042c5e6e 100644
--- a/c/src/lib/wrapup/Makefile.in
+++ b/c/src/lib/wrapup/Makefile.in
@@ -19,6 +19,7 @@ SRCS=$(wildcard $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a) \
$(PROJECT_RELEASE)/lib/librtems$(LIB_VARIANT).a \
$(wildcard $(PROJECT_RELEASE)/lib/libposix$(LIB_VARIANT).a) \
$(wildcard $(PROJECT_RELEASE)/lib/libka9q$(LIB_VARIANT).a) \
+ $(wildcard $(PROJECT_RELEASE)/lib/libnetworking$(LIB_VARIANT).a) \
$(wildcard $(PROJECT_RELEASE)/lib/libcpu$(LIB_VARIANT).a) \
$(PROJECT_RELEASE)/lib/libcsupport$(LIB_VARIANT).a \
$(PROJECT_RELEASE)/lib/libmisc$(LIB_VARIANT).a \
diff --git a/c/src/make/compilers/gcc-target-default.cfg b/c/src/make/compilers/gcc-target-default.cfg
index 359ae1a295..ee533743e8 100644
--- a/c/src/make/compilers/gcc-target-default.cfg
+++ b/c/src/make/compilers/gcc-target-default.cfg
@@ -22,6 +22,10 @@ CPLUS_CPPFLAGS=$(CFLAGS) $(XCPPFLAGS)
INCLUDE_KA9Q_yes_V = -I$(PROJECT_INCLUDE)/ka9q
INCLUDE_KA9Q = $(INCLUDE_KA9Q_$(HAS_KA9Q)_V)
+# We only include the header files for networking if it is enabled.
+INCLUDE_NETWORKING_yes_V = -I$(PROJECT_INCLUDE)/networking
+INCLUDE_NETWORKING = $(INCLUDE_NETWORKING_$(HAS_NETWORKING)_V)
+
ifeq ($(RTEMS_USE_GCC272),yes)
ifeq ($(RTEMS_CROSS_TARGET),no)
@@ -33,6 +37,7 @@ endif
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-I$(PROJECT_INCLUDE) \
$(INCLUDE_KA9Q) \
+ $(INCLUDE_NETWORKING) \
$(RTEMS_LIBC_INCLUDES) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g \
@@ -46,6 +51,7 @@ GCC_INCLUDE=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=include $(GCCSED))
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-nostdinc -I$(PROJECT_INCLUDE) \
$(INCLUDE_KA9Q) \
+ $(INCLUDE_NETWORKING) \
-I$(RTEMS_LIBC_DIR)/include -I$(GCC_INCLUDE) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g \
@@ -65,7 +71,7 @@ endif
else
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-B$(PROJECT_RELEASE)/lib/ -specs bsp_specs -qrtems \
- $(INCLUDE_KA9Q) $(DEFINES)
+ $(INCLUDE_KA9Q) $(INCLUDE_NETWORKING) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g -I$(srcdir) \
-B$(PROJECT_RELEASE)/lib/ -specs bsp_specs -qrtems $(DEFINES)
diff --git a/c/src/wrapup/Makefile.in b/c/src/wrapup/Makefile.in
index bef0aa637b..52042c5e6e 100644
--- a/c/src/wrapup/Makefile.in
+++ b/c/src/wrapup/Makefile.in
@@ -19,6 +19,7 @@ SRCS=$(wildcard $(PROJECT_RELEASE)/lib/libbsp$(LIB_VARIANT).a) \
$(PROJECT_RELEASE)/lib/librtems$(LIB_VARIANT).a \
$(wildcard $(PROJECT_RELEASE)/lib/libposix$(LIB_VARIANT).a) \
$(wildcard $(PROJECT_RELEASE)/lib/libka9q$(LIB_VARIANT).a) \
+ $(wildcard $(PROJECT_RELEASE)/lib/libnetworking$(LIB_VARIANT).a) \
$(wildcard $(PROJECT_RELEASE)/lib/libcpu$(LIB_VARIANT).a) \
$(PROJECT_RELEASE)/lib/libcsupport$(LIB_VARIANT).a \
$(PROJECT_RELEASE)/lib/libmisc$(LIB_VARIANT).a \
diff --git a/configure b/configure
index 0e23719f40..2e0f2886ac 100644
--- a/configure
+++ b/configure
@@ -24,6 +24,9 @@ ac_help="$ac_help
--enable-ka9q enable KA9Q TCP/IP stack"
ac_help="$ac_help
\
+ --enable-networking enable TCP/IP stack"
+ac_help="$ac_help
+\
--enable-rtems-inlines enable RTEMS inline functions (use macros)"
ac_help="$ac_help
\
@@ -558,7 +561,7 @@ fi
echo $ac_n "checking whether ${MAKE-make} sets \${MAKE}""... $ac_c" 1>&6
-echo "configure:562: checking whether ${MAKE-make} sets \${MAKE}" >&5
+echo "configure:565: checking whether ${MAKE-make} sets \${MAKE}" >&5
set dummy ${MAKE-make}; ac_make=`echo "$2" | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_prog_make_${ac_make}_set'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -631,7 +634,7 @@ else { echo "configure: error: can not run $ac_config_sub" 1>&2; exit 1; }
fi
echo $ac_n "checking host system type""... $ac_c" 1>&6
-echo "configure:635: checking host system type" >&5
+echo "configure:638: checking host system type" >&5
host_alias=$host
case "$host_alias" in
@@ -652,7 +655,7 @@ host_os=`echo $host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$host" 1>&6
echo $ac_n "checking target system type""... $ac_c" 1>&6
-echo "configure:656: checking target system type" >&5
+echo "configure:659: checking target system type" >&5
target_alias=$target
case "$target_alias" in
@@ -670,7 +673,7 @@ target_os=`echo $target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'`
echo "$ac_t""$target" 1>&6
echo $ac_n "checking build system type""... $ac_c" 1>&6
-echo "configure:674: checking build system type" >&5
+echo "configure:677: checking build system type" >&5
build_alias=$build
case "$build_alias" in
@@ -738,7 +741,21 @@ case "${enableval}" in
*) { echo "configure: error: bad value ${enableval} for enable-ka9q option" 1>&2; exit 1; } ;;
esac
else
- RTEMS_HAS_KA9Q=yes
+ RTEMS_HAS_KA9Q=no
+fi
+
+
+# Check whether --enable-networking or --disable-networking was given.
+if test "${enable_networking+set}" = set; then
+ enableval="$enable_networking"
+ \
+case "${enableval}" in
+ yes) RTEMS_HAS_NETWORKING=yes ;;
+ no) RTEMS_HAS_NETWORKING=no ;;
+ *) { echo "configure: error: bad value ${enableval} for enable-networking option" 1>&2; exit 1; } ;;
+esac
+else
+ RTEMS_HAS_NETWORKING=yes
fi
@@ -823,7 +840,7 @@ RTEMS_PREFIX=${target_cpu}-${target_vendor}
# Extract the first word of "cat", so it can be a program name with args.
set dummy cat; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:827: checking for $ac_word" >&5
+echo "configure:844: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CAT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -854,7 +871,7 @@ fi
# Extract the first word of "rm", so it can be a program name with args.
set dummy rm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:858: checking for $ac_word" >&5
+echo "configure:875: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RM'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -885,7 +902,7 @@ fi
# Extract the first word of "cp", so it can be a program name with args.
set dummy cp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:889: checking for $ac_word" >&5
+echo "configure:906: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -916,7 +933,7 @@ fi
# Extract the first word of "mv", so it can be a program name with args.
set dummy mv; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:920: checking for $ac_word" >&5
+echo "configure:937: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MV'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -947,7 +964,7 @@ fi
# Extract the first word of "ln", so it can be a program name with args.
set dummy ln; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:951: checking for $ac_word" >&5
+echo "configure:968: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LN'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -976,7 +993,7 @@ else
fi
echo $ac_n "checking whether ln -s works""... $ac_c" 1>&6
-echo "configure:980: checking whether ln -s works" >&5
+echo "configure:997: checking whether ln -s works" >&5
if eval "test \"`echo '$''{'ac_cv_prog_LN_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -999,7 +1016,7 @@ fi
# Extract the first word of "chmod", so it can be a program name with args.
set dummy chmod; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1003: checking for $ac_word" >&5
+echo "configure:1020: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CHMOD'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1030,7 +1047,7 @@ fi
# Extract the first word of "sort", so it can be a program name with args.
set dummy sort; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1034: checking for $ac_word" >&5
+echo "configure:1051: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SORT'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1069,7 +1086,7 @@ fi
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:1073: checking for a BSD compatible install" >&5
+echo "configure:1090: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1122,7 +1139,7 @@ test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
# Extract the first word of "mkdir", so it can be a program name with args.
set dummy mkdir; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1126: checking for $ac_word" >&5
+echo "configure:1143: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_MKDIR'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1154,7 +1171,7 @@ fi
echo $ac_n "checking for working $MKDIR -m 0755""... $ac_c" 1>&6
-echo "configure:1158: checking for working $MKDIR -m 0755" >&5
+echo "configure:1175: checking for working $MKDIR -m 0755" >&5
if eval "test \"`echo '$''{'rtems_cv_prog_MKDIR_P'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1171,7 +1188,7 @@ echo "$ac_t""$rtems_cv_prog_MKDIR_M" 1>&6
echo $ac_n "checking for working $MKDIR -p""... $ac_c" 1>&6
-echo "configure:1175: checking for working $MKDIR -p" >&5
+echo "configure:1192: checking for working $MKDIR -p" >&5
if eval "test \"`echo '$''{'rtems_cv_prog_mkdir_p'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1191,7 +1208,7 @@ test "$rtems_cv_prog_MKDIR_M" = "yes" && MKDIR="$MKDIR -m 0755"
# Extract the first word of "touch", so it can be a program name with args.
set dummy touch; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1195: checking for $ac_word" >&5
+echo "configure:1212: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_TOUCH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1222,7 +1239,7 @@ fi
# Extract the first word of "cmp", so it can be a program name with args.
set dummy cmp; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1226: checking for $ac_word" >&5
+echo "configure:1243: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CMP'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1254,7 +1271,7 @@ fi
# Extract the first word of "sed", so it can be a program name with args.
set dummy sed; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1258: checking for $ac_word" >&5
+echo "configure:1275: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SED'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1287,7 +1304,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1291: checking for $ac_word" >&5
+echo "configure:1308: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_M4'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1324,7 +1341,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1328: checking for $ac_word" >&5
+echo "configure:1345: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_KSH'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1402,7 +1419,7 @@ case "${target}" in
;;
*)
echo $ac_n "checking rtems target cpu""... $ac_c" 1>&6
-echo "configure:1406: checking rtems target cpu" >&5
+echo "configure:1423: checking rtems target cpu" >&5
target_cpu=`echo $target | sed 's%^\([^-]*\)-\(.*\)$%\1%'`
echo "$ac_t""$target_cpu" 1>&6
@@ -1421,7 +1438,7 @@ fi
# Is this a supported CPU?
echo $ac_n "checking if cpu $target_cpu is supported""... $ac_c" 1>&6
-echo "configure:1425: checking if cpu $target_cpu is supported" >&5
+echo "configure:1442: checking if cpu $target_cpu is supported" >&5
if test -d "$srcdir/c/src/exec/score/cpu/$target_cpu"; then
echo "$ac_t""yes" 1>&6
makefiles="$makefiles c/src/exec/score/cpu/$target_cpu/Makefile"
@@ -1446,7 +1463,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1450: checking for $ac_word" >&5
+echo "configure:1467: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CC_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1486,7 +1503,7 @@ rtems_save_CFLAGS=$CFLAGS
CC=$CC_FOR_TARGET
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1490: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:1507: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1496,11 +1513,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 1500 "configure"
+#line 1517 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1504: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1521: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1520,12 +1537,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1524: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1541: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:1529: checking whether we are using GNU C" >&5
+echo "configure:1546: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1534,7 +1551,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1538: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:1555: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -1549,7 +1566,7 @@ if test $ac_cv_prog_gcc = yes; then
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:1553: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:1570: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1591,7 +1608,7 @@ unset ac_cv_prog_cc_cross
echo $ac_n "checking whether $CC_FOR_TARGET accepts -specs""... $ac_c" 1>&6
-echo "configure:1595: checking whether $CC_FOR_TARGET accepts -specs" >&5
+echo "configure:1612: checking whether $CC_FOR_TARGET accepts -specs" >&5
if eval "test \"`echo '$''{'rtems_cv_gcc_specs'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1612,7 +1629,7 @@ echo "$ac_t""$rtems_cv_gcc_specs" 1>&6
echo $ac_n "checking whether $CC_FOR_TARGET accepts --pipe""... $ac_c" 1>&6
-echo "configure:1616: checking whether $CC_FOR_TARGET accepts --pipe" >&5
+echo "configure:1633: checking whether $CC_FOR_TARGET accepts --pipe" >&5
if eval "test \"`echo '$''{'rtems_cv_gcc_pipe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1653,7 +1670,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1657: checking for $ac_word" >&5
+echo "configure:1674: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_CXX_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1693,7 +1710,7 @@ rtems_save_CXXFLAGS=$CXXFLAGS
CXX=$CXX_FOR_TARGET
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:1697: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
+echo "configure:1714: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) works" >&5
ac_ext=C
# CXXFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -1703,11 +1720,11 @@ ac_link='${CXX-g++} -o conftest $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $L
cross_compiling=$ac_cv_prog_cxx_cross
cat > conftest.$ac_ext <<EOF
-#line 1707 "configure"
+#line 1724 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:1711: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:1728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cxx_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -1733,12 +1750,12 @@ if test $ac_cv_prog_cxx_works = no; then
{ echo "configure: error: installation or configuration problem: C++ compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:1737: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:1754: checking whether the C++ compiler ($CXX $CXXFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cxx_cross" 1>&6
cross_compiling=$ac_cv_prog_cxx_cross
echo $ac_n "checking whether we are using GNU C++""... $ac_c" 1>&6
-echo "configure:1742: checking whether we are using GNU C++" >&5
+echo "configure:1759: checking whether we are using GNU C++" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gxx'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1747,7 +1764,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1751: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CXX-g++} -E conftest.C'; { (eval echo configure:1768: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gxx=yes
else
ac_cv_prog_gxx=no
@@ -1762,7 +1779,7 @@ if test $ac_cv_prog_gxx = yes; then
ac_save_CXXFLAGS="$CXXFLAGS"
CXXFLAGS=
echo $ac_n "checking whether ${CXX-g++} accepts -g""... $ac_c" 1>&6
-echo "configure:1766: checking whether ${CXX-g++} accepts -g" >&5
+echo "configure:1783: checking whether ${CXX-g++} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cxx_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1816,7 +1833,7 @@ fi
echo $ac_n "checking target's ar""... $ac_c" 1>&6
-echo "configure:1820: checking target's ar" >&5
+echo "configure:1837: checking target's ar" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1849,7 +1866,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable AR_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:1853: checking whether environment variable AR_FOR_TARGET is an absolute path" >&5
+echo "configure:1870: checking whether environment variable AR_FOR_TARGET is an absolute path" >&5
case "$AR_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -1866,7 +1883,7 @@ echo "configure:1853: checking whether environment variable AR_FOR_TARGET is an
# Extract the first word of ""$program_prefix"ar", so it can be a program name with args.
set dummy "$program_prefix"ar; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1870: checking for $ac_word" >&5
+echo "configure:1887: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AR_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1899,7 +1916,7 @@ fi
echo $ac_n "checking target's as""... $ac_c" 1>&6
-echo "configure:1903: checking target's as" >&5
+echo "configure:1920: checking target's as" >&5
if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1932,7 +1949,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable AS_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:1936: checking whether environment variable AS_FOR_TARGET is an absolute path" >&5
+echo "configure:1953: checking whether environment variable AS_FOR_TARGET is an absolute path" >&5
case "$AS_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -1949,7 +1966,7 @@ echo "configure:1936: checking whether environment variable AS_FOR_TARGET is an
# Extract the first word of ""$program_prefix"as", so it can be a program name with args.
set dummy "$program_prefix"as; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:1953: checking for $ac_word" >&5
+echo "configure:1970: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_AS_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1982,7 +1999,7 @@ fi
echo $ac_n "checking target's ld""... $ac_c" 1>&6
-echo "configure:1986: checking target's ld" >&5
+echo "configure:2003: checking target's ld" >&5
if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2015,7 +2032,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable LD_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2019: checking whether environment variable LD_FOR_TARGET is an absolute path" >&5
+echo "configure:2036: checking whether environment variable LD_FOR_TARGET is an absolute path" >&5
case "$LD_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2032,7 +2049,7 @@ echo "configure:2019: checking whether environment variable LD_FOR_TARGET is an
# Extract the first word of ""$program_prefix"ld", so it can be a program name with args.
set dummy "$program_prefix"ld; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2036: checking for $ac_word" >&5
+echo "configure:2053: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_LD_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2065,7 +2082,7 @@ fi
echo $ac_n "checking target's nm""... $ac_c" 1>&6
-echo "configure:2069: checking target's nm" >&5
+echo "configure:2086: checking target's nm" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2098,7 +2115,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable NM_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2102: checking whether environment variable NM_FOR_TARGET is an absolute path" >&5
+echo "configure:2119: checking whether environment variable NM_FOR_TARGET is an absolute path" >&5
case "$NM_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2115,7 +2132,7 @@ echo "configure:2102: checking whether environment variable NM_FOR_TARGET is an
# Extract the first word of ""$program_prefix"nm", so it can be a program name with args.
set dummy "$program_prefix"nm; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2119: checking for $ac_word" >&5
+echo "configure:2136: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_NM_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2149,7 +2166,7 @@ fi
echo $ac_n "checking target's ranlib""... $ac_c" 1>&6
-echo "configure:2153: checking target's ranlib" >&5
+echo "configure:2170: checking target's ranlib" >&5
if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2182,7 +2199,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable RANLIB_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2186: checking whether environment variable RANLIB_FOR_TARGET is an absolute path" >&5
+echo "configure:2203: checking whether environment variable RANLIB_FOR_TARGET is an absolute path" >&5
case "$RANLIB_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2199,7 +2216,7 @@ echo "configure:2186: checking whether environment variable RANLIB_FOR_TARGET is
# Extract the first word of ""$program_prefix"ranlib", so it can be a program name with args.
set dummy "$program_prefix"ranlib; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2203: checking for $ac_word" >&5
+echo "configure:2220: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_RANLIB_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2234,7 +2251,7 @@ fi
# ranlib wasn't found; check if ar -s is available
echo $ac_n "checking whether $AR_FOR_TARGET -s works""... $ac_c" 1>&6
-echo "configure:2238: checking whether $AR_FOR_TARGET -s works" >&5
+echo "configure:2255: checking whether $AR_FOR_TARGET -s works" >&5
if eval "test \"`echo '$''{'rtems_cv_AR_FOR_TARGET_S'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2243,8 +2260,8 @@ cat > conftest.$ac_ext <<EOF
int foo( int b )
{ return b; }
EOF
-if { ac_try='$CC_FOR_TARGET -o conftest.o -c conftest.$ac_ext'; { (eval echo configure:2247: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
- && { ac_try='$AR_FOR_TARGET -sr conftest.a conftest.o'; { (eval echo configure:2248: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+if { ac_try='$CC_FOR_TARGET -o conftest.o -c conftest.$ac_ext'; { (eval echo configure:2264: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
+ && { ac_try='$AR_FOR_TARGET -sr conftest.a conftest.o'; { (eval echo configure:2265: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } \
&& test -s conftest.a ; \
then
rtems_cv_AR_FOR_TARGET_S="yes"
@@ -2269,7 +2286,7 @@ echo "$ac_t""$rtems_cv_AR_FOR_TARGET_S" 1>&6
echo $ac_n "checking target's objcopy""... $ac_c" 1>&6
-echo "configure:2273: checking target's objcopy" >&5
+echo "configure:2290: checking target's objcopy" >&5
if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2302,7 +2319,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2306: checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path" >&5
+echo "configure:2323: checking whether environment variable OBJCOPY_FOR_TARGET is an absolute path" >&5
case "$OBJCOPY_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2319,7 +2336,7 @@ echo "configure:2306: checking whether environment variable OBJCOPY_FOR_TARGET i
# Extract the first word of ""$program_prefix"objcopy", so it can be a program name with args.
set dummy "$program_prefix"objcopy; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2323: checking for $ac_word" >&5
+echo "configure:2340: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_OBJCOPY_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2352,7 +2369,7 @@ fi
echo $ac_n "checking target's size""... $ac_c" 1>&6
-echo "configure:2356: checking target's size" >&5
+echo "configure:2373: checking target's size" >&5
if eval "test \"`echo '$''{'ac_cv_path_SIZE_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2385,7 +2402,7 @@ else
# will override the environment variable, which isn't what the user
# intends
echo $ac_n "checking whether environment variable SIZE_FOR_TARGET is an absolute path""... $ac_c" 1>&6
-echo "configure:2389: checking whether environment variable SIZE_FOR_TARGET is an absolute path" >&5
+echo "configure:2406: checking whether environment variable SIZE_FOR_TARGET is an absolute path" >&5
case "$SIZE_FOR_TARGET" in
/*) # valid
echo "$ac_t"""yes"" 1>&6
@@ -2402,7 +2419,7 @@ echo "configure:2389: checking whether environment variable SIZE_FOR_TARGET is a
# Extract the first word of ""$program_prefix"size", so it can be a program name with args.
set dummy "$program_prefix"size; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2406: checking for $ac_word" >&5
+echo "configure:2423: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_path_SIZE_FOR_TARGET'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2438,7 +2455,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2442: checking for $ac_word" >&5
+echo "configure:2459: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2467,7 +2484,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:2471: checking for $ac_word" >&5
+echo "configure:2488: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2515,7 +2532,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:2519: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:2536: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -2525,11 +2542,11 @@ ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS
cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext <<EOF
-#line 2529 "configure"
+#line 2546 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:2533: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2550: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -2549,12 +2566,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:2553: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:2570: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:2558: checking whether we are using GNU C" >&5
+echo "configure:2575: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2563,7 +2580,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2567: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:2584: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -2578,7 +2595,7 @@ if test $ac_cv_prog_gcc = yes; then
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:2582: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:2599: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2607,19 +2624,19 @@ fi
echo $ac_n "checking for Cygwin32 environment""... $ac_c" 1>&6
-echo "configure:2611: checking for Cygwin32 environment" >&5
+echo "configure:2628: checking for Cygwin32 environment" >&5
if eval "test \"`echo '$''{'rtems_cv_cygwin32'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2616 "configure"
+#line 2633 "configure"
#include "confdefs.h"
int main() {
return __CYGWIN32__;
; return 0; }
EOF
-if { (eval echo configure:2623: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
+if { (eval echo configure:2640: \"$ac_compile\") 1>&5; (eval $ac_compile) 2>&5; }; then
rm -rf conftest*
rtems_cv_cygwin32=yes
else
@@ -2637,7 +2654,7 @@ CYGWIN32=
test "$rtems_cv_cygwin32" = yes && CYGWIN32=yes
echo $ac_n "checking for executable suffix""... $ac_c" 1>&6
-echo "configure:2641: checking for executable suffix" >&5
+echo "configure:2658: checking for executable suffix" >&5
if eval "test \"`echo '$''{'rtems_cv_exeext'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2670,12 +2687,12 @@ esac
for ac_func in strerror
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:2674: checking for $ac_func" >&5
+echo "configure:2691: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2679 "configure"
+#line 2696 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -2698,7 +2715,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:2702: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
+if { (eval echo configure:2719: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -2727,7 +2744,7 @@ if test "$target_cpu" = "unix" ; then
echo $ac_n "checking whether $RTEMS_HOST supports System V semaphores""... $ac_c" 1>&6
-echo "configure:2731: checking whether $RTEMS_HOST supports System V semaphores" >&5
+echo "configure:2748: checking whether $RTEMS_HOST supports System V semaphores" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_sem'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2736,7 +2753,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2740 "configure"
+#line 2757 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2762,7 +2779,7 @@ int main () {
}
EOF
-if { (eval echo configure:2766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2783: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_sem="yes"
else
@@ -2785,7 +2802,7 @@ echo "$ac_t""$rtems_cv_sysv_sem" 1>&6
echo $ac_n "checking whether $RTEMS_HOST supports System V shared memory""... $ac_c" 1>&6
-echo "configure:2789: checking whether $RTEMS_HOST supports System V shared memory" >&5
+echo "configure:2806: checking whether $RTEMS_HOST supports System V shared memory" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_shm'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2794,7 +2811,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2798 "configure"
+#line 2815 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2810,7 +2827,7 @@ int main () {
}
EOF
-if { (eval echo configure:2814: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2831: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_shm="yes"
else
@@ -2833,7 +2850,7 @@ echo "$ac_t""$rtems_cv_sysv_shm" 1>&6
echo $ac_n "checking whether $RTEMS_HOST supports System V messages""... $ac_c" 1>&6
-echo "configure:2837: checking whether $RTEMS_HOST supports System V messages" >&5
+echo "configure:2854: checking whether $RTEMS_HOST supports System V messages" >&5
if eval "test \"`echo '$''{'rtems_cv_sysv_msg'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -2842,7 +2859,7 @@ if test "$cross_compiling" = yes; then
:
else
cat > conftest.$ac_ext <<EOF
-#line 2846 "configure"
+#line 2863 "configure"
#include "confdefs.h"
#include <sys/types.h>
@@ -2858,7 +2875,7 @@ int main () {
}
EOF
-if { (eval echo configure:2862: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
+if { (eval echo configure:2879: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest && (./conftest; exit) 2>/dev/null
then
rtems_cv_sysv_msg="yes"
else
@@ -2883,7 +2900,7 @@ fi
# find all the Executive Makefiles
echo $ac_n "checking for Makefile.in in c/src/exec/score/tools/$target_cpu""... $ac_c" 1>&6
-echo "configure:2887: checking for Makefile.in in c/src/exec/score/tools/$target_cpu" >&5
+echo "configure:2904: checking for Makefile.in in c/src/exec/score/tools/$target_cpu" >&5
if test -d $srcdir/c/src/exec/score/tools/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2898,7 +2915,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/exec/rtems""... $ac_c" 1>&6
-echo "configure:2902: checking for Makefile.in in c/src/exec/rtems" >&5
+echo "configure:2919: checking for Makefile.in in c/src/exec/rtems" >&5
if test -d $srcdir/c/src/exec/rtems; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2913,7 +2930,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/exec/sapi""... $ac_c" 1>&6
-echo "configure:2917: checking for Makefile.in in c/src/exec/sapi" >&5
+echo "configure:2934: checking for Makefile.in in c/src/exec/sapi" >&5
if test -d $srcdir/c/src/exec/sapi; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2930,7 +2947,7 @@ fi
if test "$RTEMS_HAS_POSIX_API" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/exec/posix""... $ac_c" 1>&6
-echo "configure:2934: checking for Makefile.in in c/src/exec/posix" >&5
+echo "configure:2951: checking for Makefile.in in c/src/exec/posix" >&5
if test -d $srcdir/c/src/exec/posix; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -2952,7 +2969,7 @@ if test -d "$srcdir/c/src/lib/libbsp/$target_cpu"; then
if test -z "$rtems_bsp"; then
echo $ac_n "checking for bsps""... $ac_c" 1>&6
-echo "configure:2956: checking for bsps" >&5
+echo "configure:2973: checking for bsps" >&5
files=`ls $srcdir/c/src/lib/libbsp/$target_cpu`
for file in $files; do
case $file in
@@ -3017,7 +3034,7 @@ echo "configure:2956: checking for bsps" >&5
bspdirs="$bspdirs $bspdir"
echo $ac_n "checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir""... $ac_c" 1>&6
-echo "configure:3021: checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir" >&5
+echo "configure:3038: checking for Makefile.in in c/src/lib/libbsp/$bspcpudir$bspdir" >&5
if test -d $srcdir/c/src/lib/libbsp/$bspcpudir$bspdir; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3032,7 +3049,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared""... $ac_c" 1>&6
-echo "configure:3036: checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared" >&5
+echo "configure:3053: checking for Makefile.in in c/src/lib/libbsp/${bspcpudir}shared" >&5
if test -d $srcdir/c/src/lib/libbsp/${bspcpudir}shared; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3055,7 +3072,7 @@ fi
# find all the CPU dependent library Makefiles
echo $ac_n "checking for Makefile.in in c/src/lib/libcpu/$target_cpu""... $ac_c" 1>&6
-echo "configure:3059: checking for Makefile.in in c/src/lib/libcpu/$target_cpu" >&5
+echo "configure:3076: checking for Makefile.in in c/src/lib/libcpu/$target_cpu" >&5
if test -d $srcdir/c/src/lib/libcpu/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3072,7 +3089,7 @@ fi
if test "$skip_startfiles" != "yes"; then
echo $ac_n "checking for Makefile.in in c/src/lib/start/$target_cpu""... $ac_c" 1>&6
-echo "configure:3076: checking for Makefile.in in c/src/lib/start/$target_cpu" >&5
+echo "configure:3093: checking for Makefile.in in c/src/lib/start/$target_cpu" >&5
if test -d $srcdir/c/src/lib/start/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3103,10 +3120,35 @@ else
fi
# If the KA9Q TCP/IP stack is enabled, then find all KA9Q Makefiles
+echo $ac_n "checking if KA9Q networking is enabled? ""... $ac_c" 1>&6
+echo "configure:3125: checking if KA9Q networking is enabled? " >&5
+echo "$ac_t""$RTEMS_HAS_KA9Q" 1>&6
if test "$RTEMS_HAS_KA9Q" = "yes"; then
makefiles="$makefiles c/src/lib/libka9q/Makefile"
fi
+# If the TCP/IP stack is enabled, then find all TCP/IP Makefiles
+echo $ac_n "checking if networking is enabled? ""... $ac_c" 1>&6
+echo "configure:3133: checking if networking is enabled? " >&5
+echo "$ac_t""$RTEMS_HAS_NETWORKING" 1>&6
+if test "$RTEMS_HAS_NETWORKING" = "yes"; then
+
+echo $ac_n "checking for Makefile.in in c/src/lib/libnetworking""... $ac_c" 1>&6
+echo "configure:3138: checking for Makefile.in in c/src/lib/libnetworking" >&5
+if test -d $srcdir/c/src/lib/libnetworking; then
+ rtems_av_save_dir=`pwd`;
+ cd $srcdir;
+ rtems_av_tmp=`find c/src/lib/libnetworking -name "Makefile.in" -print | sed "s/Makefile\.in/%/" | sort | sed "s/%/Makefile/"`
+ makefiles="$makefiles $rtems_av_tmp";
+ cd $rtems_av_save_dir;
+ echo "$ac_t""done" 1>&6
+else
+ echo "$ac_t""no" 1>&6
+fi
+
+
+fi
+
# If the C++ support is enabled, then include the Makefiles
if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
makefiles="$makefiles c/src/lib/librtems++/Makefile"
@@ -3114,7 +3156,7 @@ fi
# If the tests are enabled, then find all the test suite Makefiles
echo $ac_n "checking if the test suites are enabled? ""... $ac_c" 1>&6
-echo "configure:3118: checking if the test suites are enabled? " >&5
+echo "configure:3160: checking if the test suites are enabled? " >&5
tests_enabled=yes
# Check whether --enable-tests or --disable-tests was given.
if test "${enable_tests+set}" = set; then
@@ -3133,7 +3175,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/tools/$target_cpu""... $ac_c" 1>&6
-echo "configure:3137: checking for Makefile.in in c/src/tests/tools/$target_cpu" >&5
+echo "configure:3179: checking for Makefile.in in c/src/tests/tools/$target_cpu" >&5
if test -d $srcdir/c/src/tests/tools/$target_cpu; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3150,7 +3192,7 @@ fi
if test "$tests_enabled" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/tests/libtests""... $ac_c" 1>&6
-echo "configure:3154: checking for Makefile.in in c/src/tests/libtests" >&5
+echo "configure:3196: checking for Makefile.in in c/src/tests/libtests" >&5
if test -d $srcdir/c/src/tests/libtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3165,7 +3207,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/sptests""... $ac_c" 1>&6
-echo "configure:3169: checking for Makefile.in in c/src/tests/sptests" >&5
+echo "configure:3211: checking for Makefile.in in c/src/tests/sptests" >&5
if test -d $srcdir/c/src/tests/sptests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3180,7 +3222,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/tmtests""... $ac_c" 1>&6
-echo "configure:3184: checking for Makefile.in in c/src/tests/tmtests" >&5
+echo "configure:3226: checking for Makefile.in in c/src/tests/tmtests" >&5
if test -d $srcdir/c/src/tests/tmtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3195,7 +3237,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/mptests""... $ac_c" 1>&6
-echo "configure:3199: checking for Makefile.in in c/src/tests/mptests" >&5
+echo "configure:3241: checking for Makefile.in in c/src/tests/mptests" >&5
if test -d $srcdir/c/src/tests/mptests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3211,7 +3253,7 @@ fi
if test "$RTEMS_HAS_POSIX_API" = "yes"; then
echo $ac_n "checking for Makefile.in in c/src/tests/psxtests""... $ac_c" 1>&6
-echo "configure:3215: checking for Makefile.in in c/src/tests/psxtests" >&5
+echo "configure:3257: checking for Makefile.in in c/src/tests/psxtests" >&5
if test -d $srcdir/c/src/tests/psxtests; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3229,7 +3271,7 @@ fi
# If the HWAPI is enabled, the find the HWAPI Makefiles
echo $ac_n "checking if the HWAPI is enabled? ""... $ac_c" 1>&6
-echo "configure:3233: checking if the HWAPI is enabled? " >&5
+echo "configure:3275: checking if the HWAPI is enabled? " >&5
# Check whether --enable-hwapi or --disable-hwapi was given.
if test "${enable_hwapi+set}" = set; then
enableval="$enable_hwapi"
@@ -3240,7 +3282,7 @@ if test "${enable_hwapi+set}" = set; then
makefiles="$makefiles c/src/lib/libhwapi/Makefile"
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/analog""... $ac_c" 1>&6
-echo "configure:3244: checking for Makefile.in in c/src/lib/libhwapi/analog" >&5
+echo "configure:3286: checking for Makefile.in in c/src/lib/libhwapi/analog" >&5
if test -d $srcdir/c/src/lib/libhwapi/analog; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3255,7 +3297,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/discrete""... $ac_c" 1>&6
-echo "configure:3259: checking for Makefile.in in c/src/lib/libhwapi/discrete" >&5
+echo "configure:3301: checking for Makefile.in in c/src/lib/libhwapi/discrete" >&5
if test -d $srcdir/c/src/lib/libhwapi/discrete; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3270,7 +3312,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/drivers""... $ac_c" 1>&6
-echo "configure:3274: checking for Makefile.in in c/src/lib/libhwapi/drivers" >&5
+echo "configure:3316: checking for Makefile.in in c/src/lib/libhwapi/drivers" >&5
if test -d $srcdir/c/src/lib/libhwapi/drivers; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3285,7 +3327,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory""... $ac_c" 1>&6
-echo "configure:3289: checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory" >&5
+echo "configure:3331: checking for Makefile.in in c/src/lib/libhwapi/non_volatile_memory" >&5
if test -d $srcdir/c/src/lib/libhwapi/non_volatile_memory; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3300,7 +3342,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/serial""... $ac_c" 1>&6
-echo "configure:3304: checking for Makefile.in in c/src/lib/libhwapi/serial" >&5
+echo "configure:3346: checking for Makefile.in in c/src/lib/libhwapi/serial" >&5
if test -d $srcdir/c/src/lib/libhwapi/serial; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3315,7 +3357,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/support""... $ac_c" 1>&6
-echo "configure:3319: checking for Makefile.in in c/src/lib/libhwapi/support" >&5
+echo "configure:3361: checking for Makefile.in in c/src/lib/libhwapi/support" >&5
if test -d $srcdir/c/src/lib/libhwapi/support; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3330,7 +3372,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libhwapi/wrapup""... $ac_c" 1>&6
-echo "configure:3334: checking for Makefile.in in c/src/lib/libhwapi/wrapup" >&5
+echo "configure:3376: checking for Makefile.in in c/src/lib/libhwapi/wrapup" >&5
if test -d $srcdir/c/src/lib/libhwapi/wrapup; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3372,10 +3414,11 @@ fi
+
# pick up all the Makefiles in required parts of the tree
echo $ac_n "checking for Makefile.in in c/build-tools""... $ac_c" 1>&6
-echo "configure:3379: checking for Makefile.in in c/build-tools" >&5
+echo "configure:3422: checking for Makefile.in in c/build-tools" >&5
if test -d $srcdir/c/build-tools; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3390,7 +3433,7 @@ fi
echo $ac_n "checking for Makefile.in in make""... $ac_c" 1>&6
-echo "configure:3394: checking for Makefile.in in make" >&5
+echo "configure:3437: checking for Makefile.in in make" >&5
if test -d $srcdir/make; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3405,7 +3448,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/lib/libmisc""... $ac_c" 1>&6
-echo "configure:3409: checking for Makefile.in in c/src/lib/libmisc" >&5
+echo "configure:3452: checking for Makefile.in in c/src/lib/libmisc" >&5
if test -d $srcdir/c/src/lib/libmisc; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3420,7 +3463,7 @@ fi
echo $ac_n "checking for Makefile.in in c/src/tests/samples""... $ac_c" 1>&6
-echo "configure:3424: checking for Makefile.in in c/src/tests/samples" >&5
+echo "configure:3467: checking for Makefile.in in c/src/tests/samples" >&5
if test -d $srcdir/c/src/tests/samples; then
rtems_av_save_dir=`pwd`;
cd $srcdir;
@@ -3652,6 +3695,7 @@ s%@RTEMS_LIBC_DIR@%$RTEMS_LIBC_DIR%g
s%@RTEMS_USE_OWN_PDIR@%$RTEMS_USE_OWN_PDIR%g
s%@RTEMS_HAS_POSIX_API@%$RTEMS_HAS_POSIX_API%g
s%@RTEMS_HAS_KA9Q@%$RTEMS_HAS_KA9Q%g
+s%@RTEMS_HAS_NETWORKING@%$RTEMS_HAS_NETWORKING%g
s%@RTEMS_USE_MACROS@%$RTEMS_USE_MACROS%g
s%@RTEMS_HAS_CPLUSPLUS@%$RTEMS_HAS_CPLUSPLUS%g
s%@RTEMS_USE_GCC272@%$RTEMS_USE_GCC272%g
diff --git a/configure.in b/configure.in
index a4a9125b38..f6ddc6923f 100644
--- a/configure.in
+++ b/configure.in
@@ -33,7 +33,15 @@ AC_ARG_ENABLE(ka9q, \
yes) RTEMS_HAS_KA9Q=yes ;;
no) RTEMS_HAS_KA9Q=no ;;
*) AC_MSG_ERROR(bad value ${enableval} for enable-ka9q option) ;;
-esac],[RTEMS_HAS_KA9Q=yes])
+esac],[RTEMS_HAS_KA9Q=no])
+
+AC_ARG_ENABLE(networking, \
+[ --enable-networking enable TCP/IP stack], \
+[case "${enableval}" in
+ yes) RTEMS_HAS_NETWORKING=yes ;;
+ no) RTEMS_HAS_NETWORKING=no ;;
+ *) AC_MSG_ERROR(bad value ${enableval} for enable-networking option) ;;
+esac],[RTEMS_HAS_NETWORKING=yes])
AC_ARG_ENABLE(rtems-inlines, \
[ --enable-rtems-inlines enable RTEMS inline functions (use macros)], \
@@ -372,10 +380,19 @@ else
fi
# If the KA9Q TCP/IP stack is enabled, then find all KA9Q Makefiles
+AC_MSG_CHECKING([if KA9Q networking is enabled? ])
+AC_MSG_RESULT($RTEMS_HAS_KA9Q)
if test "$RTEMS_HAS_KA9Q" = "yes"; then
makefiles="$makefiles c/src/lib/libka9q/Makefile"
fi
+# If the TCP/IP stack is enabled, then find all TCP/IP Makefiles
+AC_MSG_CHECKING([if networking is enabled? ])
+AC_MSG_RESULT($RTEMS_HAS_NETWORKING)
+if test "$RTEMS_HAS_NETWORKING" = "yes"; then
+ RTEMS_CHECK_MAKEFILE(c/src/lib/libnetworking)
+fi
+
# If the C++ support is enabled, then include the Makefiles
if test "$RTEMS_HAS_CPLUSPLUS" = "yes"; then
makefiles="$makefiles c/src/lib/librtems++/Makefile"
@@ -438,6 +455,7 @@ AC_SUBST(RTEMS_LIBC_DIR)
AC_SUBST(RTEMS_USE_OWN_PDIR)
AC_SUBST(RTEMS_HAS_POSIX_API)
AC_SUBST(RTEMS_HAS_KA9Q)
+AC_SUBST(RTEMS_HAS_NETWORKING)
AC_SUBST(RTEMS_USE_MACROS)
AC_SUBST(RTEMS_HAS_CPLUSPLUS)
AC_SUBST(RTEMS_USE_GCC272)
diff --git a/make/compilers/gcc-target-default.cfg b/make/compilers/gcc-target-default.cfg
index 359ae1a295..ee533743e8 100644
--- a/make/compilers/gcc-target-default.cfg
+++ b/make/compilers/gcc-target-default.cfg
@@ -22,6 +22,10 @@ CPLUS_CPPFLAGS=$(CFLAGS) $(XCPPFLAGS)
INCLUDE_KA9Q_yes_V = -I$(PROJECT_INCLUDE)/ka9q
INCLUDE_KA9Q = $(INCLUDE_KA9Q_$(HAS_KA9Q)_V)
+# We only include the header files for networking if it is enabled.
+INCLUDE_NETWORKING_yes_V = -I$(PROJECT_INCLUDE)/networking
+INCLUDE_NETWORKING = $(INCLUDE_NETWORKING_$(HAS_NETWORKING)_V)
+
ifeq ($(RTEMS_USE_GCC272),yes)
ifeq ($(RTEMS_CROSS_TARGET),no)
@@ -33,6 +37,7 @@ endif
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-I$(PROJECT_INCLUDE) \
$(INCLUDE_KA9Q) \
+ $(INCLUDE_NETWORKING) \
$(RTEMS_LIBC_INCLUDES) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g \
@@ -46,6 +51,7 @@ GCC_INCLUDE=$(shell $(CC) $(CPU_CFLAGS) -print-file-name=include $(GCCSED))
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-nostdinc -I$(PROJECT_INCLUDE) \
$(INCLUDE_KA9Q) \
+ $(INCLUDE_NETWORKING) \
-I$(RTEMS_LIBC_DIR)/include -I$(GCC_INCLUDE) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g \
@@ -65,7 +71,7 @@ endif
else
CFLAGS_DEFAULT = $(CPU_DEFINES) $(CPU_CFLAGS) -Wall -ansi -fasm -g \
-B$(PROJECT_RELEASE)/lib/ -specs bsp_specs -qrtems \
- $(INCLUDE_KA9Q) $(DEFINES)
+ $(INCLUDE_KA9Q) $(INCLUDE_NETWORKING) $(DEFINES)
ASMFLAGS=$(CPU_DEFINES) $(CPU_CFLAGS) -g -I$(srcdir) \
-B$(PROJECT_RELEASE)/lib/ -specs bsp_specs -qrtems $(DEFINES)
diff --git a/make/custom/FreeBSD-posix.cfg b/make/custom/FreeBSD-posix.cfg
index 326c0078f2..3dd9b6499e 100644
--- a/make/custom/FreeBSD-posix.cfg
+++ b/make/custom/FreeBSD-posix.cfg
@@ -44,6 +44,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This target does NOT support the POSIX API.
HAS_POSIX_API=no
diff --git a/make/custom/HPUX9-posix.cfg b/make/custom/HPUX9-posix.cfg
index c0383ea164..d054bc370a 100644
--- a/make/custom/HPUX9-posix.cfg
+++ b/make/custom/HPUX9-posix.cfg
@@ -43,6 +43,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This target does NOT support the POSIX API.
HAS_POSIX_API=no
diff --git a/make/custom/Linux-posix.cfg b/make/custom/Linux-posix.cfg
index 2972d6388a..c50daf9006 100644
--- a/make/custom/Linux-posix.cfg
+++ b/make/custom/Linux-posix.cfg
@@ -45,6 +45,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This target does NOT support the POSIX API.
HAS_POSIX_API=no
diff --git a/make/custom/Solaris-posix.cfg b/make/custom/Solaris-posix.cfg
index f2bf14997c..34eb6264d8 100644
--- a/make/custom/Solaris-posix.cfg
+++ b/make/custom/Solaris-posix.cfg
@@ -44,6 +44,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This target does NOT support the POSIX API.
HAS_POSIX_API=no
diff --git a/make/custom/cvme961.cfg b/make/custom/cvme961.cfg
index fbc8eb660a..6513ed1441 100644
--- a/make/custom/cvme961.cfg
+++ b/make/custom/cvme961.cfg
@@ -32,6 +32,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/default.cfg b/make/custom/default.cfg
index f09b2f89e3..980b73cf5b 100644
--- a/make/custom/default.cfg
+++ b/make/custom/default.cfg
@@ -63,6 +63,15 @@ HAS_MP=no
# Define this to yes if this target wants the KA9Q TCP/IP stack
ifeq ($(RTEMS_HAS_KA9Q),yes)
HAS_KA9Q=yes
+else
+HAS_KA9Q=no
+endif
+
+# Define this to yes if this target wants the TCP/IP stack
+ifeq ($(RTEMS_HAS_NETWORKING),yes)
+HAS_NETWORKING=yes
+else
+HAS_NETWORKING=no
endif
# Define this to yes if this target wants the posix api
diff --git a/make/custom/dmv152.cfg b/make/custom/dmv152.cfg
index 078f23c636..c8337e15a3 100644
--- a/make/custom/dmv152.cfg
+++ b/make/custom/dmv152.cfg
@@ -27,6 +27,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
# if defined asserts do not generate code. This is commonly used
diff --git a/make/custom/efi332.cfg b/make/custom/efi332.cfg
index ec3a4d8cde..cc4c1b50f4 100644
--- a/make/custom/efi332.cfg
+++ b/make/custom/efi332.cfg
@@ -26,6 +26,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Override default start file
START_BASE=start332
diff --git a/make/custom/efi68k.cfg b/make/custom/efi68k.cfg
index 34f91c2357..09c15910d6 100644
--- a/make/custom/efi68k.cfg
+++ b/make/custom/efi68k.cfg
@@ -25,6 +25,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Override default start file
START_BASE=start68k
diff --git a/make/custom/erc32.cfg b/make/custom/erc32.cfg
index 3267d52474..2e0a27595c 100644
--- a/make/custom/erc32.cfg
+++ b/make/custom/erc32.cfg
@@ -32,6 +32,10 @@ CFLAGS_OPTIMIZE_V=-O4
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Override default start file
START_BASE=startsis
diff --git a/make/custom/force386.cfg b/make/custom/force386.cfg
index 7828e3576d..6fce969131 100644
--- a/make/custom/force386.cfg
+++ b/make/custom/force386.cfg
@@ -28,6 +28,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/gen68302.cfg b/make/custom/gen68302.cfg
index 7fce2148d2..ef4293e053 100644
--- a/make/custom/gen68302.cfg
+++ b/make/custom/gen68302.cfg
@@ -26,6 +26,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/gensh1.cfg b/make/custom/gensh1.cfg
index 526c775d82..38eb59db15 100644
--- a/make/custom/gensh1.cfg
+++ b/make/custom/gensh1.cfg
@@ -35,6 +35,10 @@ HAS_MP=no
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# debug flags: typically none, but we use -O1 as it produces better code
CFLAGS_DEBUG_V = -O1
diff --git a/make/custom/go32.cfg b/make/custom/go32.cfg
index ff67d0b0fd..e8708d6a03 100644
--- a/make/custom/go32.cfg
+++ b/make/custom/go32.cfg
@@ -57,6 +57,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Base name of start file
# go32 does not use the rtems start file
START_BASE=
diff --git a/make/custom/i386ex.cfg b/make/custom/i386ex.cfg
index 12fcec58fb..bedf6bd107 100644
--- a/make/custom/i386ex.cfg
+++ b/make/custom/i386ex.cfg
@@ -25,6 +25,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/idp.cfg b/make/custom/idp.cfg
index 89541a7522..1ffac2e85d 100644
--- a/make/custom/idp.cfg
+++ b/make/custom/idp.cfg
@@ -16,6 +16,10 @@ RTEMS_BSP_FAMILY=idp
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/mvme136.cfg b/make/custom/mvme136.cfg
index ada4a834f4..17ecd7bf24 100644
--- a/make/custom/mvme136.cfg
+++ b/make/custom/mvme136.cfg
@@ -29,6 +29,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/mvme147.cfg b/make/custom/mvme147.cfg
index 89aab49929..092b4890ee 100644
--- a/make/custom/mvme147.cfg
+++ b/make/custom/mvme147.cfg
@@ -23,6 +23,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/mvme162.cfg b/make/custom/mvme162.cfg
index 21a2fe7782..d3c55c2a75 100644
--- a/make/custom/mvme162.cfg
+++ b/make/custom/mvme162.cfg
@@ -50,6 +50,10 @@ CFLAGS_OPTIMIZE_V=-O4 -fomit-frame-pointer
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/no_bsp.cfg b/make/custom/no_bsp.cfg
index a0f29170de..83937a06f4 100644
--- a/make/custom/no_bsp.cfg
+++ b/make/custom/no_bsp.cfg
@@ -31,4 +31,8 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Miscellaneous additions go here
diff --git a/make/custom/ods68302.cfg b/make/custom/ods68302.cfg
index ac4ffa9d0d..0988c53a04 100644
--- a/make/custom/ods68302.cfg
+++ b/make/custom/ods68302.cfg
@@ -36,6 +36,10 @@ CFLAGS_DEBUG_V+=-g
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Define this to yes if C++ is included in the development environment.
# This requires that at least the GNU C++ compiler and libg++ be installed.
ifeq ($(RTEMS_HAS_CPLUSPLUS),yes)
diff --git a/make/custom/p4000.cfg b/make/custom/p4000.cfg
index 9f468adfc0..298c443249 100644
--- a/make/custom/p4000.cfg
+++ b/make/custom/p4000.cfg
@@ -16,6 +16,10 @@ RTEMS_BSP_FAMILY=p4000
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/p4600.cfg b/make/custom/p4600.cfg
index 2d8e5b3f9b..527e6cada9 100644
--- a/make/custom/p4600.cfg
+++ b/make/custom/p4600.cfg
@@ -29,6 +29,10 @@ RTEMS_BSP=p4000
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/p4650.cfg b/make/custom/p4650.cfg
index 3b01b116fd..e249fb2870 100644
--- a/make/custom/p4650.cfg
+++ b/make/custom/p4650.cfg
@@ -28,6 +28,10 @@ RTEMS_BSP=p4000
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/papyrus.cfg b/make/custom/papyrus.cfg
index 830238bb1b..10f4cf0368 100644
--- a/make/custom/papyrus.cfg
+++ b/make/custom/papyrus.cfg
@@ -19,6 +19,10 @@ RTEMS_BSP_FAMILY=papyrus
# This target does NOT support the KA9Q TCP/IP stack so ignore requests
# to enable it.
HAS_KA9Q=no
+
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
# This section makes the target dependent options file.
diff --git a/make/custom/portsw.cfg b/make/custom/portsw.cfg
index eee46e86e3..6669819dd2 100644
--- a/make/custom/portsw.cfg
+++ b/make/custom/portsw.cfg
@@ -56,6 +56,10 @@ HAS_MP=no
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# Define this to yes if this target wants the posix api
HAS_POSIX_API=no
diff --git a/make/custom/psim.cfg b/make/custom/psim.cfg
index a67ad5f6dc..7a7f2fef17 100644
--- a/make/custom/psim.cfg
+++ b/make/custom/psim.cfg
@@ -16,6 +16,10 @@ RTEMS_BSP_FAMILY=psim
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This section makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/custom/simhppa.cfg b/make/custom/simhppa.cfg
index e1d87622f3..43674ea40d 100644
--- a/make/custom/simhppa.cfg
+++ b/make/custom/simhppa.cfg
@@ -42,6 +42,10 @@ HAS_MP=yes
# to enable it.
HAS_KA9Q=no
+# This target does NOT support the TCP/IP stack so ignore requests
+# to enable it.
+HAS_NETWORKING=no
+
# This makes the target dependent options file.
# NDEBUG (C library)
diff --git a/make/target.cfg.in b/make/target.cfg.in
index 50033d933f..01f3ae1a72 100644
--- a/make/target.cfg.in
+++ b/make/target.cfg.in
@@ -40,6 +40,7 @@ RTEMS_HOST = @RTEMS_HOST@
RTEMS_USE_OWN_PDIR = @RTEMS_USE_OWN_PDIR@
RTEMS_HAS_POSIX_API = @RTEMS_HAS_POSIX_API@
RTEMS_HAS_KA9Q = @RTEMS_HAS_KA9Q@
+RTEMS_HAS_NETWORKING = @RTEMS_HAS_NETWORKING@
RTEMS_HAS_CPLUSPLUS = @RTEMS_HAS_CPLUSPLUS@
RTEMS_USE_MACROS = @RTEMS_USE_MACROS@
RTEMS_USE_GCC272 = @RTEMS_USE_GCC272@