[Development] Crosscompile on Debian stable targeting MS Windows
k blammo
k.blammo at gmail.com
Mon May 14 13:22:24 CEST 2012
(resending because my latest mails do not seem to reach the list)
On 14/05/2012 12:58, Loaden wrote:
> Hi, kb, could you share us what you using of the build script? or command?
Absolutely! See attachments.
> Please don't ask where I come from, It's a shame!
Son, Visual Basic is nothing to be ashamed of :)
-------------- next part --------------
#!/usr/bin/env bash
#
#Attention: Please set SOURCE_DIR, BUILD_DIR and INSTALL_PREFIX below
# to sensible values before running!
#
#
#Tip: Add these to reduce build-time:
#
# -nomake tests \
# -nomake demos \
# -nomake examples \
#
#
#NOTE: Changes to Qt 5 sources not yet submitted to upstream:
#
# $SOURCE_DIR/src/plugins/platforms/windows/windows.pro
# Broaden "win32-g++: LIBS" platform scope to "win32-g++*: LIBS"
# this also brings it in line with the special-casing "configure" does.
# Warning: Afaict scope resolution using wildcards is undocumented.
#
#
#Note: Changes to MinGW install on Debian 6 not yet submitted to upstream:
#
#
# /usr/i586-mingw32msvc/include/winerror.h":
# +define CO_E_NOT_SUPPORTED ((HRESULT)0x80004021L)
#
# /usr/i586-mingw32msvc/include/sspi.h
# typedef struct _SECURITY_FUNCTION_TABLEW
# -INITIALIZE_SECURITY_CONTEXT_FN_A InitializeSecurityContextA
# +INITIALIZE_SECURITY_CONTEXT_FN_W InitializeSecurityContextW
#
#
#HACK:
# To get around a build problem when doing out-of-tree building,
# add two symlinks in "$BUILD_DIR/examples/widgets/validators/.uic/release-shared"
# ledwidget.h -> "$SOURCE_DIR/examples/widgets/validators/ledwidget.h"
# localeselector.h -> "$SOURCE_DIR/examples/widgets/validators/localeselector.h"
#
# Then restart the build (run make in $BUILD_DIR)
#
set -o errexit
set -o nounset
SOURCE_DIR="/home/_cruft/kb/dev/qt"
BUILD_DIR="/home/_cruft/kb/build-cross-i586-mingw32msvc/qt"
INSTALL_PREFIX="/home/_cruft/kb/installed-cross-i586-mingw32msvc"
#Warning: mkspec MUST start with "win32-g++". The Qt configure script checks
# for this prefix to turn on mingw specific stuff.
MKSPEC="win32-g++-xLinuxToWin32"
cp -r "$MKSPEC" "$SOURCE_DIR/mkspecs/"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
"$SOURCE_DIR/configure" -confirm-license \
-opensource \
-prefix "$INSTALL_PREFIX" \
-xplatform "$MKSPEC" \
-no-exceptions \
-no-xcb \
-no-eglfs \
-silent \
-release \
-no-pch \
-nomake docs \
-nomake translations
cd "$BUILD_DIR"
make
-------------- next part --------------
#
# qmake configuration for win32-g++
#
# Written by kb for MinGW on Debian
#
MAKEFILE_GENERATOR = MINGW
TEMPLATE = app
CONFIG += qt warn_on release link_prl copy_dir_files debug_and_release debug_and_release_target precompile_header
QT += core gui
DEFINES += UNICODE QT_LARGEFILE_SUPPORT
QMAKE_COMPILER_DEFINES += __GNUC__ WIN32
QMAKE_EXT_OBJ = .o
QMAKE_EXT_RES = _res.o
QMAKE_CC = i586-mingw32msvc-gcc
QMAKE_LEX = flex
QMAKE_LEXFLAGS =
QMAKE_YACC = byacc
QMAKE_YACCFLAGS = -d
QMAKE_CFLAGS =
QMAKE_CFLAGS_DEPS = -M
QMAKE_CFLAGS_WARN_ON = -Wall
QMAKE_CFLAGS_WARN_OFF = -w
QMAKE_CFLAGS_RELEASE = -O2
QMAKE_CFLAGS_DEBUG = -g
QMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
QMAKE_CXX = i586-mingw32msvc-g++
#Enable mmx to make mmintrin.h platform header happy (tests __MMX__ flag)
#TBD: enable 3Dnow so mm3dnow.h does not silently skip everything because it tests for __3dNOW__
#Note: Specifying architecture "pentium-m" turns on MMX, SSE and SSE2 support in gcc.
QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -march=pentium-m -mfpmath=sse
QMAKE_CXXFLAGS_DEPS = $$QMAKE_CFLAGS_DEPS
QMAKE_CXXFLAGS_WARN_ON = $$QMAKE_CFLAGS_WARN_ON
QMAKE_CXXFLAGS_WARN_OFF = $$QMAKE_CFLAGS_WARN_OFF
QMAKE_CXXFLAGS_RELEASE = $$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG = $$QMAKE_CFLAGS_DEBUG
QMAKE_CXXFLAGS_YACC = $$QMAKE_CFLAGS_YACC
QMAKE_CXXFLAGS_THREAD = $$QMAKE_CFLAGS_THREAD
QMAKE_CXXFLAGS_RTTI_ON = -frtti
QMAKE_CXXFLAGS_RTTI_OFF = -fno-rtti
QMAKE_CXXFLAGS_EXCEPTIONS_ON = -fexceptions -mthreads
QMAKE_CXXFLAGS_EXCEPTIONS_OFF = -fno-exceptions
QMAKE_INCDIR = /usr/i586-mingw32msvc/include/
QMAKE_INCDIR += /home/_cruft/kb/installed-cross-i586-mingw32msvc/include
QMAKE_LIBDIR += /home/_cruft/kb/installed-cross-i586-mingw32msvc/lib
INCLUDEPATH += /home/_cruft/kb/installed-cross-i586-mingw32msvc/include
LIBS += -L/home/_cruft/kb/installed-cross-i586-mingw32msvc/lib
QMAKE_INCDIR_QT = /home/_cruft/kb/installed-cross-i586-mingw32msvc/qt/include
QMAKE_LIBDIR_QT = /home/_cruft/kb/installed-cross-i586-mingw32msvc/qt/lib
QMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
QMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
QMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
QMAKE_LINK = i586-mingw32msvc-g++
QMAKE_LINK_C = i586-mingw32msvc-gcc
QMAKE_LFLAGS =
QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads
QMAKE_LFLAGS_EXCEPTIONS_OFF =
QMAKE_LFLAGS_RELEASE = -Wl,-s
QMAKE_LFLAGS_DEBUG =
QMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
QMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows
QMAKE_LFLAGS_DLL = -shared
QMAKE_LINK_OBJECT_MAX = 10
QMAKE_LINK_OBJECT_SCRIPT = object_script
QMAKE_PREFIX_STATICLIB =
QMAKE_EXTENSION_STATICLIB = lib
QMAKE_LIBS =
QMAKE_LIBS_CORE = -lole32 -luuid -lws2_32 -ladvapi32 -lshell32 -luser32 -lkernel32
#Needed to add zlib (is this a bug?):
QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32 -lzlib
#Needed to add zlib (is this a bug?):
QMAKE_LIBS_NETWORK = -lws2_32 -lzlib
QMAKE_LIBS_OPENGL = -lglu32 -lopengl32 -lgdi32 -luser32
QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32
QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain
MINGW_IN_SHELL = 1
QMAKE_DIR_SEP = /
#QMAKE_QMAKE ~= s,\\\\,/,
QMAKE_COPY = cp
QMAKE_COPY_DIR = cp -r
QMAKE_MOVE = mv
QMAKE_DEL_FILE = rm
QMAKE_MKDIR = mkdir -p
QMAKE_DEL_DIR = rmdir
QMAKE_SYMBOLIC_LINK = ln -s
QMAKE_CHK_DIR_EXISTS = test -d
#We need these while building Qt itself (i.e. before Qt is installed)
#so we use the copies in the build tree directly:
QMAKE_MOC = /home/_cruft/kb/build-cross-i586-mingw32msvc/qt/bin/moc
#QMAKE_UIC = /home/_cruft/kb/build-cross-i586-mingw32msvc/qt/bin/uic
QMAKE_IDC = /home/_cruft/kb/build-cross-i586-mingw32msvc/qt/bin/idc
#QMAKE_MOC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}moc
#QMAKE_UIC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}uic
#QMAKE_IDC = $$[QT_INSTALL_BINS]$${DIR_SEPARATOR}idc
QMAKE_IDL = midl
QMAKE_LIB = i586-mingw32msvc-ar -ru
QMAKE_RC = i586-mingw32msvc-windres
QMAKE_ZIP = zip -r -9
QMAKE_STRIP = i586-mingw32msvc-strip
QMAKE_STRIPFLAGS_LIB += --strip-unneeded
#PKG_CONFIG = i686-pc-mingw32-pkg-config
load(qt_config)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: qplatformdefs.h
Type: text/x-chdr
Size: 4331 bytes
Desc: not available
URL: <http://lists.qt-project.org/pipermail/development/attachments/20120514/a96fccce/attachment.h>
More information about the Development
mailing list