Makefile.kmk revision dcea28d87546913d664d332092030127558b642c
772269936494ffaddd0750ba9e28e805ba81398cvboxsync# Copyright (C) 2006-2012 Oracle Corporation
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# This file is part of VirtualBox Open Source Edition (OSE), as
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# available from http://www.virtualbox.org. This file is free software;
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# you can redistribute it and/or modify it under the terms of the GNU
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# General Public License (GPL) as published by the Free Software
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# Foundation, in version 2 as it comes in the "COPYING" file of the
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
0b87790df72dd730ef361a1ce1a8d40ed4d15e10vboxsync# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
d1a00c93378091ef28db9d959b2d692cc8143a07vboxsyncSUB_DEPTH = ../../../..
d1a00c93378091ef28db9d959b2d692cc8143a07vboxsyncinclude $(KBUILD_PATH)/subheader.kmk
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsyncifdef VBOX_WITH_LWIP_NAT
4acc8b08449be3ee3745e66d85e79f474098870bvboxsync# XXX: do not depend on order
4acc8b08449be3ee3745e66d85e79f474098870bvboxsyncifndef LWIP_SOURCES
4acc8b08449be3ee3745e66d85e79f474098870bvboxsync include ../../Devices/Network/lwip-new/Makefile.kmk
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsyncifdef VBOX_WITH_HARDENING
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsync PROGRAMS += VBoxNetLwipNATHardened
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsync DLLS += VBoxNetLwipNAT
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsync PROGRAMS += VBoxNetLwipNAT
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsyncifdef VBOX_WITH_HARDENING
1b23da133a9fa48adc1ea464ef9f17ceeacf6742vboxsync VBoxNetLwipNATHardened_SOURCES += VBoxNetNATHardened.cpp
dcea28d87546913d664d332092030127558b642cvboxsync VBoxNetLwipNATHardened_SOURCES.win = $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc
20fc4a350a4a8e56ffaac6cf57dcd677a7ac36c5vboxsync VBoxNetLwipNATHardened_DEFS += SERVICE_NAME=\"VBoxNetNAT\"
38ce01f0174eaa361f03608d5576e517a615a9dbvboxsync VBoxNetLwipNATHardened_TEMPLATE=VBOXR3HARDENEDEXE
20fc4a350a4a8e56ffaac6cf57dcd677a7ac36c5vboxsync VBoxNetLwipNATHardened_NAME = VBoxNetNAT
13493ab7596e827b8d0caab2c89e635dd65f78f9vboxsync VBoxNetLwipNATHardened_LDFLAGS.win = /SUBSYSTEM:windows
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsyncVBoxNetLwipNAT_TEMPLATE =
38ce01f0174eaa361f03608d5576e517a615a9dbvboxsyncVBoxNetLwipNAT_TEMPLATE := VBOXMAIN$(if-expr defined(VBOX_WITH_HARDENING),DLL,CLIENTEXE)
c550c12592dedfe03ef31ce25305c688073dc72cvboxsyncVBoxNetLwipNAT_NAME = VBoxNetNAT
a24a5c1de771bb93e5b0fe0adb3e16dc6d835838vboxsyncVBoxNetLwipNAT_DEFS += ${LWIP_DEFS} IPv6
2fa7e677ac62fdf33911319f0f558306a19d477cvboxsync# VBoxNetLwipNAT_DEFS.linux += WITH_VALGRIND # instrument lwip memp.c
177727c096bdc6d5749f5f95c7307d9e6af5653dvboxsyncVBoxNetLwipNAT_DEFS.win += VBOX_COM_OUTOFPROC_MODULE _WIN32_WINNT=0x501 # Windows XP
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsyncVBoxNetLwipNAT_SOURCES += VBoxNetLwipNAT.cpp \
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsyncVBoxNetLwipNAT_LIBS = \
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsync $(LIB_RUNTIME)
2622c26c6b4105d944a29c5e2c77b6ef26e10101vboxsyncVBoxNetLwipNAT_LDFLAGS.win = /SUBSYSTEM:windows
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# Convince Solaris headers to expose socket stuff we need.
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# Setting _XOPEN_SOURCE to either 500 or 600 would always work, but
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# <sys/feature_tests.h> insists that 600 requires C99 and so it
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# explodes for older g++. It also insists that 500 is NOT to be used
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# Newer g++ in C++11 mode (formerly known as C++0x) needs 600, so it
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# employs sleight of hand to pretend it's C99 to keep feature test
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# Compile the C code with settings that match g++. This probably
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync# should be centralized so that whole codebase uses consistent
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsyncifeq ($(KBUILD_TARGET),solaris)
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync ifneq ($(VBOX_GCC_VERSION_CXX),)
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync ifneq ($(int-ge $(VBOX_GCC_VERSION_CXX),40600),)
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync # we compile C++ code with -std=c++0x / -std=c++11
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync VBoxNetLwipNAT_DEFS.solaris += _XOPEN_SOURCE=600
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync VBoxNetLwipNAT_DEFS.solaris += _XOPEN_SOURCE=500
6378953a7e2b7787c4955fdf1a88710f5f98c769vboxsync VBoxNetLwipNAT_DEFS.solaris += __EXTENSIONS__=1
a218a3f92594b5f2beb9c8298c6fe6e3a8e502f8vboxsyncVBoxNetLwipNAT_SOURCES += \
9f8403c919ff34010f07a4e697c619fbfe832555vboxsyncifeq ($(KBUILD_TARGET),win)
9f8403c919ff34010f07a4e697c619fbfe832555vboxsync # unprivileged Icmp API
9f8403c919ff34010f07a4e697c619fbfe832555vboxsync VBoxNetLwipNAT_SOURCES += pxping_win.c
9f8403c919ff34010f07a4e697c619fbfe832555vboxsync # raw sockets
9f8403c919ff34010f07a4e697c619fbfe832555vboxsync VBoxNetLwipNAT_SOURCES += pxping.c
c12ea5636f55fa8c4d8de7d0ccb870c5f8bcc231vboxsync# ifeq ($(VBOX_WITH_HARDENING),)
c12ea5636f55fa8c4d8de7d0ccb870c5f8bcc231vboxsync# ifn1of ($(KBUILD_TARGET), darwin win)
c12ea5636f55fa8c4d8de7d0ccb870c5f8bcc231vboxsync# # helper for debugging unprivileged
5eb4b75eda15627221295b5a3edf2d0622b4da28vboxsync# VBoxNetLwipNAT_DEFS += VBOX_RAWSOCK_DEBUG_HELPER
c12ea5636f55fa8c4d8de7d0ccb870c5f8bcc231vboxsync# VBoxNetLwipNAT_SOURCES += getrawsock.c
60ab040676f3fed809de7b4bb12233b1b4a96136vboxsyncVBoxNetLwipNAT_INCS += . # for lwipopts.h
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync$(eval $(call def_vbox_lwip_public, \
a3d9dd392ec76233e30f01423ed5755e6187618evboxsync VBoxNetLwipNAT, ../../Devices/Network/lwip-new))
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsync# Icon include file.
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsyncVBoxNetLwipNAT_SOURCES.win += $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsyncVBoxNetLwipNAT_CLEAN.win += $(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsync$$(VBoxNetLwipNAT_0_OUTDIR)/VBoxNetLwipNAT-icon.rc: $(VBOX_WINDOWS_ICON_FILE) $$(VBoxNetLwipNAT_DEFPATH)/Makefile.kmk | $$(dir $$@)
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsync $(RM) -f $@
d86f28d9c698e2ec000650267e4599177ceaeac3vboxsync $(APPEND) $@ 'IDI_VIRTUALBOX ICON DISCARDABLE "$(subst /,\\,$(VBOX_WINDOWS_ICON_FILE))"'
772269936494ffaddd0750ba9e28e805ba81398cvboxsyncinclude $(FILE_KBUILD_SUB_FOOTER)