view src/qt.mk @ 4654:b9e4ebcad82f

disable doc extraction for optim package Disable the rules for extracting doc strings because they don't work when cross compiling. Our patches to the source files don't touch the doc strings, so there is no need to update them anyway.
author John W. Eaton <jwe@octave.org>
date Tue, 10 Apr 2018 07:50:10 -0400
parents e8da760989bc
children e2349691d6ae
line wrap: on
line source

# This file is part of MXE.
# See index.html for further information.

PKG             := qt
$(PKG)_IGNORE   :=
$(PKG)_VERSION  := 4.8.7
$(PKG)_CHECKSUM := 76aef40335c0701e5be7bb3a9101df5d22fe3666
$(PKG)_SUBDIR   := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION)
$(PKG)_FILE     := $(PKG)-everywhere-opensource-src-$($(PKG)_VERSION).tar.gz
$(PKG)_URL      := http://download.qt.io/official_releases/qt/4.8/$($(PKG)_VERSION)/$($(PKG)_FILE)
$(PKG)_DEPS     := postgresql freetds zlib libpng jpeg libmng tiff sqlite dbus
ifeq ($(USE_SYSTEM_FONTCONFIG),no)
  $(PKG)_FONTCONFIG := fontconfig
endif
ifeq ($(MXE_WINDOWS_BUILD),no)
  ifeq ($(USE_SYSTEM_X11_LIBS),no)
    $(PKG)_DEPS += xdamage xdmcp xext xfixes xi xrender xt xxf86vm x11 xcb xcb-util xcb-util-cursor xcb-util-image xcb-util-keysyms xcb-util-renderutil xcb-util-wm
  endif
endif

$(PKG)_CONFIGURE_CMD :=
$(PKG)_CONFIGURE_CROSS_COMPILE_OPTION :=
$(PKG)_CONFIGURE_DATABASE_OPTION :=
$(PKG)_CONFIGURE_ENV := PKG_CONFIG_PATH='$(HOST_PREFIX)/lib/pkgconfig'
$(PKG)_CONFIGURE_EXTRA_OPTION :=
$(PKG)_CONFIGURE_INCLUDE_OPTION := -I '$(HOST_INCDIR)/freetype2'
$(PKG)_CONFIGURE_LIBPATH_OPTION :=
$(PKG)_CONFIGURE_PLATFORM_OPTION :=
$(PKG)_PREFIX := $(HOST_PREFIX)
$(PKG)_MKSPECS := $($(PKG)_PREFIX)
$(PKG)_INSTALL_ROOT := $(3)

ifneq ($(filter mingw msvc,$(MXE_SYSTEM)),)
  ifeq ($(MXE_NATIVE_BUILD),yes)
    ifeq ($(MXE_SYSTEM),msvc)
      # NMAKE is perturbed by the values of MAKE and MAKEFLAGS defined by GNU
      # make. These need to be unset even when running configure script, as
      # this will run NMAKE to compile QMAKE.
      $(PKG)_CONFIGURE_ENV += MAKE= MAKEFLAGS=
    else
      # native mingw doesnt like using install root mixed with prefix
      # and instead attempts to install to c:\INSTALL_ROOT\prefix
      # so dont use it if compiling native mingw
      $(PKG)_INSTALL_ROOT :=
    endif
  else
    $(PKG)_CONFIGURE_ENV := \
      PSQL_LIBS="-lpq -lsecur32 `'$(MXE_PKG_CONFIG)'` -lws2_32" \
      SYBASE_LIBS="-lsybdb `'$(MXE_PKG_CONFIG)' --libs-only-l gnutls` -liconv -lws2_32" \
      CXXFLAGS="-std=gnu++98"
    $(PKG)_CONFIGURE_DATABASE_OPTION += -system-sqlite
  endif
  # compile-in generic ODBC driver under Windows
  $(PKG)_CONFIGURE_DATABASE_OPTION += -plugin-sql-odbc
else
  ifeq ($(MXE_USE_LIB64_DIRECTORY),yes)
    $(PKG)_CONFIGURE_ENV += \
      LDFLAGS='-Wl,-rpath-link,$(HOST_LIBDIR) -L$(HOST_LIBDIR) -Wl,-rpath-link,$(HOST_LIB64DIR) -L$(HOST_LIB64DIR)'
  else
    $(PKG)_CONFIGURE_ENV += \
      LDFLAGS='-Wl,-rpath-link,$(HOST_LIBDIR) -L$(HOST_LIBDIR)'
  endif
  $(PKG)_CONFIGURE_DATABASE_OPTION += -system-sqlite
endif

ifeq ($(MXE_NATIVE_BUILD),yes)
  $(PKG)_CONFIGURE_INCLUDE_OPTION += -I '$(HOST_INCDIR)'
  $(PKG)_CONFIGURE_LIBPATH_OPTION += -L '$(HOST_LIBDIR)'
  ifeq ($(MXE_USE_LIB64_DIRECTORY),yes)
    $(PKG)_CONFIGURE_LIBPATH_OPTION += -L '$(HOST_LIB64DIR)'
  endif
  $(PKG)_CONFIGURE_INCLUDE_OPTION += -I '$(HOST_INCDIR)/dbus-1.0'
  $(PKG)_CONFIGURE_INCLUDE_OPTION += -I '$(HOST_LIBDIR)/dbus-1.0/include'
