mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-06-23 15:30:45 -04:00
Get rcc compiler building
This commit is contained in:
parent
fece62c677
commit
9f0ab6e40f
@ -41,6 +41,7 @@ class Extension:
|
|||||||
self.headers = d['headers'] = absolutize(kwargs.get('headers', []))
|
self.headers = d['headers'] = absolutize(kwargs.get('headers', []))
|
||||||
self.sip_files = d['sip_files'] = absolutize(kwargs.get('sip_files', []))
|
self.sip_files = d['sip_files'] = absolutize(kwargs.get('sip_files', []))
|
||||||
self.needs_exceptions = d['needs_exceptions'] = kwargs.get('needs_exceptions', False)
|
self.needs_exceptions = d['needs_exceptions'] = kwargs.get('needs_exceptions', False)
|
||||||
|
self.qt_project_type = d['qt_project_type'] = kwargs.get('qt_project_type', "widgets")
|
||||||
self.inc_dirs = d['inc_dirs'] = absolutize(kwargs.get('inc_dirs', []))
|
self.inc_dirs = d['inc_dirs'] = absolutize(kwargs.get('inc_dirs', []))
|
||||||
self.lib_dirs = d['lib_dirs'] = absolutize(kwargs.get('lib_dirs', []))
|
self.lib_dirs = d['lib_dirs'] = absolutize(kwargs.get('lib_dirs', []))
|
||||||
self.extra_objs = d['extra_objs'] = absolutize(kwargs.get('extra_objs', []))
|
self.extra_objs = d['extra_objs'] = absolutize(kwargs.get('extra_objs', []))
|
||||||
@ -524,12 +525,12 @@ project-factory = "pyqtbuild:PyQtProject"
|
|||||||
sip-files-dir = "."
|
sip-files-dir = "."
|
||||||
{abi_version}
|
{abi_version}
|
||||||
|
|
||||||
[tool.sip.bindings.pictureflow]
|
[tool.sip.bindings.{ext.name}]
|
||||||
headers = {ext.headers}
|
headers = {ext.headers}
|
||||||
sources = {ext.sources}
|
sources = {ext.sources}
|
||||||
exceptions = {needs_exceptions}
|
exceptions = {needs_exceptions}
|
||||||
include-dirs = {ext.inc_dirs}
|
include-dirs = {ext.inc_dirs}
|
||||||
qmake-QT = ["widgets"]
|
qmake-QT = ["{ext.qt_project_type}"]
|
||||||
sip-file = "{os.path.basename(sipf)}"
|
sip-file = "{os.path.basename(sipf)}"
|
||||||
''')
|
''')
|
||||||
shutil.copy2(sipf, src_dir)
|
shutil.copy2(sipf, src_dir)
|
||||||
|
@ -131,6 +131,14 @@
|
|||||||
"inc_dirs": "perfect-hashing",
|
"inc_dirs": "perfect-hashing",
|
||||||
"needs_c++14": true
|
"needs_c++14": true
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
"name": "rcc_backend",
|
||||||
|
"sources": "calibre/gui2/rcc/rcc.cpp",
|
||||||
|
"headers": "calibre/gui2/rcc/rcc.h",
|
||||||
|
"sip_files": "calibre/gui2/rcc/rcc.sip",
|
||||||
|
"inc_dirs": "calibre/gui2/rcc",
|
||||||
|
"qt_project_type": "core"
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"name": "pictureflow",
|
"name": "pictureflow",
|
||||||
"sources": "calibre/gui2/pictureflow/pictureflow.cpp",
|
"sources": "calibre/gui2/pictureflow/pictureflow.cpp",
|
||||||
|
@ -248,6 +248,7 @@ class ExtensionsImporter:
|
|||||||
'podofo',
|
'podofo',
|
||||||
'cPalmdoc',
|
'cPalmdoc',
|
||||||
'progress_indicator',
|
'progress_indicator',
|
||||||
|
'rcc_backend',
|
||||||
'icu',
|
'icu',
|
||||||
'speedup',
|
'speedup',
|
||||||
'html_as_json',
|
'html_as_json',
|
||||||
|
1466
src/calibre/gui2/rcc/rcc.cpp
Normal file
1466
src/calibre/gui2/rcc/rcc.cpp
Normal file
File diff suppressed because it is too large
Load Diff
177
src/calibre/gui2/rcc/rcc.h
Normal file
177
src/calibre/gui2/rcc/rcc.h
Normal file
@ -0,0 +1,177 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
**
|
||||||
|
** Copyright (C) 2018 The Qt Company Ltd.
|
||||||
|
** Copyright (C) 2018 Intel Corporation.
|
||||||
|
** Contact: https://www.qt.io/licensing/
|
||||||
|
**
|
||||||
|
** This file is part of the tools applications of the Qt Toolkit.
|
||||||
|
**
|
||||||
|
** $QT_BEGIN_LICENSE:GPL-EXCEPT$
|
||||||
|
** 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 General Public License Usage
|
||||||
|
** Alternatively, this file may be used under the terms of the GNU
|
||||||
|
** General Public License version 3 as published by the Free Software
|
||||||
|
** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
|
||||||
|
** 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-3.0.html.
|
||||||
|
**
|
||||||
|
** $QT_END_LICENSE$
|
||||||
|
**
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
// Note: A copy of this file is used in Qt Designer (qttools/src/designer/src/lib/shared/rcc_p.h)
|
||||||
|
|
||||||
|
#ifndef RCC_H
|
||||||
|
#define RCC_H
|
||||||
|
|
||||||
|
#include <qstringlist.h>
|
||||||
|
#include <qhash.h>
|
||||||
|
#include <qstring.h>
|
||||||
|
|
||||||
|
typedef struct ZSTD_CCtx_s ZSTD_CCtx;
|
||||||
|
|
||||||
|
QT_BEGIN_NAMESPACE
|
||||||
|
|
||||||
|
class RCCFileInfo;
|
||||||
|
class QIODevice;
|
||||||
|
class QTextStream;
|
||||||
|
|
||||||
|
|
||||||
|
class RCCResourceLibrary
|
||||||
|
{
|
||||||
|
RCCResourceLibrary(const RCCResourceLibrary &);
|
||||||
|
RCCResourceLibrary &operator=(const RCCResourceLibrary &);
|
||||||
|
|
||||||
|
public:
|
||||||
|
RCCResourceLibrary(quint8 formatVersion=3);
|
||||||
|
~RCCResourceLibrary();
|
||||||
|
|
||||||
|
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
|
||||||
|
|
||||||
|
bool readFiles(bool listMode, QIODevice &errorDevice);
|
||||||
|
|
||||||
|
enum Format { Binary, C_Code, Pass1, Pass2, Python_Code };
|
||||||
|
void setFormat(Format f) { m_format = f; }
|
||||||
|
Format format() const { return m_format; }
|
||||||
|
|
||||||
|
void setInputFiles(const QStringList &files) { m_fileNames = files; }
|
||||||
|
QStringList inputFiles() const { return m_fileNames; }
|
||||||
|
|
||||||
|
QStringList dataFiles() const;
|
||||||
|
|
||||||
|
// Return a map of resource identifier (':/newPrefix/images/p1.png') to file.
|
||||||
|
typedef QHash<QString, QString> ResourceDataFileMap;
|
||||||
|
ResourceDataFileMap resourceDataFileMap() const;
|
||||||
|
|
||||||
|
void setVerbose(bool b) { m_verbose = b; }
|
||||||
|
bool verbose() const { return m_verbose; }
|
||||||
|
|
||||||
|
void setInitName(const QString &name) { m_initName = name; }
|
||||||
|
QString initName() const { return m_initName; }
|
||||||
|
|
||||||
|
void setOutputName(const QString &name) { m_outputName = name; }
|
||||||
|
QString outputName() const { return m_outputName; }
|
||||||
|
|
||||||
|
enum class CompressionAlgorithm {
|
||||||
|
Zlib,
|
||||||
|
Zstd,
|
||||||
|
|
||||||
|
Best = 99,
|
||||||
|
None = -1
|
||||||
|
};
|
||||||
|
|
||||||
|
static CompressionAlgorithm parseCompressionAlgorithm(QStringView algo, QString *errorMsg);
|
||||||
|
void setCompressionAlgorithm(CompressionAlgorithm algo) { m_compressionAlgo = algo; }
|
||||||
|
CompressionAlgorithm compressionAlgorithm() const { return m_compressionAlgo; }
|
||||||
|
|
||||||
|
static int parseCompressionLevel(CompressionAlgorithm algo, const QString &level, QString *errorMsg);
|
||||||
|
void setCompressLevel(int c) { m_compressLevel = c; }
|
||||||
|
int compressLevel() const { return m_compressLevel; }
|
||||||
|
|
||||||
|
void setCompressThreshold(int t) { m_compressThreshold = t; }
|
||||||
|
int compressThreshold() const { return m_compressThreshold; }
|
||||||
|
|
||||||
|
void setResourceRoot(const QString &root) { m_resourceRoot = root; }
|
||||||
|
QString resourceRoot() const { return m_resourceRoot; }
|
||||||
|
|
||||||
|
void setUseNameSpace(bool v) { m_useNameSpace = v; }
|
||||||
|
bool useNameSpace() const { return m_useNameSpace; }
|
||||||
|
|
||||||
|
QStringList failedResources() const { return m_failedResources; }
|
||||||
|
|
||||||
|
int formatVersion() const { return m_formatVersion; }
|
||||||
|
|
||||||
|
void setNoZstd(bool v) { m_noZstd = v; }
|
||||||
|
bool noZstd() const { return m_noZstd; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
struct Strings {
|
||||||
|
Strings();
|
||||||
|
const QString TAG_RCC;
|
||||||
|
const QString TAG_RESOURCE;
|
||||||
|
const QString TAG_FILE;
|
||||||
|
const QString ATTRIBUTE_LANG;
|
||||||
|
const QString ATTRIBUTE_PREFIX;
|
||||||
|
const QString ATTRIBUTE_ALIAS;
|
||||||
|
const QString ATTRIBUTE_THRESHOLD;
|
||||||
|
const QString ATTRIBUTE_COMPRESS;
|
||||||
|
const QString ATTRIBUTE_COMPRESSALGO;
|
||||||
|
};
|
||||||
|
friend class RCCFileInfo;
|
||||||
|
void reset();
|
||||||
|
bool addFile(const QString &alias, const RCCFileInfo &file);
|
||||||
|
bool interpretResourceFile(QIODevice *inputDevice, const QString &file,
|
||||||
|
QString currentPath = QString(), bool listMode = false);
|
||||||
|
bool writeHeader();
|
||||||
|
bool writeDataBlobs();
|
||||||
|
bool writeDataNames();
|
||||||
|
bool writeDataStructure();
|
||||||
|
bool writeInitializer();
|
||||||
|
void writeMangleNamespaceFunction(const QByteArray &name);
|
||||||
|
void writeAddNamespaceFunction(const QByteArray &name);
|
||||||
|
void writeDecimal(int value);
|
||||||
|
void writeHex(quint8 number);
|
||||||
|
void write2HexDigits(quint8 number);
|
||||||
|
void writeNumber2(quint16 number);
|
||||||
|
void writeNumber4(quint32 number);
|
||||||
|
void writeNumber8(quint64 number);
|
||||||
|
void writeChar(char c) { m_out.append(c); }
|
||||||
|
void writeByteArray(const QByteArray &);
|
||||||
|
void write(const char *, int len);
|
||||||
|
void writeString(const char *s) { write(s, static_cast<int>(strlen(s))); }
|
||||||
|
|
||||||
|
const Strings m_strings;
|
||||||
|
RCCFileInfo *m_root;
|
||||||
|
QStringList m_fileNames;
|
||||||
|
QString m_resourceRoot;
|
||||||
|
QString m_initName;
|
||||||
|
QString m_outputName;
|
||||||
|
Format m_format;
|
||||||
|
bool m_verbose;
|
||||||
|
CompressionAlgorithm m_compressionAlgo;
|
||||||
|
int m_compressLevel;
|
||||||
|
int m_compressThreshold;
|
||||||
|
int m_treeOffset;
|
||||||
|
int m_namesOffset;
|
||||||
|
int m_dataOffset;
|
||||||
|
quint32 m_overallFlags;
|
||||||
|
bool m_useNameSpace;
|
||||||
|
QStringList m_failedResources;
|
||||||
|
QIODevice *m_errorDevice;
|
||||||
|
QIODevice *m_outDevice;
|
||||||
|
QByteArray m_out;
|
||||||
|
quint8 m_formatVersion;
|
||||||
|
bool m_noZstd;
|
||||||
|
};
|
||||||
|
|
||||||
|
QT_END_NAMESPACE
|
||||||
|
|
||||||
|
#endif // RCC_H
|
74
src/calibre/gui2/rcc/rcc.sip
Normal file
74
src/calibre/gui2/rcc/rcc.sip
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
// Copyright (c) 2021 Riverbank Computing Limited <info@riverbankcomputing.com>
|
||||||
|
//
|
||||||
|
// This file may be used under the terms of the GNU General Public License
|
||||||
|
// version 3.0 as published by the Free Software Foundation and appearing in
|
||||||
|
// the file LICENSE included in the packaging of this file. Please review the
|
||||||
|
// following information to ensure the GNU General Public License version 3.0
|
||||||
|
// requirements will be met: http://www.gnu.org/copyleft/gpl.html.
|
||||||
|
//
|
||||||
|
// If you do not wish to use this file under the terms of the GPL version 3.0
|
||||||
|
// then you may purchase a commercial license. For more information contact
|
||||||
|
// info@riverbankcomputing.com.
|
||||||
|
//
|
||||||
|
// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
|
||||||
|
// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
|
||||||
|
%Module(name=rcc_backend)
|
||||||
|
|
||||||
|
%Import QtCore/QtCoremod.sip
|
||||||
|
|
||||||
|
|
||||||
|
class RCCResourceLibrary /NoDefaultCtors/
|
||||||
|
{
|
||||||
|
%TypeHeaderCode
|
||||||
|
#include "rcc.h"
|
||||||
|
%End
|
||||||
|
|
||||||
|
public:
|
||||||
|
RCCResourceLibrary(quint8 formatVersion);
|
||||||
|
~RCCResourceLibrary();
|
||||||
|
|
||||||
|
|
||||||
|
bool output(QIODevice &outDevice, QIODevice &tempDevice, QIODevice &errorDevice);
|
||||||
|
bool readFiles(bool listMode, QIODevice &errorDevice);
|
||||||
|
|
||||||
|
void setInputFiles(QStringList files);
|
||||||
|
enum Format { Binary, C_Code, Pass1, Pass2, Python_Code };
|
||||||
|
void setFormat(Format f);
|
||||||
|
Format format();
|
||||||
|
|
||||||
|
enum class CompressionAlgorithm {
|
||||||
|
Zlib,
|
||||||
|
Zstd,
|
||||||
|
|
||||||
|
Best = 99,
|
||||||
|
None = -1
|
||||||
|
};
|
||||||
|
|
||||||
|
void setCompressionAlgorithm(CompressionAlgorithm algo);
|
||||||
|
CompressionAlgorithm compressionAlgorithm() const;
|
||||||
|
|
||||||
|
QStringList dataFiles() const;
|
||||||
|
|
||||||
|
void setVerbose(bool b);
|
||||||
|
bool verbose() const;
|
||||||
|
void setResourceRoot(const QString &root);
|
||||||
|
QString resourceRoot();
|
||||||
|
|
||||||
|
void setInitName(const QString &name);
|
||||||
|
QString initName() const;
|
||||||
|
|
||||||
|
void setOutputName(const QString &name);
|
||||||
|
QString outputName() const;
|
||||||
|
|
||||||
|
void setUseNameSpace(bool v);
|
||||||
|
bool useNameSpace() const;
|
||||||
|
|
||||||
|
QStringList failedResources() const;
|
||||||
|
|
||||||
|
int formatVersion() const;
|
||||||
|
|
||||||
|
void setNoZstd(bool v);
|
||||||
|
bool noZstd() const;
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user