Skip to content
Snippets Groups Projects
qt.yml 4.64 KiB
Newer Older
#@ load("@ytt:data", "data")
#@ load("@ytt:overlay", "overlay")
Filippo Cremonese's avatar
Filippo Cremonese committed
#@ load("/lib/make.lib.yml", "make")
#@ load("/lib/shell.lib.yml", "expand_args")
#@ load("/lib/optimization_flavors.lib.yml", "qt_optimization_flavors")

#@yaml/text-templated-strings
---
#@ def _configure_base(extra_qmake_options=""):
- |
  mkdir -p "$BUILD_DIR"
  cd "$BUILD_DIR";

  mkdir -p "$BUILD_DIR/bin"
  cat > "$BUILD_DIR/bin/pmake" <<eof
  #!/bin/sh
  exec make -j$(nproc) $*
  eof
  chmod +x "$BUILD_DIR/bin/pmake"

  export PATH=$BUILD_DIR/bin:$PATH

  MAKE="pmake" \
Filippo Cremonese's avatar
Filippo Cremonese committed
  $SOURCE_DIR/configure \
    -recheck-all \
    -prefix "$ORCHESTRA_ROOT" \
    -confirm-license \
    -opensource \
    -skip qt3d \
    -skip qtactiveqt \
    -skip qtandroidextras  \
    -skip qtcanvas3d  \
    -skip qtcharts  \
    -skip qtconnectivity  \
    -skip qtdatavis3d  \
    -skip qtgamepad  \
    -skip qtimageformats  \
    -skip qtlocation  \
    -skip qtmacextras  \
    -skip qtmultimedia  \
    -skip qtnetworkauth  \
    -skip qtpurchasing  \
    -skip qtremoteobjects  \
    -skip qtscript  \
    -skip qtscxml  \
    -skip qtsensors  \
    -skip qtserialbus  \
    -skip qtserialport  \
    -skip qtsvg  \
    -skip qtspeech  \
    -skip qttools  \
    -skip qttranslations  \
    -skip qtvirtualkeyboard  \
    -skip qtwebchannel  \
    -skip qtwebsockets  \
    -skip qtwebview  \
    -skip qtwinextras  \
    -skip qtxmlpatterns  \
    -skip qtwebengine \
    -openssl-runtime \
    -no-glib \
    -no-cups \
    -no-gtk \
    -qt-harfbuzz \
    -fontconfig \
    -system-freetype \
    -opengl desktop \
    -egl \
    -no-eglfs \
    -xkb \
    -system-xcb \
    -xkbcommon \
Filippo Cremonese's avatar
Filippo Cremonese committed
    -no-icu \
Filippo Cremonese's avatar
Filippo Cremonese committed
    -libinput \
    -qt-libpng \
    -qt-libjpeg \
    -qt-sqlite \
    -qt-pcre \
Filippo Cremonese's avatar
Filippo Cremonese committed
    -qt-doubleconversion \
    -sql-sqlite \
    -no-sql-odbc \
    -no-compile-examples \
    -nomake tests \
    -nomake examples \
    -c++std c++14 \
    -platform linux-clang \
    (@= extra_qmake_options @) \
    QMAKE_CXXFLAGS+="(@= data.values.use_old_glibc_cflags @) -ggdb3 (@= data.values.regular_cxx_flags @)" \
    QMAKE_LFLAGS+="(@= data.values.use_old_glibc_ldflags @) -ggdb3 (@= data.values.regular_linker_flags @) -Wl,-rpath,$RPATH_PLACEHOLDER/lib"
Filippo Cremonese's avatar
Filippo Cremonese committed
#@ end

#@ def configure_base(**kwargs):
#@    return _configure_base(**kwargs)[0]
#@ end