endif

ifeq ($(MXE_NATIVE_MINGW_BUILD),yes)
  $(PKG)_CONFIGURE_CMD := configure.exe
  ifeq ($(MXE_SYSTEM),msvc)
    # FIXME: the "2010" suffix should be computed dynamically
    $(PKG)_CONFIGURE_PLATFORM_OPTION := -platform win32-msvc2010
    # mimic typical Linux installation
    $(PKG)_CONFIGURE_EXTRA_OPTION += \
      -docdir '$(HOST_LIBDIR)/qt4/doc' \
      -plugindir '$(HOST_LIBDIR)/qt4/plugins' \
      -importdir '$(HOST_LIBDIR)/qt4/imports' \
      -datadir '$(HOST_LIBDIR)/qt4' \
      -translationdir '$(HOST_LIBDIR)/qt4/translations' \
      -examplesdir '$(HOST_LIBDIR)/qt4/examples' \
      -demosdir '$(HOST_LIBDIR)/qt4/demos'
    $(PKG)_MKSPECS := '$(HOST_LIBDIR)/qt4'
  else
    $(PKG)_CONFIGURE_PLATFORM_OPTION := -platform win32-g++
  endif
else
  $(PKG)_CONFIGURE_CMD := configure
  $(PKG)_CONFIGURE_EXTRA_OPTION := \
      -prefix-install \
      -make libs \
      -no-glib \
      -no-gstreamer \
      -no-javascript-jit \
      -no-openssl \
      -no-reduce-exports \
      -no-rpath \
      -make translations \
      -translationdir '$($(PKG)_PREFIX)/translations' \
      -device-option PKG_CONFIG='$(MXE_PKG_CONFIG)' \
      -force-pkg-config  \
      -v

  ifeq ($(MXE_SYSTEM),mingw)
    $(PKG)_CONFIGURE_CROSS_COMPILE_OPTION := \
      -device-option CROSS_COMPILE=$(MXE_TOOL_PREFIX)
    $(PKG)_CONFIGURE_PLATFORM_OPTION := -xplatform win32-g++-4.6
  endif

endif

define $(PKG)_UPDATE
    echo 'Warning: Updates are temporarily disabled for package $(PKG).' >&2;
    echo $($(PKG)_VERSION)
endef

