2da8491ad3a9d6f4aa833f36add1b459edaa281bvboxsync# $Id$
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync## @file
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# Adds sources list and defines required to LWIP pre-1.5.0 compilation
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync#
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync#
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# Copyright (C) 2006-2012 Oracle Corporation
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync#
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# available from http://www.virtualbox.org. This file is free software;
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# you can redistribute it and/or modify it under the terms of the GNU
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# General Public License (GPL) as published by the Free Software
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync#
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
b05c23c391bac648a3635b9aecb24117f748a67dvboxsyncLWIP_INCS += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/include \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/include/ipv4 \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/include/ipv6 \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync vbox/include \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync vbox
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
b05c23c391bac648a3635b9aecb24117f748a67dvboxsyncLWIP_SOURCES += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/api_lib.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/api_msg.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/err.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/netbuf.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/netdb.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/netifapi.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/sockets.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/api/tcpip.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/def.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/dhcp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/dns.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/inet_chksum.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/init.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/autoip.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/icmp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/igmp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/ip4.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/ip4_addr.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv4/ip_frag.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/dhcp6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/ethip6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/icmp6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/inet6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/ip6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/ip6_addr.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/ip6_frag.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/mld6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/ipv6/nd6.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/mem.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/memp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/netif.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/pbuf.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/raw.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/stats.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/sys.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/tcp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/tcp_in.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/tcp_out.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/timers.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/core/udp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync src/netif/etharp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync vbox/sys_arch.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync vbox/VBoxLwipCore.cpp
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
fb10e57923eccc4b248e05c64c505f33a501857avboxsync# LWIP_SOURCES += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/asn1_dec.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/asn1_enc.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/mib2.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/mib_structs.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/msg_in.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/core/snmp/msg_out.c \
fb10e57923eccc4b248e05c64c505f33a501857avboxsync
fb10e57923eccc4b248e05c64c505f33a501857avboxsync# LWIP_SOURCES += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/slipif.c \
fb10e57923eccc4b248e05c64c505f33a501857avboxsync
fb10e57923eccc4b248e05c64c505f33a501857avboxsync# LWIP_SOURCES += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/auth.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/chap.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/chpms.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/fsm.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/ipcp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/lcp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/magic.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/md5.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/pap.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/ppp.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/ppp_oe.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/randm.c \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync# src/netif/ppp/vj.c
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncdefine _def_vbox_lwip_use # VAR_BaseName, path/to/lwip/dir
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync $(strip $1)_SOURCES += \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync $(foreach file, $(LWIP_SOURCES), $(strip $2)/$(file))
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync # if individual lwip files need special settings, add them here:
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync # $(strip $2)/src/foo/bar.c_CFLAGS += -magic
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncendef
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsyncdefine def_vbox_lwip_flags # PROTO_BaseName, VAR_BaseName, path/to/lwip/dir
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync # add anything configured for the component via PROTO_BaseName
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(foreach suffix, INCS DEFS,
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(if $(value $(strip $1)_LWIP_$(suffix)),
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(eval #
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(strip $2)_$(suffix) += $(value $(strip $1)_LWIP_$(suffix))
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync )))
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync # add lwip's own includes
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(strip $2)_INCS += $(foreach incdir, $(LWIP_INCS), $(strip $3)/$(incdir))
7c4364408b7a09aba4789cc74a1437e129a3a048vboxsync
7c4364408b7a09aba4789cc74a1437e129a3a048vboxsync # disable lwip assertions for some build types
7c4364408b7a09aba4789cc74a1437e129a3a048vboxsync $(strip $2)_DEFS.release += LWIP_NOASSERT
7c4364408b7a09aba4789cc74a1437e129a3a048vboxsync $(strip $2)_DEFS.profile += LWIP_NOASSERT
7c4364408b7a09aba4789cc74a1437e129a3a048vboxsync $(strip $2)_DEFS.kprofile += LWIP_NOASSERT
0f7cd333d1518ad3727eea757bd7c0374939e2davboxsyncendef
0f7cd333d1518ad3727eea757bd7c0374939e2davboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### Call this if you want to expose lwip to your component as a whole.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### In this case individual lwip files (added to _SOURCES of your
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### component) will pick up lwip includes etc from your component
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### settings.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### This is, for example, how NetworkServices/NAT uses it.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncdefine def_vbox_lwip_public # VAR_BaseName, path/to/lwip/dir
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync $(eval $(call _def_vbox_lwip_use, $1, $2))
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(eval $(call def_vbox_lwip_flags, $1, $1, $2))
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncendef
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### Call this if you want to expose lwip only to a few selected files.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### In this case each lwip file is configured with lwip includes etc
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### separately and you are supposed to call def_vbox_lwip_flags
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### yourself for those of your files that use lwip.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync### This is, for example, how Devices uses it.
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync###
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncdefine def_vbox_lwip_private # VAR_BaseName, path/to/lwip/dir
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync $(eval $(call _def_vbox_lwip_use, $1, $2))
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync $(foreach file, $(LWIP_SOURCES), \
1f2072fe52cfd4f4160dbfb7471038f7a638c044vboxsync $(eval $(call def_vbox_lwip_flags, $1, $(strip $2)/$(file), $2)))
a3d9dd392ec76233e30f01423ed5755e6187618evboxsyncendef
fb10e57923eccc4b248e05c64c505f33a501857avboxsync
fb10e57923eccc4b248e05c64c505f33a501857avboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncifeq ($(USERNAME), vvl)
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync$(foreach lwip_file, $(LWIP_SOURCES), $(eval $(lwip_file)_DEFS=RTMEM_WRAP_TO_EF_APIS))
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncLWIPTEST_SOURCES= Network/lwip-new/test/unit/core/test_mem.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/etharp/test_etharp.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/lwip_unittests.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/tcp/tcp_helper.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/tcp/test_tcp.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/tcp/test_tcp_oos.c \
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsync Network/lwip-new/test/unit/udp/test_udp.c
2e848e79ccf2e4285250a0af98ddb9eb28864878vboxsyncendif