Files
ubuntu-sdk-ide_orig/CMakeLists.txt
2015-10-24 06:35:29 +03:00

164 lines
8.3 KiB
CMake

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_KIT_SOURCE_DIR "${CMAKE_BINARY_DIR}/qt-build/qt-everywhere-opensource-src-ubuntu")
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 (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:~zeller-benjamin/qtcreator-plugin-autopilot/qtc35x ${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"
)
SET (QT_KIT_PREFIX "${CMAKE_BINARY_DIR}/qt-api-build")
ExternalProject_Add(${QT_VERSION}-api
PREFIX "${QT_KIT_PREFIX}"
SOURCE_DIR "${QT_KIT_SOURCE_DIR}"
BINARY_DIR "${QT_KIT_PREFIX}/build"
INSTALL_DIR "${QT_KIT_PREFIX}/qt-api"
DOWNLOAD_COMMAND sh -c "cd ${QT_KIT_SOURCE_DIR} && ${CMAKE_SOURCE_DIR}/get_qt_sources.py"
UPDATE_COMMAND sh -c "exit 0" #nothing to update
PATCH_COMMAND sh -c "cp ${CMAKE_SOURCE_DIR}/desktop_kit_qt.pro ${QT_KIT_SOURCE_DIR}/qt.pro && cp ${CMAKE_SOURCE_DIR}/desktop_kit_configure ${QT_KIT_SOURCE_DIR}/configure"
CONFIGURE_COMMAND sh -c "${QT_KIT_SOURCE_DIR}/configure -prefix /usr/ubuntu-sdk-dev `cat ${CMAKE_SOURCE_DIR}/kit_config`"
BUILD_COMMAND sh -c "make ${GENERATED_MAKE_FLAGS}"
INSTALL_COMMAND sh -c "make INSTALL_ROOT=${QT_KIT_PREFIX}/qt-api install"
)
SET (EXTRAS_PREFIX "${CMAKE_BINARY_DIR}/qt-extras")
ExternalProject_Add(${QT_VERSION}-extras
DEPENDS ${QT_VERSION}-api qtcreator_3.5.0
PREFIX "${EXTRAS_PREFIX}"
SOURCE_DIR "${EXTRAS_PREFIX}/ubuntu-sdk-qmake-extras"
DOWNLOAD_COMMAND sh -c "bzr branch lp:ubuntu-sdk-qmake-extras ${EXTRAS_PREFIX}/ubuntu-sdk-qmake-extras -Ossl.cert_reqs=none --use-existing-dir"
UPDATE_COMMAND sh -c "exit 0" #nothing to update
CONFIGURE_COMMAND sh -c "exit 0"
BUILD_COMMAND sh -c "cp ${EXTRAS_PREFIX}/ubuntu-sdk-qmake-extras/*.prf ${QT_KIT_PREFIX}/qt/usr/ubuntu-sdk-dev/mkspecs/features"
INSTALL_COMMAND sh -c "cd ${CMAKE_BINARY_DIR} && ${CMAKE_SOURCE_DIR}/create_sdk.sh"
)