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"
)
|