docker_build_qt_linux.sh 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #!/bin/bash
  2. #
  3. # Copyright (c) Contributors to the Open 3D Engine Project.
  4. # For complete copyright and license terms please see the LICENSE at the root of this distribution.
  5. #
  6. # SPDX-License-Identifier: Apache-2.0 OR MIT
  7. #
  8. # TEMP_FOLDER and TARGET_INSTALL_ROOT get set from the pull_and_build_from_git.py script
  9. # Read the dependent 3P library paths from the arguments
  10. TIFF_PACKAGE_DIR=/data/workspace/o3de_tiff
  11. ZLIB_PACKAGE_DIR=/data/workspace/o3de_zlib
  12. OPENSSL_PACKAGE_DIR=/data/workspace/o3de_openssl
  13. set -euo pipefail
  14. MAKE_FLAGS=-j32
  15. echo "Building Qt5 from source with dependencies on"
  16. echo " " $TIFF_PACKAGE_DIR
  17. echo " " $ZLIB_PACKAGE_DIR
  18. echo " " $OPENSSL_PACKAGE_DIR
  19. # Base the Tiff of the dependent tiff O3DE package (static)
  20. TIFF_PREFIX=$TIFF_PACKAGE_DIR/tiff
  21. TIFF_INCDIR=$TIFF_PREFIX/include
  22. TIFF_LIBDIR=$TIFF_PREFIX/lib
  23. # Bring in the zlib dependency since Tiff is a static lib dependency
  24. ZLIB_PREFIX=$ZLIB_PACKAGE_DIR/zlib
  25. ZLIB_INCDIR=$ZLIB_PREFIX/include
  26. ZLIB_LIBDIR=$ZLIB_PREFIX/lib
  27. # Bring in the openssl dependency based
  28. OPENSSL_PREFIX=$OPENSSL_PACKAGE_DIR/OpenSSL
  29. OPENSSL_INCDIR=$OPENSSL_PREFIX/include
  30. OPENSSL_LIBDIR=$OPENSSL_PREFIX/lib
  31. BUILD_PATH=/data/workspace/build
  32. INSTALL_PATH=/data/workspace/qt
  33. [[ -d $BUILD_PATH ]] || mkdir $BUILD_PATH
  34. cd $BUILD_PATH
  35. echo Configuring Qt ...
  36. ../src/configure -prefix ${INSTALL_PATH} \
  37. -opensource \
  38. -nomake examples \
  39. -nomake tests \
  40. -confirm-license \
  41. -no-icu \
  42. -dbus \
  43. -no-separate-debug-info \
  44. -release \
  45. -force-debug-info \
  46. -qt-libpng \
  47. -qt-libjpeg \
  48. -no-feature-vnc \
  49. -no-feature-linuxfb \
  50. --tiff=system \
  51. -qt-zlib \
  52. -v \
  53. -no-cups \
  54. -no-glib \
  55. -no-feature-renameat2 \
  56. -no-feature-getentropy \
  57. -no-feature-statx \
  58. -no-feature-wayland-server \
  59. -qpa xcb \
  60. -qpa wayland \
  61. -xcb-xlib \
  62. -openssl \
  63. -I $TIFF_INCDIR \
  64. -I $ZLIB_INCDIR \
  65. -I $OPENSSL_INCDIR \
  66. -L $TIFF_LIBDIR \
  67. -L $ZLIB_LIBDIR \
  68. -L $OPENSSL_LIBDIR \
  69. -c++std c++1z \
  70. -fontconfig
  71. if [ $? -ne 0 ]
  72. then
  73. echo "Failed to configure Qt"
  74. exit 1
  75. fi
  76. echo Qt configured, building modules...
  77. qtarray=(qtbase qtgraphicaleffects qtimageformats qtsvg qttools qtx11extras)
  78. for qtlib in "${qtarray[@]}"; do
  79. echo Building $qtlib...
  80. make module-$qtlib $MAKE_FLAGS
  81. if [ $? -ne 0 ]
  82. then
  83. echo "Failed building Qt module $qtlib"
  84. exit 1
  85. fi
  86. echo Built $qtlib.
  87. done
  88. echo Finished building modules, installing...
  89. for qtlib in "${qtarray[@]}"; do
  90. echo Installing $qtlib...
  91. make module-$qtlib-install_subtargets
  92. if [ $? -ne 0 ]
  93. then
  94. echo "Failed installing Qt module $qtlib"
  95. exit 1
  96. fi
  97. echo $qtlib installed.
  98. done
  99. cd /data/workspace/qtwayland
  100. /data/workspace/build/qtbase/bin/qmake
  101. if [ $? -ne 0 ]
  102. then
  103. echo "qmake failed for qtwayland"
  104. exit 1
  105. fi
  106. make
  107. if [ $? -ne 0 ]
  108. then
  109. echo "make failed for qtwayland"
  110. exit 1
  111. fi
  112. make install
  113. if [ $? -ne 0 ]
  114. then
  115. echo "make install failed for qtwayland"
  116. exit 1
  117. fi
  118. rm ${INSTALL_PATH}/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/qwayland-server-qt-texture-sharing-unstable-v1.h
  119. cp /data/workspace/qtwayland/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/qwayland-server-qt-texture-sharing-unstable-v1.h ${INSTALL_PATH}/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/
  120. rm ${INSTALL_PATH}/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/wayland-qt-texture-sharing-unstable-v1-server-protocol.h
  121. cp /data/workspace/qtwayland/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/wayland-qt-texture-sharing-unstable-v1-server-protocol.h ${INSTALL_PATH}/include/QtWaylandCompositor/5.15.1/QtWaylandCompositor/private/
  122. echo Qt installed successfully!