diff options
author | Tony Theodore <tonyt@logyst.com> | 2017-04-02 04:16:56 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-04-02 04:16:56 (GMT) |
commit | 3fcaa581b5d27463c3ef7610cd24ae4add9c3766 (patch) | |
tree | 203113aacebf05a4cfc230edd040b5df9fb553e2 | |
parent | f07c3f01225531b351b8f79fafb175f94965c027 (diff) | |
parent | de42ef92b46d28cb4fff427a51a4404bc6c0b5ef (diff) | |
download | mxe-3fcaa581b5d27463c3ef7610cd24ae4add9c3766.zip mxe-3fcaa581b5d27463c3ef7610cd24ae4add9c3766.tar.gz mxe-3fcaa581b5d27463c3ef7610cd24ae4add9c3766.tar.bz2 |
Merge pull request #1709 from sibuserv/add-qca
add package qca
-rw-r--r-- | src/qca-1-fixes.patch | 23 | ||||
-rw-r--r-- | src/qca-test.cmake | 21 | ||||
-rw-r--r-- | src/qca-test.cpp | 38 | ||||
-rw-r--r-- | src/qca-test.pro | 11 | ||||
-rw-r--r-- | src/qca.mk | 45 |
5 files changed, 138 insertions, 0 deletions
diff --git a/src/qca-1-fixes.patch b/src/qca-1-fixes.patch new file mode 100644 index 0000000..ee43168 --- /dev/null +++ b/src/qca-1-fixes.patch @@ -0,0 +1,23 @@ +This file is part of MXE. See LICENSE.md for licensing information. + +Contains ad hoc patches for cross building. + +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Tony Theodore <tonyt@logyst.com> +Date: Sun, 26 Mar 2017 12:36:55 +1100 +Subject: [PATCH] qca: add INSTAL_PKGCONFIG option + + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1111111..2222222 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -233,7 +233,7 @@ foreach(PATH QCA_PLUGINS_INSTALL_DIR + endif() + endforeach() + +-if(NOT WIN32) ++if(NOT WIN32 OR INSTAL_PKGCONFIG) + if(OSX_FRAMEWORK) + set(PKGCONFIG_CFLAGS "-F\${libdir} -I\${includedir}") + set(PKGCONFIG_LIBS "-F\${libdir} -framework ${QCA_LIB_NAME}") diff --git a/src/qca-test.cmake b/src/qca-test.cmake new file mode 100644 index 0000000..00f9d2d --- /dev/null +++ b/src/qca-test.cmake @@ -0,0 +1,21 @@ +# This file is part of MXE. See LICENSE.md for licensing information. + +# partial module - included by src/cmake/CMakeLists.txt + +set(TGT test-${PKG}-cmake) + +enable_language(CXX) +add_executable(${TGT} ${CMAKE_CURRENT_LIST_DIR}/${PKG}-test.cpp) + +find_package(Qt5Core REQUIRED) +find_package(Qca-qt5 REQUIRED) + +include_directories (${Qt5Core_INCLUDE_DIRS}) +target_link_libraries(${TGT} Qt5::Core qca-qt5) + +# Statically link QCA plugins when necessary +if(BUILD_STATIC_LIBS) + target_link_libraries(${TGT} qca-ossl) +endif(BUILD_STATIC_LIBS) + +install(TARGETS ${TGT} DESTINATION bin) diff --git a/src/qca-test.cpp b/src/qca-test.cpp new file mode 100644 index 0000000..73a6b5c --- /dev/null +++ b/src/qca-test.cpp @@ -0,0 +1,38 @@ +/* + * This file is part of MXE. See LICENSE.md for licensing information. + */ + +#include <QCoreApplication> +#include <QtCrypto> +#include <QDebug> + +#include <iostream> + +#ifdef QT_STATICPLUGIN +#include "import_plugins.h" +#endif + +int main(int argc, char *argv[]) +{ + QCoreApplication a(argc, argv); + QCA::init(); + + QByteArray inputString = "Hello world!"; + if (a.arguments().size() > 1) { + inputString = a.arguments().at(1).toUtf8(); + } + std::cout << "input string:\n" << inputString.toStdString() << "\n\n"; + + // Calculate hashes of a string with all available hashing algorithms: + QByteArray outputString; + for (const QString &hastType : QCA::Hash::supportedTypes()) { + QCA::Hash hashObject(hastType); + hashObject.update(inputString); + outputString = hashObject.final().toByteArray().toHex(); + + std::cout << hastType.toStdString() << " hash:\n" + << outputString.toStdString() << "\n\n"; + } + + return 0; +} diff --git a/src/qca-test.pro b/src/qca-test.pro new file mode 100644 index 0000000..f11c34a --- /dev/null +++ b/src/qca-test.pro @@ -0,0 +1,11 @@ +# This file is part of MXE. See LICENSE.md for licensing information. + +TEMPLATE = app +TARGET = test-qca-qmake +SOURCES += qca-test.cpp +CONFIG += crypto console +QMAKE_CXXFLAGS += -Wall -Werror + +# For static linking: +LIBS += -L$$[QT_INSTALL_PLUGINS]/crypto -lqca-ossl + diff --git a/src/qca.mk b/src/qca.mk new file mode 100644 index 0000000..1c3687c --- /dev/null +++ b/src/qca.mk @@ -0,0 +1,45 @@ +# This file is part of MXE. See LICENSE.md for licensing information. + +PKG := qca +$(PKG)_WEBSITE := https://userbase.kde.org/QCA +$(PKG)_DESCR := Qt Cryptographic Architecture +$(PKG)_IGNORE := +$(PKG)_VERSION := 2.1.3 +$(PKG)_CHECKSUM := a5135ffb0250a40e9c361eb10cd3fe28293f0cf4e5c69d3761481eafd7968067 +$(PKG)_GH_CONF := KDE/qca,v +$(PKG)_DEPS := gcc qtbase + +define $(PKG)_BUILD + cd '$(BUILD_DIR)' && $(TARGET)-cmake '$(SOURCE_DIR)' \ + -DBUILD_TESTS=OFF \ + -DBUILD_TOOLS=OFF \ + -DUSE_RELATIVE_PATHS=OFF \ + -DBUILD_PLUGINS="auto" \ + -DINSTAL_PKGCONFIG=ON \ + -DQCA_MAN_INSTALL_DIR="$(BUILD_DIR)/null" + $(MAKE) -C '$(BUILD_DIR)' -j $(JOBS) + $(MAKE) -C '$(BUILD_DIR)' -j 1 install + + # build test as qmake project + mkdir '$(BUILD_DIR).test-qmake' + cd '$(BUILD_DIR).test-qmake' && '$(PREFIX)/$(TARGET)/qt5/bin/qmake' '$(PWD)/src/qca-test.pro' + $(MAKE) -C '$(BUILD_DIR).test-qmake' -j 1 + $(INSTALL) -m755 '$(BUILD_DIR).test-qmake/$(BUILD_TYPE)/test-qca-qmake.exe' '$(PREFIX)/$(TARGET)/bin/' + + # build test as cmake project + mkdir '$(BUILD_DIR).test-cmake' + cd '$(BUILD_DIR).test-cmake' && $(TARGET)-cmake \ + -DPKG=$(PKG) \ + '$(PWD)/src/cmake/test' + $(MAKE) -C '$(BUILD_DIR).test-cmake' -j 1 install VERBOSE=ON + + # build test manually + '$(TARGET)-g++' \ + -W -Wall -Werror -std=gnu++11 \ + '$(PWD)/src/qca-test.cpp' \ + -o '$(PREFIX)/$(TARGET)/bin/test-$(PKG)-pkgconfig.exe' \ + $(if $(BUILD_STATIC), -L'$(PREFIX)/$(TARGET)/qt5/plugins/crypto' -lqca-ossl) \ + `'$(TARGET)-pkg-config' qca2-qt5 --cflags --libs` +endef + +$(PKG)_BUILD_STATIC = |