- Because I'm using Homebrew instead of MacPorts, I had to do brew install libidl openssl pkg-config qt first. Also, I had to patch configure due to a difference in the location of the Qt plugins directory:
Code: Select all
$ svn diff Index: configure =================================================================== --- configure (revision 78203) +++ configure (working copy) @@ -1592,7 +1592,7 @@ # 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" "$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
- Furthermore, the following change to configure allows building on Mojave, and enables C++11 so that configure will not crash when validating the installation of Qt:
Code: Select all
@@ -2192,6 +2192,15 @@ test_header "Darwin version" darwin_ver=`uname -r` case "$darwin_ver" in + 18\.*) + check_xcode_sdk_path "$WITH_XCODE_DIR" + [ $? -eq 1 ] || fail + darwin_ver="10.14" # Mojave + sdk=$WITH_XCODE_DIR/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk + cnf_append "VBOX_WITH_MACOSX_COMPILERS_FROM_DEVEL" "1" + cnf_append "VBOX_PATH_MACOSX_DEVEL_ROOT" "$WITH_XCODE_DIR/Developer" + CXX_FLAGS='--std=c++11' + ;; 17\.*) check_xcode_sdk_path "$WITH_XCODE_DIR" [ $? -eq 1 ] || fail
- Since Xcode 10.2.1 does not come with MacOSX10.9.sdk, I had to use xcodelegacy to graft it from Xcode 6.4.
- Again, I had to enable C++11 to make it build:
Code: Select all
Index: tools/kBuildTools/VBoxXcode62.kmk =================================================================== --- tools/kBuildTools/VBoxXcode62.kmk (revision 78203) +++ tools/kBuildTools/VBoxXcode62.kmk (working copy) @@ -91,7 +91,7 @@ TOOL_VBoxXcode62_CDEFS ?= TOOL_VBoxXcode62_CXXOBJSUFF ?= .o -TOOL_VBoxXcode62_CXXFLAGS ?= +TOOL_VBoxXcode62_CXXFLAGS ?= --std=c++11 TOOL_VBoxXcode62_CXXFLAGS.debug ?= -g TOOL_VBoxXcode62_CXXFLAGS.profile ?= -O2 #-g -pg TOOL_VBoxXcode62_CXXFLAGS.release ?= -O2 @@ -107,7 +107,7 @@ TOOL_VBoxXcode62_OBJCDEFS ?= TOOL_VBoxXcode62_OBJCXXOBJSUFF ?= .o -TOOL_VBoxXcode62_OBJCXXFLAGS ?= +TOOL_VBoxXcode62_OBJCXXFLAGS ?= --std=c++11 TOOL_VBoxXcode62_OBJCXXFLAGS.debug ?= -g TOOL_VBoxXcode62_OBJCXXFLAGS.profile ?= -O2 #-g -pg TOOL_VBoxXcode62_OBJCXXFLAGS.release ?= -O2
- To fix the following compilation error…
I made the following change:
Code: Select all
src/VBox/Devices/USB/darwin/USBProxyDevice-darwin.cpp:1126:34: error: comparison between pointer and integer ('CFMutableDictionaryRef' (aka '__CFDictionary *') and 'io_object_t' (aka 'unsigned int')) AssertReturn(RefMatchingDict != IO_OBJECT_NULL, VERR_OPEN_FAILED); ~~~~~~~~~~~~~~~ ^ ~~~~~~~~~~~~~~
Code: Select all
Index: src/VBox/Devices/USB/darwin/USBProxyDevice-darwin.cpp =================================================================== --- src/VBox/Devices/USB/darwin/USBProxyDevice-darwin.cpp (revision 78203) +++ src/VBox/Devices/USB/darwin/USBProxyDevice-darwin.cpp (working copy) @@ -1123,7 +1123,7 @@ * this subject further right now. Maybe check this later. */ CFMutableDictionaryRef RefMatchingDict = IOServiceMatching(kIOUSBDeviceClassName); - AssertReturn(RefMatchingDict != IO_OBJECT_NULL, VERR_OPEN_FAILED); + AssertReturn(RefMatchingDict, VERR_OPEN_FAILED); uint64_t u64SessionId = 0; uint32_t u32LocationId = 0;
- I had to disable System Integrity Protection by running csrutil disable in the Recovery OS.
- When loading kernel extensions using loadall.sh, I ran into the following error:
To resolve that, I had to import a PKCS12-encoded key and certificate, with CN=MyTestCertificate, into my login keychain, and create a LocalConfig.kmk containing:
Code: Select all
(kernel) kxld[org.virtualbox.kext.VBoxDrv]: The following symbols are unresolved for this kext: (kernel) kxld[org.virtualbox.kext.VBoxDrv]: _g_abSUPBuildCert (kernel) kxld[org.virtualbox.kext.VBoxDrv]: _g_cbSUPBuildCert (kernel) Can't load kext org.virtualbox.kext.VBoxDrv - link failed. (kernel) Failed to load executable for kext org.virtualbox.kext.VBoxDrv. (kernel) Kext org.virtualbox.kext.VBoxDrv failed to load (0xdc008016). (kernel) Failed to load kext org.virtualbox.kext.VBoxDrv (error 0xdc008016). Failed to load /Users/USER/devel/vbox/out/darwin.amd64/debug/dist/VBoxDrv.kext - (libkern/kext) link error. Check library declarations for your kext with kextlibs(8).
Code: Select all
VBOX_SIGNING_MODE = test VBOX_CERTIFICATE_SUBJECT_NAME = MyTestCertificate
My experience building VirtualBox from Subversion on Mojave
My experience building VirtualBox from Subversion on Mojave
After some experimentation, I was able to build VirtualBox from Subversion r78203 on a macOS 10.14.4 (Mojave) host. I tried to follow the build instructions, and had to make a few tweaks to be able to build the code successfully. I hope to share my experience here, and also get someone to update the build instructions and the code.
-
- Site Moderator
- Posts: 27329
- Joined: 22. Oct 2010, 11:03
- Primary OS: Mac OS X other
- VBox Version: VirtualBox+Oracle ExtPack
- Guest OSses: Win(*>98), Linux*, OSX>10.5
- Location: Greece
Re: My experience building VirtualBox from Subversion on Mojave
Excellent!!! That makes two of us (AFAIK)...DWPoon wrote:After some experimentation, I was able to build VirtualBox from Subversion r78203 on a macOS 10.14.4 (Mojave) host.

