The instructions for building VirtualBox on an OSX system are (sorry to say it) 
anything but functional. They're several years old, severely outdated and 
simply not working.

I was about to fire an e-mail detailing the instruction for successfully 
building VirtualBox on OSX, but decided to make an article in the OSE section 
of the forums for comments. See: 
https://forums.virtualbox.org/viewtopic.php?f=10&t=83521 for the updated 
instructions. Please feel free to copy them and update the official VirtualBox 
wiki.

However... these instructions require four changes in the "configure" script, 
three mandatory, one optional.



Index: configure
===================================================================
--- configure   (revision 67459)
+++ configure   (working copy)
@@ -153,7 +153,7 @@
 LIBVPX="-lvpx"
 PKGCONFIG="`which_wrapper pkg-config`"
 PYTHONDIR="/usr /usr/local"
-QT5DIR="/usr/lib/qt5 /usr/share/qt5 /usr/lib64/qt5 /usr /usr/local"
+QT5DIR="/usr/lib/qt5 /usr/share/qt5 /usr/lib64/qt5 /usr /usr/local 
/opt/local/libexec/qt5"
 QT5DIR_PKGCONFIG=1
 QT5MAJ=5
 QT5MIN=6
@@ -1515,7 +1515,7 @@
     # Now try the user provided directory and some of the standard directories.
     QT_TRIES="$QT5DIR /System/Library /Library"
     for t in $QT_TRIES; do
-      if [ -f "$t/Frameworks/QtCore.framework/QtCore" ]; then
+      if [ -f "$t/lib/QtCore.framework/QtCore" ]; then
         PATH_SDK_QT5="$t"
         break
       fi
@@ -1523,8 +1523,8 @@
     # Add the necessary params for building the test application
     if [ -n "$PATH_SDK_QT5" ]; then
       foundqt5=1
-      INCQT5=-I$PATH_SDK_QT5/Frameworks/QtCore.framework/Headers
-      LIBQT5=-F$PATH_SDK_QT5/Frameworks
+      INCQT5=-I$PATH_SDK_QT5/lib/QtCore.framework/Headers
+      LIBQT5=-F$PATH_SDK_QT5/lib
       FLGQT5="-framework QtCore"
     else
       log_failure "Qt5 framework not found (can be disabled using 
--disable-qt)"
@@ -1605,9 +1605,9 @@
         if [ "$OS" = "darwin" ]; then
           # Successful build & run the test application so add the necessary
           # params to AutoConfig.kmk:
-          cnf_append "PATH_SDK_QT5_INC" "$PATH_SDK_QT5/Frameworks"
-          cnf_append "PATH_SDK_QT5_LIB" "$PATH_SDK_QT5/Frameworks"
-          cnf_append "PATH_SDK_QT5" "$PATH_SDK_QT5/Frameworks"
+          cnf_append "PATH_SDK_QT5_INC" "$PATH_SDK_QT5/inc"
+          cnf_append "PATH_SDK_QT5_LIB" "$PATH_SDK_QT5/lib"
+          cnf_append "PATH_SDK_QT5" "$PATH_SDK_QT5"
           # Check for the moc tool in the Qt directory found & some standard
           # directories.
           for q in $PATH_SDK_QT5 /usr /Developer/Tools/Qt; do



Explanation for the four changes:

1) The standard installation of MacPorts is in "/opt". The Qt5 toolkit is in 
"/opt/local/libexec/qt5". It makes sense to include that path in the 
standard/default search path, instead of using the 
"--with-qt-dir=/opt/local/libexec/qt5" directive. This is more of a ease of use 
change.

2, 3) I really don't know since when/why the "Frameworks" directory was there, 
but in a standard MacPorts installation, it's non-existent. Changes from the 
former to the latter, makes the whole thing work out of the box ("Frameworks" 
to "lib").

4) There is something not-right when the SDK, the lib, and the include path all 
point to the same path ("Frameworks"), which doesn't even exist. Pointing them 
to "qt5/", "qt5/lib" and "qt5/inc",  makes the whole thing work out of the box. 
Plus the "AutoConfig.kmk" actually looks better. From:

PATH_SDK_QT5_INC  := /opt/local/libexec/qt5/Frameworks
PATH_SDK_QT5_LIB  := /opt/local/libexec/qt5/Frameworks
PATH_SDK_QT5      := /opt/local/libexec/qt5/Frameworks
PATH_TOOL_QT5_BIN := /opt/local/libexec/qt5/bin

to

PATH_SDK_QT5_INC  := /opt/local/libexec/qt5/inc
PATH_SDK_QT5_LIB  := /opt/local/libexec/qt5/lib
PATH_SDK_QT5      := /opt/local/libexec/qt5
PATH_TOOL_QT5_BIN := /opt/local/libexec/qt5/bin


Now, if you want the documentation (UserManual.pdf) to be available in your 
custom build, you need to have the following "LocalConfig.kmk" in your source 
root directory. I believe that only the 1st directive is necessary, but the 2nd 
one might come in handy for distributing/packaging (haven't reached that 
"level" yet). Whether the documentation should be there, without the need for 
the LocalConfig's existence, it's a matter of debate. I personally favor 
including the documentation as the default option.

$ cat LocalConfig.kmk

VBOX_WITH_DOCS = 1
VBOX_WITH_DOCS_PACKING = 1

_______________________________________________
vbox-dev mailing list
[email protected]
https://www.virtualbox.org/mailman/listinfo/vbox-dev

Reply via email to