#@yaml/text-templated-strings
---
#@ def qt_component():
Alessandro Di Federico's avatar
Alessandro Di Federico committed
license: LICENSE.GPLv3
Filippo Cremonese's avatar
Filippo Cremonese committed
default_build: optimized
builds:
  #@ for flavor, opts in qt_optimization_flavors.items():
  #@ extra_qmake_options = opts["extra_qmake_options"]
Filippo Cremonese's avatar
Filippo Cremonese committed
  (@= flavor @):
    configure: |
      extract.sh --into "$SOURCE_DIR" https://download.qt.io/official_releases/qt/5.14/5.14.1/single/qt-everywhere-src-5.14.1.tar.xz
      patch-if-exists "${ORCHESTRA_DOTDIR}/patches/qt-5.13.1-libcxx-include-array-linuxdmabuf.patch" "$SOURCE_DIR"
Filippo Cremonese's avatar
Filippo Cremonese committed

      cat >> "$SOURCE_DIR/qtbase/mkspecs/linux-clang/qmake.conf" <<eof
      QMAKE_CXXFLAGS += (@= data.values.use_old_glibc_cflags @) -ggdb3 (@= data.values.regular_cxx_flags @) -w # ORCHESTRA_TMP
      QMAKE_LFLAGS += (@= data.values.use_old_glibc_ldflags @) -ggdb3 (@= data.values.regular_linker_flags @) -Wl,-rpath,$RPATH_PLACEHOLDER/lib # ORCHESTRA_TMP
      eof
      sed -i 's|QT_CONFIG(getauxval)|0|' "$SOURCE_DIR/qtbase/src/corelib/global/qrandom.cpp"

Filippo Cremonese's avatar
Filippo Cremonese committed
      (@= configure_base(extra_qmake_options=extra_qmake_options) @)
    install: |
      cd "$BUILD_DIR"

      (@= make @)
      (@= make @) install INSTALL_ROOT=$TMP_ROOT

      rm "${TMP_ROOT}${ORCHESTRA_ROOT}/lib64/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"
      touch "${TMP_ROOT}${ORCHESTRA_ROOT}/lib64/cmake/Qt5Gui/Qt5GuiConfigExtras.cmake"
      find "${TMP_ROOT}${ORCHESTRA_ROOT}" \( -name "*.pri" -or -name "*.pc" -or -name "*.pri"  \) \
          -exec sed 's|/[^; ]*/lib\([^; ]*\)\.so|-l\1|g' {} -i ";"

      cat > "${TMP_ROOT}${ORCHESTRA_ROOT}/bin/qt.conf" <<EOF
      [Paths]
Filippo Cremonese's avatar
Filippo Cremonese committed
      EOF

      cd "${TMP_ROOT}${ORCHESTRA_ROOT}/mkspecs/linux-clang/"
      mv "qmake.conf" "qmake.conf.tmp"
      grep -v ORCHESTRA_TMP "qmake.conf.tmp" > "qmake.conf"
      rm "qmake.conf.tmp"
Filippo Cremonese's avatar
Filippo Cremonese committed
    dependencies:
      - ui/freetype
      - ui/libdrm
Filippo Cremonese's avatar
Filippo Cremonese committed
      - ui/mesa
      - ui/libxcb
      - ui/libinput
      - ui/libudev
      - ui/xcbutil-image
      - ui/xcbutil-renderutil
      - ui/xcbutil-wm
      - ui/xcbutil-keysyms
      - ui/libxshmfence
      - ui/libx11
Alessandro Di Federico's avatar
Alessandro Di Federico committed
      - ui/libxext
      - ui/xkbcommon
Filippo Cremonese's avatar
Filippo Cremonese committed
      - zlib
    build_dependencies:
      - host-cxx-toolchain
    #@ if/end ndebug == False:
    ndebug: false
Filippo Cremonese's avatar
Filippo Cremonese committed
  #@ end

#@ end

#@overlay/match by=overlay.all, expects=1
#@overlay/match-child-defaults missing_ok=True
Filippo Cremonese's avatar
Filippo Cremonese committed
---
  ui/qt: #@ qt_component()