define $(PKG)_BUILD
    ## syncqt needs QTDIR set to find the sources
    cd '$(1)' && QTDIR='$(1)' ./bin/syncqt
    cd '$(1)' && QTDIR='$(1)' \
        $($(PKG)_CONFIGURE_ENV) \
        ./$($(PKG)_CONFIGURE_CMD) \
        $($(PKG)_CONFIGURE_INCLUDE_OPTION) \
        $($(PKG)_CONFIGURE_LIBPATH_OPTION) \
        -opensource \
        -confirm-license \
        -dbus-linked \
        -fast \
        $($(PKG)_CONFIGURE_PLATFORM_OPTION) \
        $($(PKG)_CONFIGURE_CROSS_COMPILE_OPTION) \
        $($(PKG)_CONFIGURE_EXTRA_OPTION) \
        -release \
        -exceptions \
        -shared \
        -prefix $($(PKG)_PREFIX) \
        -script \
        -no-iconv \
        -no-icu \
        -opengl desktop \
        -no-webkit \
        -no-pch \
        -no-phonon \
        -no-phonon-backend \
        -no-xinerama \
        -no-xrandr \
        -accessibility \
        -nomake demos \
        -nomake docs \
        -nomake examples \
        $($(PKG)_CONFIGURE_DATABASE_OPTION) \
        -system-zlib \
        -system-libpng \
        -system-libjpeg \
        -system-libtiff \
        -system-libmng 

    if test x$(MXE_SYSTEM) = xmsvc; then \
        for f in $(1)/mkspecs/win32-msvc*/qmake.conf; do \
            sed -i -e 's/@@LIBRARY_PREFIX@@/$(LIBRARY_PREFIX)/g' \
                   -e 's/@@LIBRARY_SUFFIX@@/$(LIBRARY_SUFFIX)/g' $$f; \
        done; \
    fi

    # need to 'install' mkspecs for the native mingw to build during its build
    # also need build tools qmake 
    if [ "$(MXE_NATIVE_MINGW_BUILD)" = yes ]; then \
      mkdir -p '$($(PKG)_MKSPECS)'; \
      cp -r '$(1)/mkspecs' '$($(PKG)_MKSPECS)'; \
      $(INSTALL) -d '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin'; \
      $(INSTALL) -m755 '$(1)/bin/qmake.exe' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/'; \
    elif [ "$(MXE_NATIVE_BUILD)" = "yes" ]; then \
      mkdir -p '$($(PKG)_MKSPECS)'; \
      cp -r '$(1)/mkspecs' '$($(PKG)_MKSPECS)'; \
      $(INSTALL) -d '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin'; \
      $(INSTALL) $(1)/bin/qmake '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/'; \
    fi

    # compilation under MSVC requires the use of NMAKE, which does not
    # support the -j option flag and is perturbed by GNU make values for
    # MAKE and MAKEFLAGS; also remove unnecessary DLL installed in lib/
    if test x$(MXE_SYSTEM) = xmsvc; then \
      mkdir -p '$(3)' && \
      cd '$(1)' && \
      env -u MAKE -u MAKEFLAGS PKG_CONFIG_PATH='$(HOST_PREFIX)/lib/pkgconfig' nmake && \
      env -u MAKE -u MAKEFLAGS PKG_CONFIG_PATH='$(HOST_PREFIX)/lib/pkgconfig' nmake \
          INSTALL_ROOT=`cd $(3) && pwd -W | sed -e 's,^[a-zA-Z]:,,' -e 's,/,\\\\,g'` install && \
      rm -f $(3)$(CMAKE_HOST_PREFIX)/lib/$(LIBRARY_PREFIX)Qt*.dll; \
    else \
      make -C '$(1)' -j '$(JOBS)'; \
      make -C '$(1)' -j 1 install INSTALL_ROOT=$($(PKG)_INSTALL_ROOT); \
      if [ "$(MXE_SYSTEM)" = mingw ]; then \
        rm -f $($(PKG)_INSTALL_ROOT)$(HOST_LIBDIR)/$(LIBRARY_PREFIX)Qt*$(LIBRARY_SUFFIX).dll; \
      fi \
    fi

    # native build doesn't seem to succeed when installing pkgconfig files to prefix    
    # in addition, .pc files have the wrong paths, mangled lib names
    if [ "$(MXE_NATIVE_MINGW_BUILD)" = yes -a "$(MXE_SYSTEM)" != msvc ]; then \
       find $(1)/lib/pkgconfig/*.pc -exec $(SED) -i \
         -e 's,\(.*\)_location=.*,\1_location=$${prefix}/bin/\1,g' \
         -e 's,\(Libs:.* -l\).*[\\/]\([A-Za-z0-9]*\),\1\2,g' \
         '{}' ';' ; \
       $(INSTALL) -d '$($(PKG)_INSTALL_ROOT)$(HOST_LIBDIR)/pkgconfig'; \
       cp -f '$(1)/lib/pkgconfig/'*.pc '$($(PKG)_INSTALL_ROOT)$(HOST_LIBDIR)/pkgconfig/';  \
    fi

    $(if $(filter-out msvc, $(MXE_SYSTEM)),
      $(if $(filter-out yes, $(MXE_NATIVE_BUILD)),
        $(INSTALL) -d '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin'
        mv '$($(PKG)_INSTALL_ROOT)$($(PKG)_PREFIX)/bin/moc' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)moc'
        mv '$($(PKG)_INSTALL_ROOT)$($(PKG)_PREFIX)/bin/rcc' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)rcc'
        mv '$($(PKG)_INSTALL_ROOT)$($(PKG)_PREFIX)/bin/uic' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)uic'
        mv '$($(PKG)_INSTALL_ROOT)$($(PKG)_PREFIX)/bin/qmake' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)qmake'
      )

      # lrelease (from linguist) needed by octave for GUI build
      $(MAKE) -C '$(1)/tools/linguist/lrelease' -j '$(JOBS)' 
      $(MAKE) -C '$(1)/tools/linguist/lrelease' -j 1 install INSTALL_ROOT='$($(PKG)_INSTALL_ROOT)'
      $(if $(filter-out yes, $(MXE_NATIVE_BUILD)),
        mv '$($(PKG)_INSTALL_ROOT)$($(PKG)_PREFIX)/bin/lrelease' '$($(PKG)_INSTALL_ROOT)$(BUILD_TOOLS_PREFIX)/bin/$(MXE_TOOL_PREFIX)lrelease'))

    # if mingw cross compiling, and want devel tools, create cross compiles uic, moc, rcc and lrelease
    if [ "$(MXE_NATIVE_BUILD)" = "no" -a "$(MXE_SYSTEM)" = "mingw" ]; then \
      if [ "$(ENABLE_DEVEL_TOOLS)" = "yes" ]; then \
        for f in bootstrap moc uic rcc; do \
          echo "do make in $$f"; \
          make -C "$(1)/src/tools/$$f" distclean; \
          cd "$(1)/src/tools/$$f" && $(MXE_QMAKE) -makefile -spec '$(1)/mkspecs/win32-g++'; \
          make -C "$(1)/src/tools/$$f"; \
          make -C "$(1)/src/tools/$$f" -j 1 install INSTALL_ROOT='$($(PKG)_INSTALL_ROOT)'; \
        done; \
        make -C '$(1)/tools/linguist/lrelease' distclean; \
        cd '$(1)/tools/linguist/lrelease' && $(MXE_QMAKE) -makefile -spec '$(1)/mkspecs/win32-g++'; \
        make -C '$(1)/tools/linguist/lrelease'; \
        make -C '$(1)/tools/linguist/lrelease' -j 1 install INSTALL_ROOT='$($(PKG)_INSTALL_ROOT)'; \
      fi; \
    fi
endef