Muhahahaha...DWPoon wrote:I tried to follow the build instructions, and had to make a few tweaks to be able to build the code successfully.

I've been trying to get them to update the Wiki for ages, good luck with that...

I had the instructions written down in the "Build VirtualBox ≥ 5.1.2 on OSX ≥ 10.9" but I followed the MacPorts route, not the Homebrew one. I started making an attempt to have the whole thing with Homebrew, but it never came to fruition, I think that I'll reboot the whole process now. Mainly because since Oct/2018 and the move to OpenSSL 1.x.x, I've been unable to compile VirtualBox, it breaks in really funky ways (that's the reason for the Homebrew attempt) after r74295. But that would be the subject of another thread actually...
You'll see some of the modifications that you did to "configure" in my thread too...

There's no other workaround for that? I got to check if these changes are valid for a 10.9 setup. Why 10.9 you ask? Because I have a MBP that's on 10.9.5 actually, and I use it as my "canary in the mine".DWPoon wrote:2. Furthermore, the following change to configure allows building on Mojave, and enables C++11 so that configure will not crash when validating the installation of Qt
Good one, I was not aware of that!DWPoon wrote:3. Since Xcode 10.2.1 does not come with MacOSX10.9.sdk, I had to use xcodelegacy to graft it from Xcode 6.4.
Hmm... makes me wonder why you had to modify "src/VBox/Devices/USB/darwin/USBProxyDevice-darwin.cpp", something's not right here, why would it compile for the VirtualBox team and not your setup?DWPoon wrote:5. To fix the following compilation error…
My goal when writing the building instructions were to minimize the differences in the source code changes. Hoping that they would be included in the VirtualBox tree. No dice so far...
Having major changes in the source code should be a major no-no, and we should track down why it breaks and fix your setup/instructions.
Did you try to build VirtualBox with the "--disable-hardening" option?DWPoon wrote:To resolve that, I had to import a PKCS12-encoded key and certificate ...
I've been working lately with "granada29" to bring a GUI to the "InstallerApp2ISO.sh", he's a really knowledgeable programmer and I think that if we bring him, and "andyp73" (another C guru) into the mix, we can finally get this thing going!

PS. I moved your thread from "OSX Hosts" to the "OSE" area.
Do NOT send me Personal Messages (PMs) for troubleshooting, they are simply deleted.
Do NOT reply with the "QUOTE" button, please use the "POST REPLY", at the bottom of the form.
If you obfuscate any information requested, I will obfuscate my response. These are virtual UUIDs, not real ones.
Do NOT reply with the "QUOTE" button, please use the "POST REPLY", at the bottom of the form.
If you obfuscate any information requested, I will obfuscate my response. These are virtual UUIDs, not real ones.
Re: My experience building VirtualBox from Subversion on Mojave
The kexts with the unresolved symbols were indeed built using configure with --disable-hardening.
As for the USBProxyDevice-darwin.cpp compilation error, I would guess that older versions of Clang treated the type mismatch as a warning, but the one bundled with Xcode 10.2.1 (Apple LLVM version 10.0.1 (clang-1001.0.46.4)) treats it as an error?
As for the USBProxyDevice-darwin.cpp compilation error, I would guess that older versions of Clang treated the type mismatch as a warning, but the one bundled with Xcode 10.2.1 (Apple LLVM version 10.0.1 (clang-1001.0.46.4)) treats it as an error?