diff --git a/buildconfig/CMake/ExternalSipPyQt4.cmake b/buildconfig/CMake/ExternalSipPyQt4.cmake
index cf9123222f2be67d0c71162fd109784547d3fc9f..d08a3210393f95d3fd568500bfc0ef2846876b41 100644
--- a/buildconfig/CMake/ExternalSipPyQt4.cmake
+++ b/buildconfig/CMake/ExternalSipPyQt4.cmake
@@ -28,9 +28,13 @@ set(PYQT4_VERSION_STR "4.12.1" CACHE STRING "PyQt4's version as a human-readable
 set(PYQT4_VERSION_TAG "Qt_4_8_6" CACHE STRING "The Qt version tag used by PyQt4's .sip files" FORCE)
 set(PYQT4_SIP_DIR "${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/share/sip" CACHE PATH "The base directory where PyQt4's .sip files are installed" FORCE)
 set(PYQT4_SIP_FLAGS "-x VendorID -t WS_X11 -x PyQt_NoPrintRangeBug -t Qt_4_8_6" CACHE STRING "The SIP flags used to build PyQt4" FORCE)
-set(_lib_site_packages ${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/lib/site-packages)
-set(_pyqt4_lib_site_packages ${_lib_site_packages}/PyQt4)
-set(PYQT4_PYUIC "${_pyqt4_lib_site_packages}/uic/pyuic.py" CACHE STRING "Location of the pyuic script" FORCE)
+set(PRIVATE_PYQT_SITE_PACKAGES ${CMAKE_BINARY_DIR}/${_SIP_PYQT_INSTALL_DIR}/lib/site-packages)
+set(_pyqt4_lib_site_packages ${PRIVATE_PYQT_SITE_PACKAGES}/PyQt4)
+
+# Write a wrapper pyuic script so it can find out internal copy of PyQt4
+set(PYQT4_PYUIC "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/internal-pyuic.py" CACHE STRING "Location of the pyuic script" FORCE)
+configure_file(${CMAKE_MODULE_PATH}/internal-pyuic.py.in ${PYQT4_PYUIC} @ONLY)
+
 ExternalProject_Add(extern-pyqt4
   PREFIX ${_SIP_PYQT_DIR}/pyqt4
   INSTALL_DIR ${_SIP_PYQT_INSTALL_DIR}
@@ -51,7 +55,7 @@ ExternalProject_Add(extern-pyqt4
     --no-deprecated
     --qmake=/usr/bin/qmake-qt4
     --no-qsci-api
-  BUILD_COMMAND make 2> build.log
+  BUILD_COMMAND make -j24 2> build.log
   DEPENDS extern-pyqt4-sip
 )
 
@@ -59,13 +63,13 @@ ExternalProject_Add(extern-pyqt4
 # We assume we only have to support a single-configuration build type on Linux
 file(WRITE ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/private-pyqt4.pth
 "import sys; sys.__plen = len(sys.path)
-${_lib_site_packages}
+${PRIVATE_PYQT_SITE_PACKAGES}
 ${_pyqt4_lib_site_packages}
 import sys; new = sys.path[sys.__plen:]; del sys.path[sys.__plen:]; p = getattr(sys, '__egginsert', 0); sys.path[p:p] = new; sys.__egginsert = p + len(new)
 ")
 
 # Package PyQt. We assume this is for Python 3
-install(DIRECTORY ${_lib_site_packages}/PyQt4
+install(DIRECTORY ${PRIVATE_PYQT_SITE_PACKAGES}/PyQt4
         DESTINATION ${LIB_DIR} 
         PATTERN "__pycache__" EXCLUDE
         PATTERN "port_v2" EXCLUDE)
diff --git a/buildconfig/CMake/internal-pyuic.py.in b/buildconfig/CMake/internal-pyuic.py.in
new file mode 100644
index 0000000000000000000000000000000000000000..6cd825792ca9ea5004688ad29c9ddf97d907e6a1
--- /dev/null
+++ b/buildconfig/CMake/internal-pyuic.py.in
@@ -0,0 +1,3 @@
+import sys
+sys.path.insert(0, "@PRIVATE_PYQT_SITE_PACKAGES@")
+import PyQt4.uic.pyuic