170 lines
		
	
	
		
			8.5 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			170 lines
		
	
	
		
			8.5 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_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 (MALIITPLUGIN_PREFIX "${CMAKE_BINARY_DIR}/maliit-plugin-qt-build")
 | 
						|
ExternalProject_Add(maliit-plugin
 | 
						|
  DEPENDS     ${QT_VERSION}
 | 
						|
  PREFIX      "${MALIITPLUGIN_PREFIX}"
 | 
						|
  SOURCE_DIR  "${MALIITPLUGIN_PREFIX}/maliit-framework"
 | 
						|
  BINARY_DIR  "${MALIITPLUGIN_PREFIX}/maliit-framework"
 | 
						|
  INSTALL_DIR "${QT_INSTALL_DIR}"
 | 
						|
  DOWNLOAD_COMMAND  sh -c "cd ${MALIITPLUGIN_PREFIX} && ${CMAKE_SOURCE_DIR}/get_package_source.py maliit-framework"
 | 
						|
  CONFIGURE_COMMAND sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib ${QT_INSTALL_DIR}/bin/qmake -r CONFIG+=\"qt5-inputcontext glib debug nodoc warn_off\"  M_IM_PREFIX=${QT_INSTALL_DIR} MALIIT_SERVER_ARGUMENTS=\"-software -bypass-wm-hint\" MALIIT_DEFAULT_PLUGIN=libmaliit-keyboard-plugin.so"
 | 
						|
  BUILD_COMMAND     sh -c "LD_LIBRARY_PATH=${QT_INSTALL_DIR}/lib make  ${GENERATED_MAKE_FLAGS}"
 | 
						|
  INSTALL_COMMAND   sh -c "cd ${MALIITPLUGIN_PREFIX}/maliit-framework/input-context && 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 fcitx-qt5 maliit-plugin
 | 
						|
  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"
 | 
						|
)
 |