~bzoltan/ubuntu-sdk-ide/trunk

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
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)

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")
SET (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")
SET (QTC_PATCH_SCRIPT "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 "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"
  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-build2")
ExternalProject_Add(${QT_VERSION}-kit
  DEPENDS ${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_KIT_PREFIX}"
  BINARY_DIR  "${QT_KIT_PREFIX}/build"
  INSTALL_DIR "${QT_KIT_PREFIX}/qt"
  DOWNLOAD_COMMAND  sh -c "exit 0" #already downloaded
  UPDATE_COMMAND    sh -c "exit 0" #nothing to update
  CONFIGURE_COMMAND sh -c "${QT_SOURCE_DIR}/configure -prefix /usr/ubuntu-sdk-dev `cat ${CMAKE_SOURCE_DIR}/qt5config`"
  BUILD_COMMAND     sh -c "make ${GENERATED_MAKE_FLAGS}"
  INSTALL_COMMAND   sh -c "make INSTALL_ROOT=${QT_KIT_PREFIX}/qt install"
)

SET (EXTRAS_PREFIX "${CMAKE_BINARY_DIR}/qt-extras")
ExternalProject_Add(${QT_VERSION}-extras
  DEPENDS ${QT_VERSION}-kit
  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 "exit 0"
)