summaryrefslogtreecommitdiffstats
path: root/experimental/tqtinterface/qt4/mkspecs/win32-g++
diff options
context:
space:
mode:
authorTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
committerTimothy Pearson <kb9vqf@pearsoncomputing.net>2011-07-10 15:17:53 -0500
commit37e3f157c7d76f13de807fa66e36df209e1005fb (patch)
tree7a4f131b2ee065337dac341bff34515310efba4f /experimental/tqtinterface/qt4/mkspecs/win32-g++
parent16630c3eff313238fa8412275555285c9195981b (diff)
downloadtde-37e3f157c7d76f13de807fa66e36df209e1005fb.tar.gz
tde-37e3f157c7d76f13de807fa66e36df209e1005fb.zip
Added TQt4 HEAD
Diffstat (limited to 'experimental/tqtinterface/qt4/mkspecs/win32-g++')
-rw-r--r--experimental/tqtinterface/qt4/mkspecs/win32-g++/qmake.conf97
-rw-r--r--experimental/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp231
-rw-r--r--experimental/tqtinterface/qt4/mkspecs/win32-g++/tqplatformdefs.h96
3 files changed, 424 insertions, 0 deletions
diff --git a/experimental/tqtinterface/qt4/mkspecs/win32-g++/qmake.conf b/experimental/tqtinterface/qt4/mkspecs/win32-g++/qmake.conf
new file mode 100644
index 000000000..154f74a6a
--- /dev/null
+++ b/experimental/tqtinterface/qt4/mkspecs/win32-g++/qmake.conf
@@ -0,0 +1,97 @@
+#
+#
+# qmake configuration for win32-g++
+#
+# Written for MinGW
+#
+
+MAKEFILE_GENERATOR = MINGW
+TEMPLATE = app
+CONFIG += qt warn_on release link_prl
+DEFINES += UNICODE
+
+exists( $(TQTDIR)\.qtwinconfig ) {
+ include( $(TQTDIR)\.qtwinconfig )
+}
+
+TQMAKE_CC = gcc
+TQMAKE_LEX = flex
+TQMAKE_LEXFLAGS =
+TQMAKE_YACC = byacc
+TQMAKE_YACCFLAGS = -d
+TQMAKE_CFLAGS =
+TQMAKE_CFLAGS_DEPS = -M
+TQMAKE_CFLAGS_WARN_ON = -Wall
+TQMAKE_CFLAGS_WARN_OFF = -w
+TQMAKE_CFLAGS_RELEASE = -O2
+TQMAKE_CFLAGS_DEBUG = -g
+TQMAKE_CFLAGS_YACC = -Wno-unused -Wno-parentheses
+TQMAKE_CFLAGS_THREAD = -mthreads
+TQMAKE_CFLAGS_RTTI_ON = -frtti
+TQMAKE_CFLAGS_RTTI_OFF = -fno-rtti
+TQMAKE_CFLAGS_EXCEPTIONS_ON = -fexceptions
+TQMAKE_CFLAGS_EXCEPTIONS_OFF = -fno-exceptions
+
+TQMAKE_CXX = g++
+TQMAKE_CXXFLAGS = $$TQMAKE_CFLAGS
+TQMAKE_CXXFLAGS_DEPS = $$TQMAKE_CFLAGS_DEPS
+TQMAKE_CXXFLAGS_WARN_ON = $$TQMAKE_CFLAGS_WARN_ON
+TQMAKE_CXXFLAGS_WARN_OFF = $$TQMAKE_CFLAGS_WARN_OFF
+TQMAKE_CXXFLAGS_RELEASE = $$TQMAKE_CFLAGS_RELEASE
+TQMAKE_CXXFLAGS_DEBUG = $$TQMAKE_CFLAGS_DEBUG
+TQMAKE_CXXFLAGS_YACC = $$TQMAKE_CFLAGS_YACC
+TQMAKE_CXXFLAGS_THREAD = $$TQMAKE_CFLAGS_THREAD
+TQMAKE_CXXFLAGS_RTTI_ON = $$TQMAKE_CFLAGS_RTTI_ON
+TQMAKE_CXXFLAGS_RTTI_OFF = $$TQMAKE_CFLAGS_RTTI_OFF
+TQMAKE_CXXFLAGS_EXCEPTIONS_ON = $$TQMAKE_CFLAGS_EXCEPTIONS_ON
+TQMAKE_CXXFLAGS_EXCEPTIONS_OFF = $$TQMAKE_CFLAGS_EXCEPTIONS_OFF
+
+TQMAKE_INCDIR =
+TQMAKE_INCDIR_QT = $(TQTDIR)\include
+TQMAKE_LIBDIR_QT = $(TQTDIR)\lib
+
+TQMAKE_RUN_CC = $(CC) -c $(CFLAGS) $(INCPATH) -o $obj $src
+TQMAKE_RUN_CC_IMP = $(CC) -c $(CFLAGS) $(INCPATH) -o $@ $<
+TQMAKE_RUN_CXX = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $obj $src
+TQMAKE_RUN_CXX_IMP = $(CXX) -c $(CXXFLAGS) $(INCPATH) -o $@ $<
+
+TQMAKE_LINK = g++
+TQMAKE_LFLAGS = -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc
+TQMAKE_LFLAGS_RELEASE = -Wl,-s
+TQMAKE_LFLAGS_DEBUG =
+TQMAKE_LFLAGS_THREAD = -mthreads
+TQMAKE_LFLAGS_CONSOLE = -Wl,-subsystem,console
+TQMAKE_LFLAGS_WINDOWS = -Wl,-subsystem,windows -e __Z19TQtWinMainCRTStartupv
+TQMAKE_LFLAGS_CONSOLE_DLL= -Wl,-subsystem,console -shared -Wl,--export-all-symbols
+TQMAKE_LFLAGS_WINDOWS_DLL= -Wl,-subsystem,windows -shared -Wl,--export-all-symbols
+TQMAKE_LINK_OBJECT_MAX = 10
+TQMAKE_LINK_OBJECT_SCRIPT= object_ld_script
+TQMAKE_LINK_OBJTQMOC_SCRIPT= objtqmoc_ld_script
+
+TQMAKE_LIBS =
+TQMAKE_LIBS_CONSOLE =
+TQMAKE_LIBS_WINDOWS = -lkernel32 -luser32 -lgdi32 -lcomdlg32 -ladvapi32 -lshell32 -lole32 -loleaut32 -luuid -limm32 -lwinmm -lwsock32 -lwinspool
+TQMAKE_LIBS_QT = -lqt
+TQMAKE_LIBS_TQT_THREAD = -lqt-mt
+TQMAKE_LIBS_TQT_ENTRY = -lqtmain
+
+TQMAKE_LIBS_OPENGL = -lopengl32 -lglu32
+
+TQMAKE_TQMOC = $(TQTDIR)\bin\tqmoc.exe
+TQMAKE_UIC = $(TQTDIR)\bin\uic.exe
+TQMAKE_IDC = $(TQTDIR)\bin\idc.exe
+
+TQMAKE_IDL = midl
+TQMAKE_LIB = ar -ru
+TQMAKE_RC = windres
+
+TQMAKE_ZIP = zip -r -9
+
+TQMAKE_COPY = copy
+TQMAKE_MOVE = move
+TQMAKE_DEL_FILE = del
+TQMAKE_DEL_DIR = rmdir
+TQMAKE_STRIP = strip
+TQMAKE_STRIPFLAGS_LIB += --strip-unneeded
+TQMAKE_CHK_DIR_EXISTS = if not exist
+TQMAKE_MKDIR = mkdir
diff --git a/experimental/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp b/experimental/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp
new file mode 100644
index 000000000..3d047e8a7
--- /dev/null
+++ b/experimental/tqtinterface/qt4/mkspecs/win32-g++/qtcrtentrypoint.cpp
@@ -0,0 +1,231 @@
+
+//This code is need to get the WinMain function called. Current MinGW runtimes tries to call main
+//before WinMain. Untill such time as MinGw runtime has been changed this is need.
+//Most of this code is taken from the MinGw runtime sources.
+
+
+#include <signal.h>
+#include <process.h>
+#include <float.h>
+#include <io.h>
+
+
+/*
+ * Setup the default file handles to have the _CRT_fmode mode, as well as
+ * any new files created by the user.
+ */
+
+extern int _fmode;
+extern "C" int* __p__fmode(void); /* To access the dll _fmode */
+extern int _CRT_fmode;
+
+static void _mingw32_init_fmode ()
+{
+ /* Don't set the std file mode if the user hasn't set any value for it. */
+ if (_CRT_fmode)
+ {
+ _fmode = _CRT_fmode;
+
+ /*
+ * This overrides the default file mode settings for stdin,
+ * stdout and stderr. At first I thought you would have to
+ * test with isatty, but it seems that the DOS console at
+ * least is smart enough to handle _O_BINARY stdout and
+ * still display correctly.
+ */
+ if (stdin)
+ {
+ _setmode (_fileno (stdin), _CRT_fmode);
+ }
+ if (stdout)
+ {
+ _setmode (_fileno (stdout), _CRT_fmode);
+ }
+ if (stderr)
+ {
+ _setmode (_fileno (stderr), _CRT_fmode);
+ }
+ }
+
+ /* Now sync the dll _fmode to the one for this .exe. */
+ *__p__fmode() = _fmode;
+
+}
+
+/* This function will be called when a trap occurs. Thanks to Jacob
+ Navia for his contribution. */
+static CALLBACK long _gnu_exception_handler (EXCEPTION_POINTERS * exception_data)
+{
+ void (*old_handler) (int);
+ long action = EXCEPTION_CONTINUE_SEARCH;
+ int reset_fpu = 0;
+
+ switch (exception_data->ExceptionRecord->ExceptionCode)
+ {
+ case EXCEPTION_ACCESS_VIOLATION:
+ /* test if the user has set SIGSEGV */
+ old_handler = signal (SIGSEGV, SIG_DFL);
+ if (old_handler == SIG_IGN)
+ {
+ /* this is undefined if the signal was raised by anything other
+ than raise (). */
+ signal (SIGSEGV, SIG_IGN);
+ action = EXCEPTION_CONTINUE_EXECUTION;
+ }
+ else if (old_handler != SIG_DFL)
+ {
+ /* This means 'old' is a user defined function. Call it */
+ (*old_handler) (SIGSEGV);
+ action = EXCEPTION_CONTINUE_EXECUTION;
+ }
+ break;
+
+ case EXCEPTION_FLT_INVALID_OPERATION:
+ case EXCEPTION_FLT_DIVIDE_BY_ZERO:
+ case EXCEPTION_FLT_DENORMAL_OPERAND:
+ case EXCEPTION_FLT_OVERFLOW:
+ case EXCEPTION_FLT_UNDERFLOW:
+ case EXCEPTION_FLT_INEXACT_RESULT:
+ reset_fpu = 1;
+ /* fall through. */
+
+ case EXCEPTION_INT_DIVIDE_BY_ZERO:
+ /* test if the user has set SIGFPE */
+ old_handler = signal (SIGFPE, SIG_DFL);
+ if (old_handler == SIG_IGN)
+ {
+ signal (SIGFPE, SIG_IGN);
+ if (reset_fpu)
+ _fpreset ();
+ action = EXCEPTION_CONTINUE_EXECUTION;
+ }
+ else if (old_handler != SIG_DFL)
+ {
+ /* This means 'old' is a user defined function. Call it */
+ (*old_handler) (SIGFPE);
+ action = EXCEPTION_CONTINUE_EXECUTION;
+ }
+ break;
+
+ default:
+ break;
+ }
+ return action;
+}
+
+
+extern char __RUNTIME_PSEUDO_RELOC_LIST__;
+extern char __RUNTIME_PSEUDO_RELOC_LIST_END__;
+extern char _image_base__;
+
+typedef struct {
+ DWORD addend;
+ DWORD target;
+} runtime_pseudo_reloc;
+
+static void do_pseudo_reloc (void* start, void* end, void* base)
+{
+ DWORD reloc_target;
+ runtime_pseudo_reloc* r;
+ for (r = (runtime_pseudo_reloc*) start; r < (runtime_pseudo_reloc*) end; r++) {
+ reloc_target = (DWORD) base + r->target;
+ *((DWORD*) reloc_target) += r->addend;
+ }
+}
+
+void _pei386_runtime_relocator ()
+{
+ do_pseudo_reloc (&__RUNTIME_PSEUDO_RELOC_LIST__,
+ &__RUNTIME_PSEUDO_RELOC_LIST_END__,
+ &_image_base__);
+}
+
+
+#ifdef __MSVCRT__
+#define __UNKNOWN_APP 0
+#define __CONSOLE_APP 1
+#define __GUI_APP 2
+extern "C" void __set_app_type(int);
+#endif /* __MSVCRT__ */
+
+#define ISSPACE(a) (a == ' ' || a == '\t')
+
+int TQtWinMainCRTStartup()
+{
+#ifdef __MSVCRT__
+ __set_app_type (__GUI_APP);
+#endif
+
+ SetUnhandledExceptionFilter (_gnu_exception_handler);
+
+ /*
+ * Initialize floating point unit.
+ */
+ _fpreset (); /* Supplied by the runtime library. */
+
+ /*
+ * Sets the default file mode.
+ * If _CRT_fmode is set, also set mode for stdin, stdout
+ * and stderr, as well
+ * NOTE: DLLs don't do this because that would be rude!
+ */
+ _mingw32_init_fmode ();
+
+ /* Adust references to dllimported data that have non-zero offsets. */
+ _pei386_runtime_relocator ();
+
+ char *szCmd;
+ STARTUPINFO startinfo;
+ int nRet;
+
+ /* Get the command line passed to the process. */
+ szCmd = GetCommandLineA ();
+ GetStartupInfo (&startinfo);
+
+ /* Strip off the name of the application and any leading
+ * whitespace. */
+ if (szCmd) {
+
+ while (ISSPACE (*szCmd)) {
+ szCmd++;
+ }
+
+ /* On my system I always get the app name enclosed
+ * in quotes... */
+ if (*szCmd == '\"') {
+ do {
+ szCmd++;
+ } while (*szCmd != '\"' && *szCmd != '\0');
+
+ if (*szCmd == '\"') {
+ szCmd++;
+ }
+ } else {
+ /* If no quotes then assume first token is program
+ * name. */
+ while (!ISSPACE (*szCmd) && *szCmd != '\0') {
+ szCmd++;
+ }
+ }
+
+ while (ISSPACE (*szCmd)) {
+ szCmd++;
+ }
+ }
+
+ nRet = WinMain (GetModuleHandle (NULL), NULL, szCmd,
+ (startinfo.dwFlags & STARTF_USESHOWWINDOW) ?
+ startinfo.wShowWindow : SW_SHOWDEFAULT);
+
+ /*
+ * Perform exit processing for the C library. This means
+ * flushing output and calling 'atexit' registered functions.
+ */
+ _cexit ();
+
+ ExitProcess (nRet);
+
+ return 0;
+
+}
+
diff --git a/experimental/tqtinterface/qt4/mkspecs/win32-g++/tqplatformdefs.h b/experimental/tqtinterface/qt4/mkspecs/win32-g++/tqplatformdefs.h
new file mode 100644
index 000000000..b6cf23da8
--- /dev/null
+++ b/experimental/tqtinterface/qt4/mkspecs/win32-g++/tqplatformdefs.h
@@ -0,0 +1,96 @@
+#ifndef TQPLATFORMDEFS_H
+#define TQPLATFORMDEFS_H
+
+#ifdef UNICODE
+#ifndef _UNICODE
+#define _UNICODE
+#endif
+#endif
+
+// Get TQt defines/settings
+
+#include "tqglobal.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 <windows.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
+
+#define TQ_FS_FAT
+#ifdef TQT_LARGEFILE_SUPPORT
+#define TQT_STATBUF struct _stati64 // non-ANSI defs
+#define TQT_STATBUF4TSTAT struct _stati64 // non-ANSI defs
+#define TQT_STAT ::_stati64
+#define TQT_FSTAT ::_fstati64
+#else
+#define TQT_STATBUF struct _stat // non-ANSI defs
+#define TQT_STATBUF4TSTAT struct _stat // non-ANSI defs
+#define TQT_STAT ::_stat
+#define TQT_FSTAT ::_fstat
+#endif
+#define TQT_STAT_REG _S_IFREG
+#define TQT_STAT_DIR _S_IFDIR
+#define TQT_STAT_MASK _S_IFMT
+#if defined(_S_IFLNK)
+# define TQT_STAT_LNK _S_IFLNK
+#endif
+#define TQT_FILENO _fileno
+#define TQT_OPEN ::_open
+#define TQT_CLOSE ::_close
+#ifdef TQT_LARGEFILE_SUPPORT
+#define TQT_LSEEK ::_lseeki64
+#define TQT_TSTAT ::_tstati64
+#else
+#define TQT_LSEEK ::_lseek
+#define TQT_TSTAT ::_tstat
+#endif
+#define TQT_READ ::_read
+#define TQT_WRITE ::_write
+#define TQT_ACCESS ::_access
+#define TQT_GETCWD ::_getcwd
+#define TQT_CHDIR ::_chdir
+#define TQT_MKDIR ::_mkdir
+#define TQT_RMDIR ::_rmdir
+#define TQT_OPEN_RDONLY _O_RDONLY
+#define TQT_OPEN_WRONLY _O_WRONLY
+#define TQT_OPEN_RDWR _O_RDWR
+#define TQT_OPEN_CREAT _O_CREAT
+#define TQT_OPEN_TRUNC _O_TRUNC
+#define TQT_OPEN_APPEND _O_APPEND
+#if defined(O_TEXT)
+# define TQT_OPEN_TEXT _O_TEXT
+# define TQT_OPEN_BINARY _O_BINARY
+#endif
+
+#define TQT_SIGNAL_ARGS int
+
+#define TQT_VSNPRINTF ::_vsnprintf
+#define TQT_SNPRINTF ::_snprintf
+
+# define F_OK 0
+# define X_OK 1
+# define W_OK 2
+# define R_OK 4
+
+
+#endif // TQPLATFORMDEFS_H