if ( ${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR} ) message( FATAL_ERROR "In-source builds not allowed. Please make a new directory (called a build directory) and run CMake from there. You may need to remove CMakeCache.txt." ) endif() project(ubuntu-sdk-ide C CXX) include(ExternalProject) include(ProcessorCount) function(ConcatStrings targetVar ) set(loc_val ${${targetVar}}) foreach(curr_substr ${ARGN}) set(loc_val "${loc_val}${curr_substr}") endforeach() set(${targetVar} ${loc_val} PARENT_SCOPE) endfunction() ProcessorCount(JOBS) if(NOT JOBS EQUAL 0) set(GENERATED_MAKE_FLAGS -j${JOBS}) endif() cmake_minimum_required(VERSION 2.8.9) set (ubuntu_sdk_VERSION_MAJOR 3) set (ubuntu_sdk_VERSION_MINOR 5) set (QT_VERSION "qt-everywhere-opensource-src-5.4.2") set (QT_SOURCE_DIR "${CMAKE_BINARY_DIR}/qt-build/qt-everywhere-opensource-src-5.4.2") set (QT_BUILD_DIR "${CMAKE_BINARY_DIR}/qt-build/build") set (QT_INSTALL_DIR "${CMAKE_BINARY_DIR}/qt") ExternalProject_Add(${QT_VERSION} #URL http://download.qt.io/official_releases/qt/5.4/5.4.2/single/qt-everywhere-opensource-src-5.4.2.tar.gz PREFIX "qt-build" SOURCE_DIR "${QT_SOURCE_DIR}" BINARY_DIR "${QT_BUILD_DIR}" INSTALL_DIR "${QT_INSTALL_DIR}" DOWNLOAD_COMMAND sh -c "bzr branch lp:~bzoltan/+junk/qt-everywhere-opensource-src-5.4.2 ${QT_SOURCE_DIR} -Ossl.cert_reqs=none --use-existing-dir" UPDATE_COMMAND sh -c "exit 0" PATCH_COMMAND sh -c "${CMAKE_COMMAND} -DQT_SOURCE_DIR=\"${QT_SOURCE_DIR}\" -P ${CMAKE_SOURCE_DIR}/patch-qt.cmake" CONFIGURE_COMMAND sh -c "${QT_SOURCE_DIR}/configure -prefix ${QT_INSTALL_DIR} `cat ${CMAKE_SOURCE_DIR}/qt5config`" BUILD_COMMAND sh -c "make ${GENERATED_MAKE_FLAGS}" INSTALL_COMMAND sh -c "make install" ) SET (DBUSMENU_PREFIX "${CMAKE_BINARY_DIR}/libdbusmenu-qt-build") ConcatStrings (DBUSMENU_BUILD_SCRIPT "${CMAKE_COMMAND} " "-DCMAKE_INSTALL_PREFIX=${QT_INSTALL_DIR} " "-DCMAKE_PREFIX_PATH=${QT_INSTALL_DIR} " "-DUSE_QT5=true " "-DCMAKE_BUILD_TYPE=RelWithDebInfo " "-DCMAKE_INSTALL_LIBDIR=lib ${DBUSMENU_PREFIX}/libdbusmenu-qt " ) ExternalProject_Add(libdbusmenu-qt DEPENDS ${QT_VERSION} PREFIX "${DBUSMENU_PREFIX}" SOURCE_DIR "${DBUSMENU_PREFIX}/libdbusmenu-qt" BINARY_DIR "${DBUSMENU_PREFIX}/build" INSTALL_DIR "${QT_INSTALL_DIR}" DOWNLOAD_COMMAND sh -c "bzr branch lp:libdbusmenu-qt ${DBUSMENU_PREFIX}/libdbusmenu-qt -Ossl.cert_reqs=none --use-existing-dir" CONFIGURE_COMMAND sh -c "${DBUSMENU_BUILD_SCRIPT}" BUILD_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}" INSTALL_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make install" ) SET (FCITX_PREFIX "${CMAKE_BINARY_DIR}/fcitx-qt-build") ConcatStrings (FCITX_BUILD_SCRIPT "${CMAKE_COMMAND} " "-DCMAKE_INSTALL_PREFIX=${QT_INSTALL_DIR} " "-DCMAKE_PREFIX_PATH=${QT_INSTALL_DIR} " "-DUSE_QT5=true " "-DCMAKE_BUILD_TYPE=RelWithDebInfo " "-DCMAKE_INSTALL_LIBDIR=lib ${FCITX_PREFIX}/fcitx-qt" ) ExternalProject_Add(fcitx-qt5 DEPENDS ${QT_VERSION} PREFIX "${FCITX_PREFIX}" SOURCE_DIR "${FCITX_PREFIX}/fcitx-qt" BINARY_DIR "${FCITX_PREFIX}/build" INSTALL_DIR "${QT_INSTALL_DIR}" DOWNLOAD_COMMAND sh -c "bzr branch lp:ubuntu/wily-proposed/fcitx-qt5 ${FCITX_PREFIX}/fcitx-qt -Ossl.cert_reqs=none --use-existing-dir" CONFIGURE_COMMAND sh -c "${FCITX_BUILD_SCRIPT}" BUILD_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib VERBOSE=1 make ${GENERATED_MAKE_FLAGS}" INSTALL_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib VERBOSE=1 make install" ) SET (APPMENU_PREFIX "${CMAKE_BINARY_DIR}/appmenu-qt5-build") ExternalProject_Add(appmenu-qt5 DEPENDS libdbusmenu-qt PREFIX "${APPMENU_PREFIX}" SOURCE_DIR "${APPMENU_PREFIX}/appmenu-qt5" BINARY_DIR "${APPMENU_PREFIX}/build" INSTALL_DIR "${QT_INSTALL_DIR}" DOWNLOAD_COMMAND sh -c "bzr branch lp:appmenu-qt5 ${APPMENU_PREFIX}/appmenu-qt5 -Ossl.cert_reqs=none --use-existing-dir" CONFIGURE_COMMAND sh -c "PKG_CONFIG_PATH=${QT_INSTALL_DIR}/lib/pkgconfig ${QT_INSTALL_DIR}/bin/qmake -r ${APPMENU_PREFIX}/appmenu-qt5" BUILD_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}" INSTALL_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make install" ) SET (QTCREATOR_PREFIX "${CMAKE_BINARY_DIR}/qtcreator-build") ConcatStrings(QTC_DOWNLOAD_SCRIPT "dget https://launchpad.net/ubuntu/+archive/primary/+files/qtcreator_3.5.0+dfsg-1ubuntu3.dsc " "&& rsync -auvr --delete-after qtcreator-3.5.0+dfsg/ ${QTCREATOR_PREFIX}/qtcreator" ) ConcatStrings(QTC_PATCH_SCRIPT "cd ${QTCREATOR_PREFIX}/qtcreator " "&& patch -p1 < ${CMAKE_SOURCE_DIR}/patches/qtc.patch " "&& bzr branch lp:qtcreator-plugin-ubuntu ${QTCREATOR_PREFIX}/qtcreator/src/plugins/ubuntu -Ossl.cert_reqs=none " "&& sed -i 's/\\(welcome\\)/\\1 \\\\ \\n ubuntu/g' ${QTCREATOR_PREFIX}/qtcreator/src/plugins/plugins.pro" ) ExternalProject_Add(qtcreator_3.5.0 DEPENDS appmenu-qt5 PREFIX "${QTCREATOR_PREFIX}" SOURCE_DIR "${QTCREATOR_PREFIX}/qtcreator" BINARY_DIR "${QTCREATOR_PREFIX}/build" INSTALL_DIR "${CMAKE_BINARY_DIR}/ubuntu-sdk-ide" DOWNLOAD_COMMAND sh -c "${QTC_DOWNLOAD_SCRIPT}" PATCH_COMMAND sh -c "${QTC_PATCH_SCRIPT}" CONFIGURE_COMMAND sh -c "${QT_INSTALL_DIR}/bin/qmake -r USE_SYSTEM_BOTAN=1 ${QTCREATOR_PREFIX}/qtcreator" BUILD_COMMAND sh -c "QT_PRIVATE_HEADERS=${QT_INSTALL_DIR} LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}" INSTALL_COMMAND sh -c "QT_PRIVATE_HEADERS=${QT_INSTALL_DIR} LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make INSTALL_ROOT=${CMAKE_BINARY_DIR}/ubuntu-sdk-ide -j1 docs deployqt" ) set(QTC_BUILD "${CMAKE_BINARY_DIR}/ubuntu-sdk-ide") set(QTC_SOURCE "${QTCREATOR_PREFIX}/qtcreator") SET (QTCREATOR_GO_PREFIX "${CMAKE_BINARY_DIR}/qtcreator-plugin-go-build") ExternalProject_Add(qtcreator_plugin_go DEPENDS qtcreator_3.5.0 PREFIX "${QTCREATOR_GO_PREFIX}" SOURCE_DIR "${QTCREATOR_GO_PREFIX}/qtcreator-plugin-go" BINARY_DIR "${QTCREATOR_GO_PREFIX}/build" INSTALL_DIR "${QTCREATOR_GO_PREFIX}/ubuntu-sdk-ide" DOWNLOAD_COMMAND sh -c "bzr branch lp:qtcreator-plugin-go ${QTCREATOR_GO_PREFIX}/qtcreator-plugin-go -Ossl.cert_reqs=none --use-existing-dir" CONFIGURE_COMMAND sh -c "env QTC_BUILD=\"${QTC_BUILD}\" QTC_SOURCE=\"${QTC_SOURCE}\" ${QT_INSTALL_DIR}/bin/qmake -r ${QTCREATOR_GO_PREFIX}/qtcreator-plugin-go" BUILD_COMMAND sh -c "env QTC_BUILD=\"${QTC_BUILD}\" QTC_SOURCE=\"${QTC_SOURCE}\" QT_PRIVATE_HEADERS=${QT_INSTALL_DIR} LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}" #there is no install step required, the plugin is built directly into the installed plugins dir INSTALL_COMMAND sh -c "exit 0" ) SET (QTCREATOR_AP_PREFIX "${CMAKE_BINARY_DIR}/qtcreator-plugin-autopilot-build") ExternalProject_Add(qtcreator_plugin_autopilot DEPENDS qtcreator_3.5.0 PREFIX "${QTCREATOR_AP_PREFIX}" SOURCE_DIR "${QTCREATOR_AP_PREFIX}/qtcreator-plugin-autopilot" BINARY_DIR "${QTCREATOR_AP_PREFIX}/build" INSTALL_DIR "${QTCREATOR_AP_PREFIX}/ubuntu-sdk-ide" DOWNLOAD_COMMAND sh -c "bzr branch lp:qtcreator-plugin-autopilot ${QTCREATOR_AP_PREFIX}/qtcreator-plugin-autopilot -Ossl.cert_reqs=none --use-existing-dir" CONFIGURE_COMMAND sh -c "env QTC_BUILD=\"${QTC_BUILD}\" QTC_SOURCE=\"${QTC_SOURCE}\" ${QT_INSTALL_DIR}/bin/qmake -r ${QTCREATOR_AP_PREFIX}/qtcreator-plugin-autopilot" BUILD_COMMAND sh -c "env QTC_BUILD=\"${QTC_BUILD}\" QTC_SOURCE=\"${QTC_SOURCE}\" QT_PRIVATE_HEADERS=${QT_INSTALL_DIR} LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make ${GENERATED_MAKE_FLAGS}" #there is no install step required, the plugin is built directly into the installed plugins dir INSTALL_COMMAND sh -c "exit 0" )