1PORTNAME=	virtualbox-ose
2PORTVERSION=	5.2.44
3PORTREVISION?=	1
4CATEGORIES=	emulators
5MASTER_SITES=	https://download.oracle.com/virtualbox/${PORTVERSION}/
6PKGNAMESUFFIX?=	-additions-legacy
7DISTNAME=	VirtualBox-${PORTVERSION}
8
9MAINTAINER=	ports@MidnightBSD.org
10COMMENT=	VirtualBox additions for FreeBSD guests
11WWW=		https://www.virtualbox.org/
12
13LICENSE=	gpl2
14LICENSE_FILE=	${WRKSRC}/COPYING
15
16ONLY_FOR_ARCHS=	amd64 i386
17USES=		compiler:c++11-lang cpe iconv kmod tar:bzip2
18USE_RC_SUBR=	vboxguest vboxservice
19
20BUILD_DEPENDS=	yasm:devel/yasm \
21		kmk:devel/kBuild \
22		xsltproc:textproc/libxslt
23
24CPE_VENDOR=	oracle
25CPE_PRODUCT=	vm_virtualbox
26
27PATCHDIR=	${.CURDIR}/../${PORTNAME}-legacy/files
28WRKSRC=		${WRKDIR}/VirtualBox-${PORTVERSION}
29MAKE_JOBS_UNSAFE=	yes
30
31HAS_CONFIGURE=	yes
32CONFIGURE_ARGS+=	--disable-alsa \
33			--disable-docs \
34			--disable-libvpx \
35			--disable-opengl \
36			--disable-pulse \
37			--disable-python \
38			--disable-sdl-ttf \
39			--disable-xpcom
40CONFIGURE_ARGS+=	--nofatal --with-gcc="${CC}" --with-g++="${CXX}"
41
42CONFLICTS_INSTALL=	virtualbox-ose \
43			virtualbox-ose-additions \
44			virtualbox-ose-additions-devel \
45			virtualbox-ose-devel \
46			virtualbox-ose-lite \
47			virtualbox-ose-nox11
48
49EXTRACT_AFTER_ARGS=	--exclude tools/*.x86 --exclude tools/*.amd64 --exclude Firmware
50PORTSCOUT=	limit:^5\.
51
52OPTIONS_DEFINE=		DBUS DEBUG X11
53OPTIONS_DEFINE_i386=	PAE
54OPTIONS_DEFAULT=	DBUS X11
55OPTIONS_SUB=		yes
56
57PAE_DESC=		Build kernel modules for PAE-kernels
58DBUS_CONFIGURE_OFF=	--disable-dbus
59DBUS_LIB_DEPENDS=	libdbus-1.so:devel/dbus
60DEBUG_CONFIGURE_ON=	--build-debug
61DEBUG_VARS=		KMK_BUILDTYPE=debug
62DEBUG_VARS_OFF=		KMK_BUILDTYPE=release
63X11_BUILD_DEPENDS=	${LOCALBASE}/include/xorg/compiler.h:x11-servers/xorg-server
64X11_RUN_DEPENDS=	xrandr:x11/xrandr
65X11_USE=		XORG=x11,xcursor,xext,xorgproto,xmu,xrandr,xt
66X11_USES=		pkgconfig xorg
67X11_VARS=		VBOX_WITH_X11=1
68
69.include <bsd.mport.options.mk>
70
71.if ${SLAVE_PORT} == no
72CONFLICTS_INSTALL+=	virtualbox-ose-additions-nox11
73.else
74CONFLICTS_INSTALL+=	virtualbox-ose-additions
75.endif
76
77VIDEODIR=	${PREFIX}/lib/xorg/modules/drivers
78INPUTDIR=	${PREFIX}/lib/xorg/modules/input
79
80VBOX_BIN=	${WRKSRC}/out/${KMK_ARCH}/${KMK_BUILDTYPE}/bin/additions
81VBOX_SBINS=	VBoxControl \
82		VBoxService \
83		mount_vboxvfs
84
85BUILD_WRKSRC=	${VBOX_BIN}/src
86
87KMK_ARCH=	freebsd.${ARCH:S/i386/x86/}
88KMK_CONFIG+=	VBOX_LIBPATH_X11=${LOCALBASE} VBOX_FREEBSD_SRC=${SRC_BASE}/sys
89
90.if ${PORT_OPTIONS:MX11}
91.else
92VBOX_WITH_X11=
93.endif
94
95.include <bsd.port.pre.mk>
96
97.if ${COMPILER_TYPE} == clang
98.if ${COMPILER_FEATURES:Mlibc++}
99EXTRA_PATCHES+=	${PATCHDIR}/extrapatch-src-VBox-Additions-x11-VBoxClient-Makefile.kmk
100.endif
101.endif
102
103post-patch:
104	@${ECHO_CMD} 'VBOX_ONLY_ADDITIONS = 1' > ${WRKSRC}/LocalConfig.kmk
105	@${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP = ${VBOX_WITH_X11}' >> \
106	    ${WRKSRC}/LocalConfig.kmk
107	@${ECHO_CMD} 'VBOX_WITH_DRAG_AND_DROP_GH = ${VBOX_WITH_X11}' >> \
108	    ${WRKSRC}/LocalConfig.kmk
109	@${ECHO_CMD} 'VBOX_WITH_X11_ADDITIONS = ${VBOX_WITH_X11}' >> \
110	    ${WRKSRC}/LocalConfig.kmk
111	@${ECHO_CMD} 'VBOX_GCC_std = -std=c++11' >> ${WRKSRC}/LocalConfig.kmk
112.if ${COMPILER_TYPE} == clang
113	@${REINPLACE_CMD} -e 's| -finline-limit=8000||' \
114	    -e 's| -fno-merge-constants||' \
115	    -e 's| -mpreferred-stack-boundary=2||' ${WRKSRC}/Config.kmk
116.endif
117	@${REINPLACE_CMD} -e 's|/usr/X11|${LOCALBASE}|g' \
118	    ${WRKSRC}/src/VBox/Additions/x11/VBoxClient/display.cpp
119	@${REINPLACE_CMD} -e 's|/usr/local|${LOCALBASE}|g' \
120	    ${WRKSRC}/Config.kmk ${WRKSRC}/configure \
121	    ${WRKSRC}/kBuild/header.kmk ${WRKSRC}/kBuild/units/qt4.kmk \
122	    ${WRKSRC}/kBuild/units/qt5.kmk ${WRKSRC}/kBuild/sdks/LIBSDL.kmk \
123	    ${WRKSRC}/src/VBox/Additions/common/crOpenGL/load.c \
124	    ${WRKSRC}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
125	    ${WRKSRC}/src/VBox/Additions/x11/Installer/vboxclient.desktop \
126	    ${WRKSRC}/src/VBox/Additions/x11/vboxmouse/Makefile.kmk \
127	    ${WRKSRC}/src/VBox/Additions/x11/vboxvideo/Makefile.kmk
128	@${REINPLACE_CMD} \
129	    -e 's|\$$KBUILDDIR_BIN/kmk_sed|${LOCALBASE}/bin/kmk_sed|g' \
130	    ${WRKSRC}/configure
131.if empty(ICONV_LIB)
132	@${REINPLACE_CMD} -e 's|iconv||' ${WRKSRC}/Config.kmk \
133	    ${WRKSRC}/src/VBox/Runtime/Makefile.kmk \
134	    ${WRKSRC}/src/VBox/Additions/x11/VBoxClient/Makefile.kmk
135	@${ECHO_CMD} 'VBOX_ICONV_DEFS = LIBICONV_PLUG' >> ${WRKSRC}/LocalConfig.kmk
136.endif
137.if ${PORT_OPTIONS:MPAE}
138	@${ECHO_CMD} 'VBOX_FREEBSD = -DPAE' >> ${WRKSRC}/LocalConfig.kmk
139.endif
140#	${REINPLACE_CMD} -e 's|freebsd|midnightbsd|g' ${WRKSRC}/Config.kmk
141
142post-patch-X11-on:
143	@${ECHO_CMD} 'VBOX_USE_SYSTEM_XORG_HEADERS = 1' >> \
144	    ${WRKSRC}/LocalConfig.kmk
145
146pre-build:
147	cd ${WRKSRC} && ${SH} -c \
148	    ". env.sh && ${KMK_CONFIG} ${LOCALBASE}/bin/kmk"
149
150do-install:
151	${MKDIR} ${KMODDIR}
152	${INSTALL_KLD} ${VBOX_BIN}/src/vboxguest/vboxguest.ko \
153	    ${KMODDIR}
154	${INSTALL_KLD} ${VBOX_BIN}/vboxvfs.ko ${KMODDIR}
155	${INSTALL_LIB} ${VBOX_BIN}/pam_vbox.so ${PREFIX}/lib
156	${INSTALL_PROGRAM} ${VBOX_SBINS:S|^|${VBOX_BIN}/|} \
157	    ${PREFIX}/sbin/
158
159do-install-X11-on:
160	${INSTALL_PROGRAM} ${VBOX_BIN}/VBoxClient ${FAKE_DESTDIR}${PREFIX}/bin/
161	${INSTALL_SCRIPT} \
162	    ${WRKSRC}/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
163	    ${FAKE_DESTDIR}${PREFIX}/bin/VBoxClient-all
164	# X11 autostart
165	${MKDIR} ${FAKE_DESTDIR}${PREFIX}/etc/xdg/autostart/
166	${INSTALL_DATA} \
167	    ${WRKSRC}/src/VBox/Additions/x11/Installer/vboxclient.desktop \
168	    ${FAKE_DESTDIR}${PREFIX}/etc/xdg/autostart/
169	# KDE autostart
170	${MKDIR} ${FAKE_DESTDIR}${PREFIX}/share/autostart/
171	${INSTALL_DATA} \
172	    ${WRKSRC}/src/VBox/Additions/x11/Installer/vboxclient.desktop \
173	    ${FAKE_DESTDIR}${PREFIX}/share/autostart/
174	${MKDIR} ${FAKE_DESTDIR}${VIDEODIR}
175	${INSTALL_DATA} ${VBOX_BIN}/vboxvideo_drv_system.so \
176	    ${FAKE_DESTDIR}${VIDEODIR}/vboxvideo_drv.so
177	${MKDIR} ${FAKE_DESTDIR}${INPUTDIR}
178	${INSTALL_DATA} ${VBOX_BIN}/vboxmouse_drv_system.so \
179	    ${FAKE_DESTDIR}${INPUTDIR}/vboxmouse_drv.so
180
181.include <bsd.port.post.mk>
182