summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoerg Koenig <Joerg.Koenig@techsat.com>2019-05-31 07:29:38 (GMT)
committerJoerg Koenig <Joerg.Koenig@techsat.com>2019-05-31 07:29:38 (GMT)
commitc3e0ff338d1dbd0dfb60a03f1d13b1574b0a9f99 (patch)
tree739c2daaf2a9ca06686132c3983ea3e38571d15b
parentc0ef01f7801e75a8042268a597f5f79821dfbb10 (diff)
downloadQt-c3e0ff338d1dbd0dfb60a03f1d13b1574b0a9f99.zip
Qt-c3e0ff338d1dbd0dfb60a03f1d13b1574b0a9f99.tar.gz
Qt-c3e0ff338d1dbd0dfb60a03f1d13b1574b0a9f99.tar.bz2
Fixed MinGW buildrefs/changes/93/7693/1
Change-Id: Ic453a7d5e8e0ff2a1e541ff4b93ae9cac7b5490c
-rw-r--r--Jenkinsfile21
-rw-r--r--Makefile.mingw6433
-rw-r--r--SOURCE/qt-5.12.3-cross-static-gcc-libs.patch202
3 files changed, 234 insertions, 22 deletions
diff --git a/Jenkinsfile b/Jenkinsfile
index d65800e..8f5b5b8 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -69,12 +69,9 @@ stage('Build') {
rm -Rf openssl-1.0.2r
cp -Rf /c/dev-tools/gcc-suite/1.3.0/x86-mingw64/gcc-8.2.0 ./
echo "Done."
- '''
- sh '''
- export PATH=$PWD/gcc-8.2.0/bin:/c/dev-tools/msys/x86/usr/bin:$PATH
- make -f Makefile.mingw64 all
- rm -Rf build.$(ARCH)
- rm -Rf install.$(ARCH)
+ make GCC_PATH=$PWD/gcc-8.2.0 -f Makefile.mingw64 all
+ rm -Rf build.$(ARCH)
+ rm -Rf install.$(ARCH)
'''
}
stash name: "qtwin", includes: "*-msvc.zip, *-x86-mingw64.tgz"
@@ -100,17 +97,19 @@ stage ("Post processing") {
#
# cleanup temporary destination folder for final distribution ...
# unpack Linux archives ...
- mkdir -p $WORKSPACE/INST/$QT_VER/x86-linux64
- tar -xzf $WORKSPACE/qt-$QT_VER-x86-linux64.tgz -C $WORKSPACE/INST/$QT_VER/x86-linux64
+ mkdir -p $WORKSPACE/INST/$QT_VER/x86-linux64-shared
+ tar -xzf $WORKSPACE/qt-$QT_VER-shared-x86-linux64.tgz -C $WORKSPACE/INST/$QT_VER/x86-linux64-shared
+ mkdir -p $WORKSPACE/INST/$QT_VER/x86-linux64-static
+ tar -xzf $WORKSPACE/qt-$QT_VER-static-x86-linux64.tgz -C $WORKSPACE/INST/$QT_VER/x86-linux64-static
mkdir -p $WORKSPACE/INST/$QT_VER/x86_64-msvc
unzip -o $WORKSPACE/qt-$QT_VER-x86_64-msvc.zip -d $WORKSPACE/INST/$QT_VER/x86_64-msvc
mkdir -p $WORKSPACE/INST/$QT_VER/x86-mingw64
tar -xzf $WORKSPACE/qt-$QT_VER-x86-mingw64.tgz -C $WORKSPACE/INST/$QT_VER/x86-mingw64
- #
- # remove temporary folder ...
- rm -Rf $WORKSPACE/tmp
+
+ mkdir -p $WORKSPACE/INST/$QT_VER/x86-mingw64/xbin
+ cp -f $WORKSPACE/INST/$QT_VER/x86-linux64-static/bin/* $WORKSPACE/INST/$QT_VER/x86-mingw64/xbin
#
# finally create the whole archive ...
cd $WORKSPACE/INST && tar -zcf $WORKSPACE/qt-$QT_VER-bin_64.tgz ./
diff --git a/Makefile.mingw64 b/Makefile.mingw64
index e638416..48e741f 100644
--- a/Makefile.mingw64
+++ b/Makefile.mingw64
@@ -1,19 +1,23 @@
-TOP = $(shell readlink -f .)
+TOP = $(shell readlink -f .)
-ARCH = x86-mingw64
+ARCH = x86-mingw64
LOCAL_BUILD_PATH = $(TOP)/build.$(ARCH)
LOCAL_INST_PATH = $(TOP)/install.$(ARCH)
VERSION_SHORT = 5.12
VERSION_RELEASE = 3
-VERSION = $(VERSION_SHORT).$(VERSION_RELEASE)
+VERSION = $(VERSION_SHORT).$(VERSION_RELEASE)
-SSL_VERSION = 1.0.2r
-SSL_ARCHIVE = openssl-$(SSL_VERSION).tar.gz
+SSL_VERSION = 1.0.2r
+SSL_ARCHIVE = openssl-$(SSL_VERSION).tar.gz
PACKAGE_NAME = qt-$(VERSION)-$(ARCH)
+ifeq ($(GCC_PATH),)
+ $(error GCC_PATH variable not set)
+endif
+
all: download ssl qt
ssl: ssl.$(ARCH)
@@ -28,8 +32,9 @@ ssl.$(ARCH):
cd $(LOCAL_BUILD_PATH) && \
tar --force-local -xzf $(TOP)/SOURCE/$(SSL_ARCHIVE)
cd $(LOCAL_BUILD_PATH)/openssl-$(SSL_VERSION) && \
+ export PATH=$(GCC_PATH)/bin:$(PATH) && \
export CFLAGS="-m64 -fpic" && \
- ./Configure --prefix=$(LOCAL_INST_PATH)/openssl shared mingw64 && \
+ ./Configure --prefix=$(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH) shared mingw64 && \
make clean && \
make && \
make install
@@ -38,12 +43,15 @@ qt.$(ARCH):
mkdir -p $(LOCAL_BUILD_PATH)
rm -Rf $(LOCAL_BUILD_PATH)/qt-everywhere-src-$(VERSION)
if ! [ -d $(LOCAL_BUILD_PATH)/qt-everywhere-src-$(VERSION) ]; then \
- cd $(LOCAL_BUILD_PATH); \
- tar --force-local -xJf $(TOP)/SOURCE/qt-everywhere-src-$(VERSION).tar.xz; \
+ cd $(LOCAL_BUILD_PATH); \
+ tar --force-local -xJf $(TOP)/SOURCE/qt-everywhere-src-$(VERSION).tar.xz; \
+ cd $(LOCAL_BUILD_PATH)/qt-everywhere-src-$(VERSION) ; \
+ patch -p1 < $(TOP)/SOURCE/qt-5.12.3.mingw64.patch ; \
+ patch -p1 < $(TOP)/SOURCE/qt-5.12.3-cross-static-gcc-libs.patch ; \
fi
cd $(LOCAL_BUILD_PATH)/qt-everywhere-src-$(VERSION) && \
rm -f config.cache && \
- patch -p1 < $(TOP)/SOURCE/qt-5.12.3.mingw64.patch && \
+ export PATH=$(GCC_PATH)/bin:$(PATH) && \
./configure \
-platform win32-g++ \
-prefix $(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH) \
@@ -70,13 +78,16 @@ qt.$(ARCH):
-qt-freetype \
-opengl desktop \
-openssl \
- -I$(LOCAL_INST_PATH)/openssl/include \
- -L$(LOCAL_INST_PATH)/openssl/lib \
+ -I$(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH)/include \
+ -L$(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH)/lib \
-L$(GCC_PATH)/lib \
-opensource \
-confirm-license && \
make && \
make install
+ mv -f $(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH)/bin/openssl.exe \
+ $(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH)/bin/qt-openssl.exe
+ cp -f $(GCC_PATH)/bin/*.dll $(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH)/bin/
cd $(LOCAL_INST_PATH)/qt-$(VERSION)/$(ARCH) && \
tar --force-local -zcf $(TOP)/$(PACKAGE_NAME).tgz ./
diff --git a/SOURCE/qt-5.12.3-cross-static-gcc-libs.patch b/SOURCE/qt-5.12.3-cross-static-gcc-libs.patch
new file mode 100644
index 0000000..017c5a9
--- /dev/null
+++ b/SOURCE/qt-5.12.3-cross-static-gcc-libs.patch
@@ -0,0 +1,202 @@
+diff -ruNb qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/common/g++-win32.conf qt-everywhere-src-5.12.3/qtbase/mkspecs/common/g++-win32.conf
+--- qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/common/g++-win32.conf 2019-04-09 11:51:26.000000000 +0200
++++ qt-everywhere-src-5.12.3/qtbase/mkspecs/common/g++-win32.conf 2019-05-31 08:58:29.103427860 +0200
+@@ -80,3 +80,5 @@
+
+ include(angle.conf)
+ include(windows-vulkan.conf)
++
++QMAKE_LFLAGS += -static-libgcc -static-libstdc++
+diff -ruNb qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/x-win32-g++/qmake.conf qt-everywhere-src-5.12.3/qtbase/mkspecs/x-win32-g++/qmake.conf
+--- qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/x-win32-g++/qmake.conf 1970-01-01 01:00:00.000000000 +0100
++++ qt-everywhere-src-5.12.3/qtbase/mkspecs/x-win32-g++/qmake.conf 2019-05-31 08:59:13.555027712 +0200
+@@ -0,0 +1,30 @@
++#
++# qmake configuration for win32-g++
++#
++# Written for MinGW-w64 / gcc 5.3 or higher
++#
++# Cross compile from Linux to windows MinGW
++#
++
++include(../common/g++-win32.conf)
++load(qt_config)
++
++# modifications to g++-win32.conf
++
++QMAKE_CC = $$(CROSS_COMPILE)gcc
++QMAKE_CFLAGS += -fno-keep-inline-dllexport
++QMAKE_CFLAGS_WARN_ON += -Wextra
++
++QMAKE_CXX = $$(CROSS_COMPILE)g++
++QMAKE_CXXFLAGS += -fno-keep-inline-dllexport
++QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
++
++QMAKE_LINK = $$(CROSS_COMPILE)g++
++QMAKE_LINK_C = $$(CROSS_COMPILE)gcc
++
++QMAKE_CFLAGS_LTCG = -flto
++QMAKE_CXXFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
++QMAKE_LFLAGS_LTCG = $$QMAKE_CFLAGS_LTCG
++
++win32.LIBS = ${{QT.prefix}}/lib
++QMAKE_LIBS_OPENGL =
+diff -ruNb qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/x-win32-g++/qplatformdefs.h qt-everywhere-src-5.12.3/qtbase/mkspecs/x-win32-g++/qplatformdefs.h
+--- qt-everywhere-src-5.12.3.orig/qtbase/mkspecs/x-win32-g++/qplatformdefs.h 1970-01-01 01:00:00.000000000 +0100
++++ qt-everywhere-src-5.12.3/qtbase/mkspecs/x-win32-g++/qplatformdefs.h 2019-05-31 08:59:13.555027712 +0200
+@@ -0,0 +1,155 @@
++/****************************************************************************
++**
++** Copyright (C) 2016 The Qt Company Ltd.
++** Contact: https://www.qt.io/licensing/
++**
++** This file is part of the qmake spec of the Qt Toolkit.
++**
++** $QT_BEGIN_LICENSE:LGPL$
++** Commercial License Usage
++** Licensees holding valid commercial Qt licenses may use this file in
++** accordance with the commercial license agreement provided with the
++** Software or, alternatively, in accordance with the terms contained in
++** a written agreement between you and The Qt Company. For licensing terms
++** and conditions see https://www.qt.io/terms-conditions. For further
++** information use the contact form at https://www.qt.io/contact-us.
++**
++** GNU Lesser General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU Lesser
++** General Public License version 3 as published by the Free Software
++** Foundation and appearing in the file LICENSE.LGPL3 included in the
++** packaging of this file. Please review the following information to
++** ensure the GNU Lesser General Public License version 3 requirements
++** will be met: https://www.gnu.org/licenses/lgpl-3.0.html.
++**
++** GNU General Public License Usage
++** Alternatively, this file may be used under the terms of the GNU
++** General Public License version 2.0 or (at your option) the GNU General
++** Public license version 3 or any later version approved by the KDE Free
++** Qt Foundation. The licenses are as published by the Free Software
++** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3
++** included in the packaging of this file. Please review the following
++** information to ensure the GNU General Public License requirements will
++** be met: https://www.gnu.org/licenses/gpl-2.0.html and
++** https://www.gnu.org/licenses/gpl-3.0.html.
++**
++** $QT_END_LICENSE$
++**
++****************************************************************************/
++
++#ifndef QPLATFORMDEFS_H
++#define QPLATFORMDEFS_H
++
++#ifdef UNICODE
++#ifndef _UNICODE
++#define _UNICODE
++#endif
++#endif
++
++// Get Qt defines/settings
++
++#include "qglobal.h"
++
++#include <tchar.h>
++#include <io.h>
++#include <direct.h>
++#include <stdio.h>
++#include <fcntl.h>
++#include <errno.h>
++#include <sys/stat.h>
++#include <stdlib.h>
++#include <limits.h>
++
++#if !defined(_WIN32_WINNT) || (_WIN32_WINNT-0 < 0x0500)
++typedef enum {
++ NameUnknown = 0,
++ NameFullyQualifiedDN = 1,
++ NameSamCompatible = 2,
++ NameDisplay = 3,
++ NameUniqueId = 6,
++ NameCanonical = 7,
++ NameUserPrincipal = 8,
++ NameCanonicalEx = 9,
++ NameServicePrincipal = 10,
++ NameDnsDomain = 12
++} EXTENDED_NAME_FORMAT, *PEXTENDED_NAME_FORMAT;
++#endif
++
++#ifdef QT_LARGEFILE_SUPPORT
++#define QT_STATBUF struct _stati64 // non-ANSI defs
++#define QT_STATBUF4TSTAT struct _stati64 // non-ANSI defs
++#define QT_STAT ::_stati64
++#define QT_FSTAT ::_fstati64
++#else
++#define QT_STATBUF struct _stat // non-ANSI defs
++#define QT_STATBUF4TSTAT struct _stat // non-ANSI defs
++#define QT_STAT ::_stat
++#define QT_FSTAT ::_fstat
++#endif
++#define QT_STAT_REG _S_IFREG
++#define QT_STAT_DIR _S_IFDIR
++#define QT_STAT_MASK _S_IFMT
++#if defined(_S_IFLNK)
++# define QT_STAT_LNK _S_IFLNK
++#endif
++#define QT_FILENO _fileno
++#define QT_OPEN ::_open
++#define QT_CLOSE ::_close
++#ifdef QT_LARGEFILE_SUPPORT
++#define QT_LSEEK ::_lseeki64
++#ifndef UNICODE
++#define QT_TSTAT ::_stati64
++#else
++#define QT_TSTAT ::_wstati64
++#endif
++#else
++#define QT_LSEEK ::_lseek
++#ifndef UNICODE
++#define QT_TSTAT ::_stat
++#else
++#define QT_TSTAT ::_wstat
++#endif
++#endif
++#define QT_READ ::_read
++#define QT_WRITE ::_write
++#define QT_ACCESS ::_access
++#define QT_GETCWD ::_getcwd
++#define QT_CHDIR ::_chdir
++#define QT_MKDIR ::_mkdir
++#define QT_RMDIR ::_rmdir
++#define QT_OPEN_LARGEFILE 0
++#define QT_OPEN_RDONLY _O_RDONLY
++#define QT_OPEN_WRONLY _O_WRONLY
++#define QT_OPEN_RDWR _O_RDWR
++#define QT_OPEN_CREAT _O_CREAT
++#define QT_OPEN_TRUNC _O_TRUNC
++#define QT_OPEN_APPEND _O_APPEND
++#if defined(O_TEXT)
++# define QT_OPEN_TEXT _O_TEXT
++# define QT_OPEN_BINARY _O_BINARY
++#endif
++
++#include "../common/c89/qplatformdefs.h"
++
++#ifdef QT_LARGEFILE_SUPPORT
++#undef QT_FSEEK
++#undef QT_FTELL
++#undef QT_OFF_T
++
++#define QT_FSEEK ::fseeko64
++#define QT_FTELL ::ftello64
++#define QT_OFF_T off64_t
++#endif
++
++#define QT_SIGNAL_ARGS int
++
++#define QT_VSNPRINTF ::_vsnprintf
++#define QT_SNPRINTF ::_snprintf
++
++# define F_OK 0
++# define X_OK 1
++# define W_OK 2
++# define R_OK 4
++
++
++#endif // QPLATFORMDEFS_H