From 6f64b95c36d3291c01c6c469c573e5cc104b1232 Mon Sep 17 00:00:00 2001 From: Eric Bollengier Date: Wed, 9 Jul 2008 16:18:53 +0000 Subject: [PATCH] ebl Tweak bat for win32 (it segfault at home, but bat.exe is there !) git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@7351 91ce42f0-d328-0410-95d8-f526ca767f89 --- bacula/src/qt-console/README.mingw | 62 +++++++ bacula/src/qt-console/bat.pro.mingw | 165 ++++++++++++++++++ bacula/src/qt-console/win32-x-g++/qmake.conf | 97 ++++++++++ .../qt-console/win32-x-g++/qplatformdefs.h | 161 +++++++++++++++++ 4 files changed, 485 insertions(+) create mode 100644 bacula/src/qt-console/README.mingw create mode 100644 bacula/src/qt-console/bat.pro.mingw create mode 100644 bacula/src/qt-console/win32-x-g++/qmake.conf create mode 100644 bacula/src/qt-console/win32-x-g++/qplatformdefs.h diff --git a/bacula/src/qt-console/README.mingw b/bacula/src/qt-console/README.mingw new file mode 100644 index 0000000000..99138697db --- /dev/null +++ b/bacula/src/qt-console/README.mingw @@ -0,0 +1,62 @@ + +BUILD SYSTEM: Ubuntu gutsy +STATUS: Bat segfault quickly + +REQUIRE: + - Bacula cross compilation tool (must be able to compile bacula-fd.exe) + - wine (apt-get install wine) + - qt mingw32 distribution + +ORIGINAL HOWTO (french): +http://doc.qtfr.org/post/2007/04/10/Cross-Compilation-Native-dapplication-Qt-depuis-Linux + +Legend: +# comment +$ shell command +* tips + + +bacula setup +------------ +$ cd bacula/src/win32 +$ make + +Don't run any configure, make or make install +Make sure that bacula/src/win32/release/bacula.dll is built + +QT4 setup +---------- + +Install QT for mingw + +Get the mingw installation from http://trolltech.com/developer/downloads/qt/windows + +$ wine qt-win-opensource-4.4.0-mingw.exe + * Install under c:\Qt (no space) + * no worry about mingw installation + +$ cp -r ~/.wine/drive_c/Qt/4.4.0/src/ depkgs-mingw32/include +$ cp -r ~/.wine/drive_c/Qt/4.4.0/include depkgs-mingw32/include/qt +$ cp -r ~/.wine/drive_c/Qt/4.4.0/lib depkgs-mingw32/lib/qt + +Compile bat +----------- + +$ cd bacula/src/qt-console +$ cp bat.pro.mingw bat.pro +$ qmake-qt4 -spec win32-x-g++ +$ make + + +Run Bat with wine +----------------- +$ cd bacula/src/qt-console/debug + +# configure a bat.conf +# copy all dll to this directory + +$ wine bat + + +That all, easy isn't it ? + diff --git a/bacula/src/qt-console/bat.pro.mingw b/bacula/src/qt-console/bat.pro.mingw new file mode 100644 index 0000000000..5847ed8d14 --- /dev/null +++ b/bacula/src/qt-console/bat.pro.mingw @@ -0,0 +1,165 @@ +###################################################################### +# Version $Id: bat.pro.in 7051 2008-05-29 01:19:31Z bartleyd2 $ +# +# !!!!!!! IMPORTANT !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# +# Edit only bat.pro.in -- bat.pro is built by the ./configure program +# +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# +CONFIG += qt debug cross-win32 + +bins.path = ./ +bins.files = ./bat +confs.path = ./ +confs.commands = ./install_conf_file + +TEMPLATE = app +TARGET = bat +DEPENDPATH += . +INCLUDEPATH += .. . ./console ./restore ./select + +cross-win32 { +# LIBS += ../win32/dll/bacula.a + LIBS += -L../win32/release -lbacula +} +!cross-win32 { + LIBS += -L../lib -lbac @OPENSSL_LIBS@ +} + +qwt { + INCLUDEPATH += @QWT_INC@ + LIBS += @QWT_LDFLAGS@ @QWT_LIB@ +} + +RESOURCES = main.qrc +MOC_DIR = moc +OBJECTS_DIR = obj +UI_DIR = ui + +# Main window +FORMS += main.ui +FORMS += prefs.ui +FORMS += label/label.ui +FORMS += relabel/relabel.ui +FORMS += mount/mount.ui +FORMS += console/console.ui +FORMS += restore/restore.ui restore/prerestore.ui restore/brestore.ui +FORMS += restore/restoretree.ui +FORMS += run/run.ui run/runcmd.ui run/estimate.ui run/prune.ui +FORMS += select/select.ui +FORMS += medialist/medialist.ui mediaedit/mediaedit.ui joblist/joblist.ui +FORMS += clients/clients.ui storage/storage.ui fileset/fileset.ui +FORMS += joblog/joblog.ui jobs/jobs.ui +FORMS += help/help.ui +FORMS += status/dirstat.ui +FORMS += status/clientstat.ui +FORMS += status/storstat.ui +qwt { + FORMS += jobgraphs/jobplotcontrols.ui +} + +# Main directory +HEADERS += mainwin.h bat.h bat_conf.h qstd.h pages.h +SOURCES += main.cpp bat_conf.cpp mainwin.cpp qstd.cpp pages.cpp + +# bcomm +HEADERS += bcomm/dircomm.h +SOURCES += bcomm/dircomm.cpp bcomm/dircomm_auth.cpp + +# Console +HEADERS += console/console.h +SOURCES += console/authenticate.cpp console/console.cpp + +# Restore +HEADERS += restore/restore.h +SOURCES += restore/prerestore.cpp restore/restore.cpp restore/brestore.cpp + +# Label dialog +HEADERS += label/label.h +SOURCES += label/label.cpp + +# Relabel dialog +HEADERS += relabel/relabel.h +SOURCES += relabel/relabel.cpp + +# Mount dialog +HEADERS += mount/mount.h +SOURCES += mount/mount.cpp + +# Run dialog +HEADERS += run/run.h +SOURCES += run/run.cpp run/runcmd.cpp run/estimate.cpp run/prune.cpp + +# Select dialog +HEADERS += select/select.h +SOURCES += select/select.cpp + +## MediaList +HEADERS += medialist/medialist.h +SOURCES += medialist/medialist.cpp + +## MediaEdit +HEADERS += mediaedit/mediaedit.h +SOURCES += mediaedit/mediaedit.cpp + +## JobList +HEADERS += joblist/joblist.h +SOURCES += joblist/joblist.cpp + +## Clients +HEADERS += clients/clients.h +SOURCES += clients/clients.cpp + +## Storage +HEADERS += storage/storage.h +SOURCES += storage/storage.cpp + +## Fileset +HEADERS += fileset/fileset.h +SOURCES += fileset/fileset.cpp + +## Job log +HEADERS += joblog/joblog.h +SOURCES += joblog/joblog.cpp + +## Jobs +HEADERS += jobs/jobs.h +SOURCES += jobs/jobs.cpp + +## RestoreTree +HEADERS += restore/restoretree.h +SOURCES += restore/restoretree.cpp + +## Job Step Graphs +qwt { + HEADERS += jobgraphs/jobplot.h + SOURCES += jobgraphs/jobplot.cpp +} + +# Help dialog +HEADERS += help/help.h +SOURCES += help/help.cpp + +## Status Dir +HEADERS += status/dirstat.h +SOURCES += status/dirstat.cpp + +## Status Client +HEADERS += status/clientstat.h +SOURCES += status/clientstat.cpp + +## Status Client +HEADERS += status/storstat.h +SOURCES += status/storstat.cpp + +# Utility sources +HEADERS += util/fmtwidgetitem.h util/comboutil.h +SOURCES += util/fmtwidgetitem.cpp util/comboutil.cpp + +INSTALLS += bins +INSTALLS += confs + +QMAKE_EXTRA_TARGETS += depend + +TRANSLATIONS += ts/bat_fr.ts ts/bat_de.ts diff --git a/bacula/src/qt-console/win32-x-g++/qmake.conf b/bacula/src/qt-console/win32-x-g++/qmake.conf new file mode 100644 index 0000000000..f11a2eda4b --- /dev/null +++ b/bacula/src/qt-console/win32-x-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 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 = ../../../cross-tools/mingw32/bin/mingw32-gcc +QMAKE_LEX = flex +QMAKE_LEXFLAGS = +QMAKE_YACC = byacc +QMAKE_YACCFLAGS = -d +QMAKE_CFLAGS = -DHAVE_MINGW -DHAVE_WIN32 +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 = ../../../cross-tools/mingw32/bin/mingw32-g++ +QMAKE_CXXFLAGS = $$QMAKE_CFLAGS -DHAVE_MINGW -DHAVE_WIN32 -DHAVE_ZLIB_H -DHAVE_LIBZ -DHAVE_CRYPTO -DHAVE_OPENSSL -DHAVE_TLS +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 = ../../../depkgs-mingw32/include/pthreads ../../../depkgs-mingw32/include/ ../win32/compat +QMAKE_INCDIR_QT = ../../../depkgs-mingw32/include/qt +QMAKE_LIBDIR_QT = ../../../depkgs-mingw32/lib/qt + +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 = ../../../cross-tools/mingw32/bin/mingw32-g++ +QMAKE_LFLAGS = -mthreads -Wl,-enable-stdcall-fixup -Wl,-enable-auto-import -mno-cygwin -m32 -fno-strict-aliasing -Wl,-enable-runtime-pseudo-reloc -mwindows + +QMAKE_LFLAGS_EXCEPTIONS_ON = -mthreads -Wl +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_LIBS = +QMAKE_LIBS_CORE = -lkernel32 -luser32 -lshell32 -luuid -lole32 -ladvapi32 -lws2_32 +QMAKE_LIBS_GUI = -lgdi32 -lcomdlg32 -loleaut32 -limm32 -lwinmm -lwinspool -lws2_32 -lole32 -luuid -luser32 -ladvapi32 +QMAKE_LIBS_NETWORK = -lws2_32 +QMAKE_LIBS_OPENGL = -lopengl32 -lglu32 -lgdi32 -luser32 +QMAKE_LIBS_COMPAT = -ladvapi32 -lshell32 -lcomdlg32 -luser32 -lgdi32 -lws2_32 +QMAKE_LIBS_QT_ENTRY = -lmingw32 -lqtmain + +#!isEmpty(QMAKE_SH) { + MINGW_IN_SHELL = 1 + QMAKE_DIR_SEP = / + QMAKE_COPY = cp + QMAKE_COPY_DIR = cp -r + QMAKE_MOVE = mv + QMAKE_DEL_FILE = rm -f + QMAKE_MKDIR = mkdir -p + QMAKE_DEL_DIR = rm -rf + QMAKE_CHK_DIR_EXISTS = test -d + +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 = ../../../cross-tools/mingw32/bin/mingw32-ar -ru +QMAKE_RC = ../../../cross-tools/mingw32/bin/mingw32-windres +QMAKE_ZIP = zip -r -9 + +QMAKE_STRIP = ../../../cross-tools/mingw32/bin/mingw32-strip +QMAKE_STRIPFLAGS_LIB += --strip-unneeded +load(qt_config) diff --git a/bacula/src/qt-console/win32-x-g++/qplatformdefs.h b/bacula/src/qt-console/win32-x-g++/qplatformdefs.h new file mode 100644 index 0000000000..b01b8a62b4 --- /dev/null +++ b/bacula/src/qt-console/win32-x-g++/qplatformdefs.h @@ -0,0 +1,161 @@ +/**************************************************************************** +** +** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. +** +** This file is part of the qmake spec of the Qt Toolkit. +** +** This file may be used under the terms of the GNU General Public +** License version 2.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of +** this file. Please review the following information to ensure GNU +** General Public Licensing requirements will be met: +** http://trolltech.com/products/qt/licenses/licensing/opensource/ +** +** If you are unsure which license is appropriate for your use, please +** review the following information: +** http://trolltech.com/products/qt/licenses/licensing/licensingoverview +** or contact the sales department at sales@trolltech.com. +** +** In addition, as a special exception, Trolltech gives you certain +** additional rights. These rights are described in the Trolltech GPL +** Exception version 1.0, which can be found at +** http://www.trolltech.com/products/qt/gplexception/ and in the file +** GPL_EXCEPTION.txt in this package. +** +** In addition, as a special exception, Trolltech, as the sole copyright +** holder for Qt Designer, grants users of the Qt/Eclipse Integration +** plug-in the right for the Qt/Eclipse Integration to link to +** functionality provided by Qt Designer and its related libraries. +** +** Trolltech reserves all rights not expressly granted herein. +** +** Trolltech ASA (c) 2007 +** +** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +** +****************************************************************************/ + +#ifndef QPLATFORMDEFS_H +#define QPLATFORMDEFS_H + +#ifdef UNICODE +#ifndef _UNICODE +#define _UNICODE +#endif +#endif + +// Get Qt defines/settings + +#include "qglobal.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#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 Q_FS_FAT +#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 + +#define QT_FOPEN ::fopen +#ifdef QT_LARGEFILE_SUPPORT +#define QT_FSEEK ::fseeko64 +#define QT_FTELL ::ftello64 +#else +#define QT_FSEEK ::fseek +#define QT_FTELL ::ftell +#endif +#define QT_FGETPOS ::fgetpos +#define QT_FSETPOS ::fsetpos +#define QT_FPOS_T fpos_t +#ifdef QT_LARGEFILE_SUPPORT +#define QT_OFF_T off64_t +#else +#define QT_OFF_T long +#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 -- 2.39.5