# $Id: Makefile.kmk 62481 2016-07-22 18:30:21Z vboxsync $ ## @file # # # Copyright (C) 2006-2016 Oracle Corporation # # This file is part of VirtualBox Open Source Edition (OSE), as # available from http://www.virtualbox.org. This file is free software; # you can redistribute it and/or modify it under the terms of the GNU # General Public License (GPL) as published by the Free Software # Foundation, in version 2 as it comes in the "COPYING" file of the # VirtualBox OSE distribution. VirtualBox OSE is distributed in the # hope that it will be useful, but WITHOUT ANY WARRANTY of any kind. # SUB_DEPTH = ../../../.. include $(KBUILD_PATH)/subheader.kmk VBOX_PATH_NAT_SRC := $(PATH_SUB_CURRENT) ifdef VBOX_WITH_LWIP_NAT # XXX: do not depend on order ifndef LWIP_SOURCES include $(PATH_SUB_CURRENT)/../../Devices/Network/lwip-new/Makefile.kmk endif ifdef VBOX_WITH_HARDENING PROGRAMS += VBoxNetLwipNATHardened DLLS += VBoxNetLwipNAT else PROGRAMS += VBoxNetLwipNAT endif ifdef VBOX_WITH_HARDENING VBoxNetLwipNATHardened_SOURCES += VBoxNetNATHardened.cpp VBoxNetLwipNATHardened_SOURCES.win = $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc VBoxNetLwipNATHardened_DEFS += SERVICE_NAME=\"VBoxNetNAT\" VBoxNetLwipNATHardened_TEMPLATE=VBOXR3HARDENEDEXE VBoxNetLwipNATHardened_NAME = VBoxNetNAT VBoxNetLwipNATHardened_LDFLAGS.win = /SUBSYSTEM:windows endif VBoxNetLwipNAT_TEMPLATE = VBoxNetLwipNAT_TEMPLATE := VBOXMAIN$(if-expr defined(VBOX_WITH_HARDENING),DLL,CLIENTEXE) VBoxNetLwipNAT_NAME = VBoxNetNAT VBoxNetLwipNAT_DEFS += ${LWIP_DEFS} IPv6 # VBoxNetLwipNAT_DEFS.linux += WITH_VALGRIND # instrument lwip memp.c VBoxNetLwipNAT_DEFS.win += VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x501 # Windows XP VBoxNetLwipNAT_SOURCES += VBoxNetLwipNAT.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/VBoxNetBaseService.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/VBoxNetPortForwardString.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/VBoxNetIntIf.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/VBoxNetUDP.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/VBoxNetARP.cpp \ $(VBOX_PATH_NAT_SRC)/../NetLib/ComHostUtils.cpp VBoxNetLwipNAT_LIBS = \ $(LIB_RUNTIME) VBoxNetLwipNAT_LIBS.solaris += socket nsl VBoxNetLwipNAT_LDFLAGS.win = /SUBSYSTEM:windows # Convince Solaris headers to expose socket stuff we need. # # Setting _XOPEN_SOURCE to either 500 or 600 would always work, but # insists that 600 requires C99 and so it # explodes for older g++. It also insists that 500 is NOT to be used # with C99. # # Newer g++ in C++11 mode (formerly known as C++0x) needs 600, so it # employs sleight of hand to pretend it's C99 to keep feature test # happy. # # Compile the C code with settings that match g++. This probably # should be centralized so that whole codebase uses consistent # settings. ifeq ($(KBUILD_TARGET),solaris) ifneq ($(VBOX_GCC_VERSION_CXX),) ifneq ($(int-ge $(VBOX_GCC_VERSION_CXX),40600),) # we compile C++ code with -std=c++0x / -std=c++11 VBoxNetLwipNAT_CFLAGS.solaris += -std=c99 VBoxNetLwipNAT_DEFS.solaris += _XOPEN_SOURCE=600 else VBoxNetLwipNAT_DEFS.solaris += _XOPEN_SOURCE=500 endif endif VBoxNetLwipNAT_DEFS.solaris += __EXTENSIONS__=1 endif VBoxNetLwipNAT_SOURCES += \ proxy_pollmgr.c \ proxy_rtadvd.c \ proxy.c \ pxremap.c \ pxtcp.c \ pxudp.c \ pxdns.c \ fwtcp.c \ fwudp.c \ portfwd.c \ proxy_dhcp6ds.c \ proxy_tftpd.c ifeq ($(KBUILD_TARGET),win) # unprivileged Icmp API VBoxNetLwipNAT_SOURCES += pxping_win.c else # raw sockets VBoxNetLwipNAT_SOURCES += pxping.c endif # ifeq ($(VBOX_WITH_HARDENING),) # ifn1of ($(KBUILD_TARGET), darwin win) # # helper for debugging unprivileged # VBoxNetLwipNAT_DEFS += VBOX_RAWSOCK_DEBUG_HELPER # VBoxNetLwipNAT_SOURCES += getrawsock.c # endif # endif VBoxNetLwipNAT_SOURCES.darwin += rtmon_bsd.c VBoxNetLwipNAT_SOURCES.freebsd += rtmon_bsd.c VBoxNetLwipNAT_SOURCES.linux += rtmon_linux.c VBoxNetLwipNAT_SOURCES.solaris += rtmon_bsd.c VBoxNetLwipNAT_SOURCES.win += rtmon_win.c VBoxNetLwipNAT_SOURCES.win += \ RTWinPoll.cpp \ RTWinSocketPair.cpp VBoxNetLwipNAT_INCS += . # for lwipopts.h $(eval $(call def_vbox_lwip_public, \ VBoxNetLwipNAT, $(PATH_SUB_CURRENT)/../../Devices/Network/lwip-new)) endif ifeq ($(KBUILD_TARGET),win) # Icon include file. VBoxNetLwipNAT_SOURCES += VBoxNetNAT.rc VBoxNetNAT.rc_INCS = $(VBoxNetLwipNAT_0_OUTDIR) VBoxNetNAT.rc_DEPS = $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc VBoxNetNAT.rc_CLEAN = $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc $$(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc: $(VBOX_WINDOWS_ICON_FILE) $$(VBoxNetLwipNAT_DEFPATH)/Makefile.kmk | $$(dir $$@) $(RM) -f $@ $(APPEND) $@ 'IDI_VIRTUALBOX ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"' endif # win include $(FILE_KBUILD_SUB_FOOTER)