aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.github/workflows/debug.yml54
-rw-r--r--.github/workflows/release-deb-package.yml93
-rw-r--r--.github/workflows/release-linux-package.yml112
-rw-r--r--.github/workflows/release.yml18
-rw-r--r--CMakeLists.txt136
-rw-r--r--src/CMakeLists.txt12
-rw-r--r--src/gpg/CMakeLists.txt9
-rw-r--r--src/gpg/GpgConstants.cpp64
-rw-r--r--src/gpg/GpgConstants.h1
-rw-r--r--src/ui/CMakeLists.txt3
-rw-r--r--third_party/CMakeLists.txt42
11 files changed, 335 insertions, 209 deletions
diff --git a/.github/workflows/debug.yml b/.github/workflows/debug.yml
index b88b607e..68d50d38 100644
--- a/.github/workflows/debug.yml
+++ b/.github/workflows/debug.yml
@@ -2,19 +2,15 @@ name: Debug Build & Package
on:
push:
- branches: [ develop, develop_ui ]
+ branches: [ 'develop-**', 'dev/**' ]
paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
+ - 'resource/locale/template/**'
- 'docs/**'
- '**.md'
pull_request:
- branches: [ develop ]
+ branches: [ 'develop-**', 'dev/**' ]
paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
+ - 'resource/locale/template/**'
- 'docs/**'
- '**.md'
@@ -39,8 +35,8 @@ jobs:
run: |
sudo apt-get update
sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo
- sudo apt-get -y install gcc g++ libconfig++-dev libboost-all-dev
- sudo apt-get -y install gpgsm
+ sudo apt-get -y install gcc g++ libconfig++-dev libboost-all-dev ninja-build
+ sudo apt-get -y install gpg
if: matrix.os == 'ubuntu-latest'
- name: Git Sumbodule Update
@@ -61,7 +57,7 @@ jobs:
- name: Install Dependence (macOS)
run: |
brew install cmake git autoconf automake qt@5 gcc texinfo gettext libgpg-error libassuan gpgme openssl
- brew install boost libconfig gettext
+ brew install boost libconfig gettext ninja
brew unlink gettext && brew link --force gettext
brew link qt@5
brew link gcc
@@ -92,9 +88,10 @@ jobs:
- name: Set up Dependence (Windows)
shell: msys2 {0}
run: |
- pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf automake mingw-w64-x86_64-gpgme
- pacman --noconfirm -S --needed make texinfo mingw-w64-x86_64-libconfig mingw-w64-x86_64-boost mingw-w64-x86_64-gnupg gettext-devel libintl msys2-runtime-devel
- pacman --noconfirm -S --needed mingw-w64-x86_64-qt5
+ pacman --noconfirm -S --needed mingw-w64-x86_64-gcc mingw-w64-x86_64-make mingw-w64-x86_64-cmake autoconf
+ pacman --noconfirm -S --needed make texinfo mingw-w64-x86_64-libconfig mingw-w64-x86_64-boost automake
+ pacman --noconfirm -S --needed mingw-w64-x86_64-qt5 libintl msys2-runtime-devel gettext-devel
+ pacman --noconfirm -S --needed mingw-w64-x86_64-gpgme mingw-w64-x86_64-ninja mingw-w64-x86_64-gnupg
if: matrix.os == 'windows-latest'
- name: Build gpg-error (Linux)
@@ -134,15 +131,36 @@ jobs:
make install
if: matrix.os == 'windows-latest'
+ - name: Build vmime
+ run: |
+ cd ${{github.workspace}}/third_party/vmime
+ mkdir build
+ cd build
+ cmake -G Ninja -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_LIBRARIES=/usr/local/opt/openssl/lib -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF -DVMIME_CHARSETCONV_LIB=iconv -DVMIME_TLS_SUPPORT_LIB=openssl -DVMIME_HAVE_SASL_SUPPORT=OFF ..
+ ninja -v
+ sudo ninja install
+ cd ${{github.workspace}}
+ if: matrix.os == 'macos-10.15'
+
+ - name: Build vmime
+ run: |
+ cd ${{github.workspace}}/third_party/vmime
+ mkdir build
+ cd build
+ cmake -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF -DVMIME_CHARSETCONV_LIB=iconv -DVMIME_TLS_SUPPORT_LIB=openssl -DVMIME_HAVE_SASL_SUPPORT=OFF ..
+ ninja -v
+ sudo ninja install
+ cd ${{github.workspace}}
+
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
- run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} -DBUILD_CONFIG="test_ui"
+ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_TEST_UI=ON
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-10.15'
- name: Build GpgFrontend
# Build your program with the given configuration
- run: cmake --build ${{github.workspace}}/build --config $env.BUILD_TYPE}} -- -j 2
+ run: cmake -G Ninja --build ${{github.workspace}}/build --config $env.BUILD_TYPE}} -- -v
if: matrix.os == 'ubuntu-latest' || matrix.os == 'macos-10.15'
- name: Configure CMake & Build Binary(Windows)
@@ -150,9 +168,9 @@ jobs:
run: |
cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://')
mkdir build && cd build
- cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} ..
+ cmake -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_TEST_UI=ON ..
# Build your program with the given configuration
- cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2
+ cmake --build . --config ${{env.BUILD_TYPE}} -- -v
if: matrix.os == 'windows-latest'
- name: Get Short SHA of Commit
diff --git a/.github/workflows/release-deb-package.yml b/.github/workflows/release-deb-package.yml
new file mode 100644
index 00000000..f165b784
--- /dev/null
+++ b/.github/workflows/release-deb-package.yml
@@ -0,0 +1,93 @@
+name: Build Linux Packages
+
+on:
+ push:
+ branches: [ main, 'develop-**', 'dev/**' ]
+ paths-ignore:
+ - 'resource/locale/template/**'
+ - 'docs/**'
+ - '**.md'
+ pull_request:
+ branches: [ 'develop-**', 'dev/**' ]
+ paths-ignore:
+ - 'resource/locale/template/**'
+ - 'docs/**'
+ - '**.md'
+
+env:
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+ BUILD_TYPE: Release
+ EXECUTABLE_OUTPUT_PATH: ./
+
+jobs:
+ build:
+ strategy:
+ matrix:
+ os: [ 'ubuntu-20.04' ]
+ runs-on: ${{ matrix.os }}
+ steps:
+
+ - uses: actions/checkout@v2
+ with:
+ submodules: recursive
+
+ - name: Get Short SHA of Commit
+ id: vars
+ run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
+
+ - name: Install Dependence (Ubuntu 20.04)
+ run: |
+ sudo apt-get update
+ sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo qt5-default ninja-build
+ sudo apt-get -y install gcc g++ libconfig++-dev libboost-all-dev
+ sudo apt-get -y install gpg
+ if: matrix.os == 'ubuntu-20.04'
+
+ - name: Build gpg-error
+ run: |
+ cd ${{github.workspace}}/third_party/libgpg-error
+ ./autogen.sh
+ ./configure --enable-maintainer-mode --enable-static=yes && make -j2
+ sudo make install
+ cd ${{github.workspace}}
+
+ - name: Build assuan
+ run: |
+ cd ${{github.workspace}}/third_party/libassuan
+ ./autogen.sh
+ ./configure --enable-maintainer-mode --enable-static=yes && make -j2
+ sudo make install
+ cd ${{github.workspace}}
+
+ - name: Build GpgME
+ run: |
+ cd ${{github.workspace}}/third_party/gpgme
+ ./autogen.sh
+ ./configure --enable-maintainer-mode --enable-static=yes --enable-languages=cpp && make -j2
+ sudo make install
+ cd ${{github.workspace}}
+
+ - name: Build vmime
+ run: |
+ cd ${{github.workspace}}/third_party/vmime
+ mkdir build
+ cd build
+ cmake -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DVMIME_HAVE_MESSAGING_PROTO_SENDMAIL=OFF -DVMIME_CHARSETCONV_LIB=iconv -DVMIME_TLS_SUPPORT_LIB=openssl -DVMIME_HAVE_SASL_SUPPORT=OFF ..
+ ninja -v
+ sudo ninja install
+ cd ${{github.workspace}}
+
+ - name: Build & Package GpgFrontend (Linux DEB Package)
+ # Build your program with the given configuration
+ run: |
+ cmake -B ${{github.workspace}}/build-deb-${{matrix.os}} -G Ninja -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DCMAKE_BUILD_TYPE="Release" -DGENERATE_LINUX_INSTALL_SOFTWARE=ON
+ cmake --build ${{github.workspace}}/build-deb-${{matrix.os}} --config {{$env.BUILD_TYPE}} -- -v
+ cd ${{github.workspace}}/build-deb-${{matrix.os}}
+ ninja package
+ cd ${{github.workspace}}
+
+ - name: Upload Artifact(Linux DEB)
+ uses: actions/upload-artifact@master
+ with:
+ name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}}-deb-${{matrix.os}}
+ path: ${{github.workspace}}/build-deb-${{matrix.os}}/gpgfrontend*.deb*
diff --git a/.github/workflows/release-linux-package.yml b/.github/workflows/release-linux-package.yml
deleted file mode 100644
index 43f26e9b..00000000
--- a/.github/workflows/release-linux-package.yml
+++ /dev/null
@@ -1,112 +0,0 @@
-name: Build Linux Packages
-
-on:
- push:
- branches: [ main, develop ]
- paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
- - 'docs/**'
- pull_request:
- branches: [ develop ]
- paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
- - 'docs/**'
-
-env:
- # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
- BUILD_TYPE: Release
- EXECUTABLE_OUTPUT_PATH: ./
-
-jobs:
- build:
- strategy:
- matrix:
- os: [ 'ubuntu-18.04' ]
- runs-on: ${{ matrix.os }}
- steps:
-
- - uses: actions/checkout@v2
- with:
- submodules: recursive
-
- - name: Get Short SHA of Commit
- id: vars
- run: echo "::set-output name=sha_short::$(git rev-parse --short HEAD)"
-
- - name: Install Dependence (Linux)
- run: |
- sudo apt-get update
- sudo apt-get -y install build-essential binutils git autoconf automake gettext texinfo
- sudo apt-get -y install gcc-8 g++-8 libconfig++-dev libboost-all-dev
- sudo apt-get -y install gpgsm libxcb-xinerama0 libxcb-icccm4-dev libcups2-dev libdrm-dev libegl1-mesa-dev
- sudo apt-get -y install libgcrypt11-dev libnss3-dev libpci-dev libpulse-dev libudev-dev libxtst-dev gyp ninja-build
- sudo apt-get -y install libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev libxcb-image0
- sudo apt-get -y install libglu1-mesa-dev libfontconfig1-dev libx11-xcb-dev libicu-dev libxcb-*
- sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 8
- sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-8 8
- sudo update-alternatives --set gcc "/usr/bin/gcc-8"
- sudo update-alternatives --set g++ "/usr/bin/g++-8"
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Cache Qt
- id: cache-qt
- uses: actions/cache@v1
- with:
- path: ../Qt
- key: ${{ runner.os }}-QtCache-5.12.8
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Install Qt
- uses: jurplel/install-qt-action@v2
- with:
- cached: ${{ steps.cache-qt.outputs.cache-hit }}
- version: '5.12.8'
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Build gpg-error
- run: |
- cd ${{github.workspace}}/third_party/libgpg-error
- ./autogen.sh
- ./configure --enable-maintainer-mode --enable-static=yes && make -j2
- sudo make install
- cd ${{github.workspace}}
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Build assuan
- run: |
- cd ${{github.workspace}}/third_party/libassuan
- ./autogen.sh
- ./configure --enable-maintainer-mode --enable-static=yes && make -j2
- sudo make install
- cd ${{github.workspace}}
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Build GpgME
- run: |
- cd ${{github.workspace}}/third_party/gpgme
- ./autogen.sh
- ./configure --enable-maintainer-mode --enable-static=yes --enable-languages=cpp && make -j2
- sudo make install
- cd ${{github.workspace}}
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Build & Package GpgFrontend (Linux DEB Package)
- # Build your program with the given configuration
- run: |
- cmake -B ${{github.workspace}}/build-deb -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} -DAPP_PACKAGE_DEB=ON -DLINUX_INSTALL_SOFTWARE=ON
- cmake --build ${{github.workspace}}/build-deb --config {{$env.BUILD_TYPE}} -- -j 2
- cd ${{github.workspace}}/build-deb
- make package
- cd ${{github.workspace}}
- if: matrix.os == 'ubuntu-18.04'
-
- - name: Upload Artifact(Linux DEB)
- uses: actions/upload-artifact@master
- with:
- name: gpgfrontend-${{matrix.os}}-${{env.BUILD_TYPE}}-${{steps.vars.outputs.sha_short}}-deb
- path: ${{github.workspace}}/build-deb/gpgfrontend*.deb*
- if: matrix.os == 'ubuntu-18.04'
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 7bb8120b..63ccfbe3 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -2,19 +2,17 @@ name: Build & Package
on:
push:
- branches: [ main, develop ]
+ branches: [ main, 'develop-**', 'dev/**' ]
paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
+ - 'resource/locale/template/**'
- 'docs/**'
+ - '**.md'
pull_request:
- branches: [ develop ]
+ branches: [ 'develop-**', 'dev/**' ]
paths-ignore:
- - '**/README.md'
- - '**/README_CN.md'
- - 'resource/ts/**'
+ - 'resource/locale/template/**'
- 'docs/**'
+ - '**.md'
env:
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
@@ -142,7 +140,7 @@ jobs:
- name: Configure CMake
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
- run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}}
+ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON
if: matrix.os == 'ubuntu-18.04' || matrix.os == 'macos-10.15'
- name: Build GpgFrontend
@@ -187,7 +185,7 @@ jobs:
run: |
cd $(echo "/${{github.workspace}}" | sed 's/\\/\//g' | sed 's/://')
mkdir build && cd build
- cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEXECUTABLE_OUTPUT_PATH=${{env.EXECUTABLE_OUTPUT_PATH}} ..
+ cmake -G "MinGW Makefiles" -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DGPGFRONTEND_BUILD_TYPE_STABLE=ON ..
# Build your program with the given configuration
cmake --build . --config ${{env.BUILD_TYPE}} -- -j 2
if: matrix.os == 'windows-latest'
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 03b779d1..977c19d7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,6 +13,85 @@ INCLUDE(CheckLibraryExists)
INCLUDE(CheckCXXSourceCompiles)
+# options
+option(GPGFRONTEND_BUILD_TYPE_TEST_CORE
+ "Only compile the core and generate the unit test program" OFF)
+option(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE
+ "Compile only the core and generate unit test programs that can evaluate test coverage" OFF)
+option(GPGFRONTEND_BUILD_TYPE_TEST_UI
+ "Only generate a graphical interface with basic functions" OFF)
+option(GPGFRONTEND_BUILD_TYPE_TEST_ALL
+ "Generate a graphical interface with all functions" OFF)
+option(GPGFRONTEND_BUILD_TYPE_STABLE
+ "Generate release version" ON)
+option(GENERATE_LINUX_INSTALL_SOFTWARE "Generate an installable version" OFF)
+option(GENERATE_APP_PACKAGE_DEB "Generate DEB package" OFF)
+option(CONFIGURE_FOR_XCODE_BUILD "Generate a version that can be successfully compiled and packaged in Xcode" OFF)
+option(USE_QT_DEFAULT_ENV "Build with the qt version provided by the qt-default package" OFF)
+
+# analyse options
+if (GPGFRONTEND_BUILD_TYPE_TEST_CORE)
+ set(CMAKE_BUILD_TYPE "Debug")
+ set(GPGFRONTEND_BUILD_CONFIG "test_core")
+endif ()
+
+if (GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE)
+ set(CMAKE_BUILD_TYPE "Debug")
+ set(GPGFRONTEND_BUILD_CONFIG "test_core_coverage")
+endif ()
+
+if (GPGFRONTEND_BUILD_TYPE_TEST_UI)
+ set(CMAKE_BUILD_TYPE "Debug")
+ set(GPGFRONTEND_BUILD_CONFIG "test_ui")
+endif ()
+
+if (GPGFRONTEND_BUILD_TYPE_TEST_ALL)
+ set(CMAKE_BUILD_TYPE "Debug")
+ set(GPGFRONTEND_BUILD_CONFIG "test_all")
+endif ()
+
+if (GPGFRONTEND_BUILD_TYPE_STABLE)
+
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0)
+ unset(GPGFRONTEND_BUILD_CONFIG)
+
+ set(STABLE_APPLICATION_BUILD 1)
+endif ()
+
+if (GENERATE_LINUX_INSTALL_SOFTWARE)
+
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0)
+ unset(GPGFRONTEND_BUILD_CONFIG)
+
+ set(LINUX_INSTALL_SOFTWARE 1)
+ set(GENERATE_APP_PACKAGE_DEB 1)
+endif ()
+
+if (GENERATE_LINUX_INSTALL_SOFTWARE AND GENERATE_APP_PACKAGE_DEB)
+ set(APP_PACKAGE_DEB 1)
+endif ()
+
+if (CONFIGURE_FOR_XCODE_BUILD)
+ set(GENERATE_LINUX_INSTALL_SOFTWARE 0)
+ set(GENERATE_APP_PACKAGE_DEB 0)
+ set(LINUX_INSTALL_SOFTWARE 0)
+ set(APP_PACKAGE_DEB 0)
+
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_CORE_AND_COVERAGE 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_UI 0)
+ set(GPGFRONTEND_BUILD_TYPE_TEST_ALL 0)
+
+ unset(GPGFRONTEND_BUILD_CONFIG)
+ set(STABLE_APPLICATION_BUILD 1)
+endif ()
+
# C++
#Detect Compiler
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
@@ -43,23 +122,20 @@ set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
# Check Env Variables Before Configuring
-if (CMAKE_BUILD_TYPE)
- message(STATUS "PreCheck CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}")
-else ()
+if (NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE "Release")
- message(STATUS "Set CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}")
endif ()
# Specify different compilation modes
if (GPGFRONTEND_BUILD_CONFIG)
# Test Build
if (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_core")
- message(STATUS "Switch TEST_CORE_BUILD")
+ message(STATUS "Switch Build Configure TEST_CORE_BUILD")
set(TEST_CORE_BUILD 1)
set(AppName GpgFrontendCoreTest)
# Test Build With Coverage Test
elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_core_coverage")
- message(STATUS "Switch TEST_COVERAGE_BUILD")
+ message(STATUS "Switch Build Configure TEST_COVERAGE_BUILD")
set(TEST_CORE_BUILD 1)
if (USING_COMPILER_CLANG OR USING_COMPILER_GCC)
set(TEST_COVERAGE_BUILD 1)
@@ -71,35 +147,26 @@ if (GPGFRONTEND_BUILD_CONFIG)
set(AppName GpgFrontendTest)
# Test Build with minimum UI
elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_ui")
- message(STATUS "Switch TEST_MINIMUM_UI_BUILD")
+ message(STATUS "Switch Build Configure TEST_MINIMUM_UI_BUILD")
set(MINIMUM_APPLICATION_BUILD 1)
set(AppName GpgFrontend)
elseif (${GPGFRONTEND_BUILD_CONFIG} STREQUAL "test_all")
- message(STATUS "Switch FULL_APPLICATION_BUILD")
+ message(STATUS "Switch Build Configure FULL_APPLICATION_BUILD")
set(FULL_APPLICATION_BUILD 1)
set(AppName GpgFrontend)
endif ()
else ()
- message(STATUS "Switch Default STABLE_APPLICATION_BUILD")
+ message(STATUS "Switch Build Configure STABLE_APPLICATION_BUILD")
set(STABLE_APPLICATION_BUILD 1)
set(AppName GpgFrontend)
endif ()
-if (EXECUTABLE_OUTPUT_PATH)
- message(STATUS "PreCheck EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}")
-else ()
- set(EXECUTABLE_OUTPUT_PATH "./")
- message(STATUS "Set EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}")
-endif ()
-
# Output Env Variables
-message(STATUS "Define EXECUTABLE_OUTPUT_PATH ${EXECUTABLE_OUTPUT_PATH}")
message(STATUS "Define CMAKE_BUILD_TYPE ${CMAKE_BUILD_TYPE}")
if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
set(BUILD_FLAG 0)
ADD_DEFINITIONS(-DRELEASE)
- message(STATUS "Build Type RELEASE")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O2")
# Release Version force to build using option STABLE_APPLICATION_BUILD
set(FULL_APPLICATION_BUILD 0)
@@ -107,7 +174,6 @@ if (${CMAKE_BUILD_TYPE} STREQUAL "Release")
else ()
set(BUILD_FLAG 1)
ADD_DEFINITIONS(-DDEBUG)
- message(STATUS "Build Type DEBUG")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -g")
# Generate branch coverage information using gcc
if (TEST_COVERAGE_BUILD)
@@ -149,12 +215,12 @@ set(BUILD_VERSION ${PROJECT_VERSION}_${CMAKE_SYSTEM}_${CMAKE_SYSTEM_PROCESSOR}_$
set(GIT_VERSION ${GIT_BRANCH_NAME}_${GIT_COMMIT_HASH})
string(TIMESTAMP BUILD_TIMESTAMP "%Y-%m-%d %H:%M:%S")
-message(STATUS "Build Timestamp ${BUILD_TIMESTAMP}")
-message(STATUS "Build Version ${BUILD_VERSION}")
-message(STATUS "Git Version ${GIT_VERSION}")
+message(STATUS "GpgFrontend Build Timestamp ${BUILD_TIMESTAMP}")
+message(STATUS "GpgFrontend Build Version ${BUILD_VERSION}")
+message(STATUS "GpgFrontend Git Repo Version ${GIT_VERSION}")
IF (MINGW)
- message(STATUS "Configuration For OS Platform Microsoft Windows")
+ message(STATUS "GpgFrontend Configuration For OS Platform Microsoft Windows")
message(STATUS "Build Environment MINGW")
set(OS_PLATFORM 0)
@@ -173,7 +239,7 @@ IF (MINGW)
endif ()
if (APPLE)
- message(STATUS "Configuration For OS Platform MacOS")
+ message(STATUS "GpgFrontend Configuration For OS Platform MacOS")
set(OS_PLATFORM 1)
ADD_DEFINITIONS(-DMACOS)
@@ -205,7 +271,7 @@ endif ()
if (LINUX)
- message(STATUS "Configuration For OS Platform LINUX")
+ message(STATUS "GpgFrontend Configuration For OS Platform LINUX")
set(OS_PLATFORM 2)
ADD_DEFINITIONS(-DLINUX)
@@ -231,20 +297,18 @@ if (LINUX)
endif ()
-message(STATUS "OS_PLATFORM ${OS_PLATFORM}")
-
if (GPG_STANDALONE_MODE)
add_compile_definitions(GPG_STANDALONE_MODE)
endif ()
-# Basic Envirnoment Configure
-set(BASIC_ENV_CONFIG 1)
-set(QT_MOC_CONFIG 1)
+
if (LINUX_INSTALL_SOFTWARE)
+ message(STATUS "Configure Linux Install ON")
include(GNUInstallDirs)
set(INSTALL_GPGFRONTEND_APP 1)
set(APP_INSTALL_FLAG LINUX_INSTALL)
+ set(USE_QT_DEFAULT_ENV ON)
add_compile_definitions(LINUX_INSTALL_BUILD)
set(Boost_USE_STATIC_LIBS ON)
else ()
@@ -252,6 +316,9 @@ else ()
add_compile_definitions(BUNDLE_BUILD)
endif ()
+# Basic ENV Configure
+set(BASIC_ENV_CONFIG 1)
+set(QT_MOC_CONFIG 1)
if (FULL_APPLICATION_BUILD)
message(STATUS "Build Full Application")
@@ -298,10 +365,10 @@ find_package(Boost COMPONENTS date_time filesystem REQUIRED)
if (QT5_ENV_SUPPORT)
# Support Qt version Both 5.12.x and 5.15.x
- if (LINUX_INSTALL_SOFTWARE)
- find_package(Qt5 5.12 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED)
- else ()
+ if (USE_QT_DEFAULT_ENV)
find_package(Qt5 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED)
+ else ()
+ find_package(Qt5 5.15 COMPONENTS Core Test Widgets PrintSupport Network REQUIRED)
endif ()
# find_package(Qt5 5.15.2 EXACT COMPONENTS Core Test Widgets PrintSupport Network LinguistTools REQUIRED)
# Qt configuration
@@ -311,7 +378,6 @@ if (QT5_ENV_SUPPORT)
set(CMAKE_AUTORCC_OPTIONS "--compress;9")
set(CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS} ${CMAKE_SOURCE_DIR}/ui)
- message(STATUS "CMAKE_AUTOUIC_SEARCH_PATHS ${CMAKE_AUTOUIC_SEARCH_PATHS}")
endif ()
@@ -336,7 +402,7 @@ endif ()
# third_party
add_subdirectory(third_party)
-
+# source code
add_subdirectory(src)
if (TEST_CORE_BUILD)
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 7f243df8..d17be5e4 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -32,7 +32,6 @@ if (APPLICATION_BUILD)
# Set Binary Output Path
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/${CMAKE_BUILD_TYPE})
endif ()
- message(STATUS "CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
endif ()
@@ -50,7 +49,6 @@ if (APPLICATION_BUILD)
else ()
set(RESOURCE_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
endif ()
- message(STATUS "RESOURCE_OUTPUT_DIRECTORY ${RESOURCE_OUTPUT_DIRECTORY}")
endif ()
# Get ALL SOURCE FILES
@@ -65,7 +63,6 @@ if (MULTI_LANG_SUPPORT)
FIND_PROGRAM(GETTEXT_XGETTEXT_EXECUTABLE xgettext)
set(LOCALE_OUTPUT_PATH ${RESOURCE_OUTPUT_DIRECTORY}/locales)
- message(STATUS "LOCALE_OUTPUT_PATH ${LOCALE_OUTPUT_PATH}")
if (NOT GETTEXT_MSGFMT_EXECUTABLE OR NOT GETTEXT_XGETTEXT_EXECUTABLE)
message(ERROR "msgfmt or xgettext not found. Translations will *not* be installed")
@@ -80,12 +77,11 @@ if (MULTI_LANG_SUPPORT)
file(GLOB ALL_PO_FILES ${CMAKE_SOURCE_DIR}/resource/locale/po/*.po)
SET(GMO_FILES)
- message(STATUS "ALL_PO_FILES ${ALL_PO_FILES}")
foreach (_poFile ${ALL_PO_FILES})
GET_FILENAME_COMPONENT(_poFileName ${_poFile} NAME)
string(REGEX REPLACE "\\.[^.]*$" "" _langName ${_poFileName})
- message(STATUS "_poFileName ${_langName}")
+ message(STATUS "GNU gettext po file ${_langName}")
make_directory(${RESOURCE_OUTPUT_DIRECTORY}/locales)
make_directory(${RESOURCE_OUTPUT_DIRECTORY}/locales/${_langName}/LC_MESSAGES)
add_custom_command(
@@ -241,7 +237,6 @@ if (APPLICATION_BUILD)
set(GPGFRONTEND_LIBS ${GPGFRONTEND_AFTER_UI_LIBS} gpgfrontend_ui gpgfrontend_core ${GPGFRONTEND_BEFORE_UI_LIBS} easyloggingpp)
set(QT_DEPENDENCY_LIBS Qt5::Network Qt5::PrintSupport Qt5::Widgets Qt5::Test Qt5::Core)
- message(STATUS "Boost Libraries ${Boost_LIBRARIES}")
IF (MINGW)
message(STATUS "Link Application Static Library For MINGW")
@@ -293,11 +288,11 @@ if (LINUX_INSTALL_SOFTWARE)
DESTINATION /usr/share/icons/hicolor/)
endif ()
if (MULTI_LANG_SUPPORT)
- message(STATUS "Local Output Path ${LOCALE_OUTPUT_PATH}")
install(DIRECTORY ${LOCALE_OUTPUT_PATH}/
DESTINATION ${CMAKE_INSTALL_FULL_LOCALEDIR})
endif ()
if (APP_PACKAGE_DEB)
+ message(STATUS "Configure Deb Package")
SET(CPACK_GENERATOR "DEB")
set(CPACK_INSTALL_PREFIX "/usr/local/")
set(CPACK_PACKAGE_NAME "gpgfrontend")
@@ -314,3 +309,6 @@ if (LINUX_INSTALL_SOFTWARE)
endif ()
endif ()
+message(STATUS "Resource Files: ${RESOURCE_OUTPUT_DIRECTORY}")
+message(STATUS "Locale Files: ${LOCALE_OUTPUT_PATH}")
+message(STATUS "Runtime Files: ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
diff --git a/src/gpg/CMakeLists.txt b/src/gpg/CMakeLists.txt
index 52cb5d3c..693b9147 100644
--- a/src/gpg/CMakeLists.txt
+++ b/src/gpg/CMakeLists.txt
@@ -6,23 +6,22 @@ aux_source_directory(. GPG_SOURCE)
add_library(gpgfrontend_core STATIC ${GPG_SOURCE})
set(UTILS_DIR ${CMAKE_SOURCE_DIR}/utils)
+
set(GPGME_LIB_DIR ${UTILS_DIR}/gpgme/lib)
set(THIRD_PARTY_LIBS easyloggingpp config++)
set(BOOST_LIBS Boost::date_time Boost::filesystem)
-message(STATUS "Third Party Libraries " ${THIRD_PARTY_LIBS})
-
if (MINGW)
message(STATUS "Link GPG Static Library For MINGW")
target_link_libraries(gpgfrontend_core ${THIRD_PARTY_LIBS}
${BOOST_LIBS}
- gpgme gpg-error assuan wsock32)
+ gpgme assuan gpg-error wsock32)
target_compile_features(gpgfrontend_core PUBLIC cxx_std_17)
elseif (APPLE)
message(STATUS "Link GPG Static Library For macOS")
target_link_libraries(gpgfrontend_core ${THIRD_PARTY_LIBS}
- gpgme gpg-error assuan
+ gpgme assuan gpg-error
${BOOST_LIBS}
dl)
if (XCODE_BUILD)
@@ -35,7 +34,7 @@ elseif (APPLE)
else ()
message(STATUS "Link GPG Static Library For Unix")
target_link_libraries(gpgfrontend_core ${THIRD_PARTY_LIBS}
- gpgme gpg-error assuan
+ gpgme assuan gpg-error
${BOOST_LIBS}
pthread dl)
endif ()
diff --git a/src/gpg/GpgConstants.cpp b/src/gpg/GpgConstants.cpp
index 100bf8f8..2c9403da 100644
--- a/src/gpg/GpgConstants.cpp
+++ b/src/gpg/GpgConstants.cpp
@@ -49,6 +49,9 @@ const char* GpgFrontend::GpgConstants::PGP_PRIVATE_KEY_BEGIN =
const char* GpgFrontend::GpgConstants::GPG_FRONTEND_SHORT_CRYPTO_HEAD =
"GpgF_Scpt://";
+///
+/// \param err gpg_error_t
+/// \return
gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err) {
if (gpg_err_code(err) != GPG_ERR_NO_ERROR) {
LOG(ERROR) << "[" << _("Error") << " " << gpg_err_code(err) << "] "
@@ -58,6 +61,10 @@ gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err) {
return err;
}
+///
+/// \param err
+/// \param predict
+/// \return
gpg_err_code_t GpgFrontend::check_gpg_error_2_err_code(gpgme_error_t err,
gpgme_error_t predict) {
auto err_code = gpg_err_code(err);
@@ -69,7 +76,10 @@ gpg_err_code_t GpgFrontend::check_gpg_error_2_err_code(gpgme_error_t err,
return err_code;
}
-// error-handling
+///
+/// \param err
+/// \param comment
+/// \return
gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err,
const std::string& comment) {
if (gpg_err_code(err) != GPG_ERR_NO_ERROR) {
@@ -80,6 +90,9 @@ gpgme_error_t GpgFrontend::check_gpg_error(gpgme_error_t err,
return err;
}
+///
+/// \param fingerprint
+/// \return
std::string GpgFrontend::beautify_fingerprint(
GpgFrontend::BypeArrayConstRef fingerprint) {
auto len = fingerprint.size();
@@ -93,14 +106,16 @@ std::string GpgFrontend::beautify_fingerprint(
return out.str();
}
-// trim from start (in place)
+///
+/// \param s
static inline void ltrim(std::string& s) {
s.erase(s.begin(), std::find_if(s.begin(), s.end(), [](unsigned char ch) {
return !std::isspace(ch);
}));
}
-// trim from end (in place)
+///
+/// \param s
static inline void rtrim(std::string& s) {
s.erase(std::find_if(s.rbegin(), s.rend(),
[](unsigned char ch) { return !std::isspace(ch); })
@@ -108,13 +123,18 @@ static inline void rtrim(std::string& s) {
s.end());
}
-// trim from both ends (in place)
+///
+/// \param s
+/// \return
static inline std::string trim(std::string& s) {
ltrim(s);
rtrim(s);
return s;
}
+///
+/// \param utf8_path
+/// \return
std::string GpgFrontend::read_all_data_in_file(const std::string& utf8_path) {
using namespace boost::filesystem;
class path file_info(utf8_path.c_str());
@@ -133,6 +153,10 @@ std::string GpgFrontend::read_all_data_in_file(const std::string& utf8_path) {
return in_buffer;
}
+///
+/// \param utf8_path
+/// \param out_buffer
+/// \return
bool GpgFrontend::write_buffer_to_file(const std::string& utf8_path,
const std::string& out_buffer) {
using namespace boost::filesystem;
@@ -149,6 +173,9 @@ bool GpgFrontend::write_buffer_to_file(const std::string& utf8_path,
return true;
}
+///
+/// \param path
+/// \return
std::string GpgFrontend::get_file_extension(const std::string& path) {
// Create a path object from given string
boost::filesystem::path path_obj(path);
@@ -162,6 +189,9 @@ std::string GpgFrontend::get_file_extension(const std::string& path) {
return {};
}
+///
+/// \param path
+/// \return
std::string GpgFrontend::get_only_file_name_with_path(const std::string& path) {
// Create a path object from given string
boost::filesystem::path path_obj(path);
@@ -174,12 +204,9 @@ std::string GpgFrontend::get_only_file_name_with_path(const std::string& path) {
return {};
}
-/*
- * isSigned returns:
- * - 0, if text isn't signed at all
- * - 1, if text is partially signed
- * - 2, if text is completly signed
- */
+///
+/// \param text
+/// \return
int GpgFrontend::text_is_signed(GpgFrontend::BypeArrayRef text) {
using boost::algorithm::ends_with;
using boost::algorithm::starts_with;
@@ -195,36 +222,53 @@ int GpgFrontend::text_is_signed(GpgFrontend::BypeArrayRef text) {
return 0;
}
+///
+/// \param result
+/// \return
GpgFrontend::GpgEncrResult GpgFrontend::_new_result(
gpgme_encrypt_result_t&& result) {
gpgme_result_ref(result);
return {result, _result_ref_deletor()};
}
+///
+/// \param result
+/// \return
GpgFrontend::GpgDecrResult GpgFrontend::_new_result(
gpgme_decrypt_result_t&& result) {
gpgme_result_ref(result);
return {result, _result_ref_deletor()};
}
+///
+/// \param result
+/// \return
GpgFrontend::GpgSignResult GpgFrontend::_new_result(
gpgme_sign_result_t&& result) {
gpgme_result_ref(result);
return {result, _result_ref_deletor()};
}
+///
+/// \param result
+/// \return
GpgFrontend::GpgVerifyResult GpgFrontend::_new_result(
gpgme_verify_result_t&& result) {
gpgme_result_ref(result);
return {result, _result_ref_deletor()};
}
+///
+/// \param result
+/// \return
GpgFrontend::GpgGenKeyResult GpgFrontend::_new_result(
gpgme_genkey_result_t&& result) {
gpgme_result_ref(result);
return {result, _result_ref_deletor()};
}
+///
+/// \param _result
void GpgFrontend::_result_ref_deletor::operator()(void* _result) {
DLOG(INFO) << _("Called") << _result;
if (_result != nullptr) gpgme_result_unref(_result);
diff --git a/src/gpg/GpgConstants.h b/src/gpg/GpgConstants.h
index d2f9b0b6..9ac0d7ad 100644
--- a/src/gpg/GpgConstants.h
+++ b/src/gpg/GpgConstants.h
@@ -25,7 +25,6 @@
#ifndef GPG_CONSTANTS_H
#define GPG_CONSTANTS_H
-#include <gpg-error.h>
#include <gpgme.h>
#include <cassert>
diff --git a/src/ui/CMakeLists.txt b/src/ui/CMakeLists.txt
index ed250b82..073da46f 100644
--- a/src/ui/CMakeLists.txt
+++ b/src/ui/CMakeLists.txt
@@ -39,6 +39,9 @@ target_link_libraries(${GPGFRONTEND_UI_LIB_NAME}
target_link_libraries(${GPGFRONTEND_UI_LIB_NAME}
easyloggingpp)
+# link gpgfrontend_core
+target_link_libraries(${GPGFRONTEND_UI_LIB_NAME}
+ gpgfrontend_core)
target_include_directories(gpgfrontend_ui PUBLIC
${CMAKE_CURRENT_BINARY_DIR}/${GPGFRONTEND_UI_LIB_NAME}_autogen/include)
diff --git a/third_party/CMakeLists.txt b/third_party/CMakeLists.txt
index 169b2368..cc8c7fcd 100644
--- a/third_party/CMakeLists.txt
+++ b/third_party/CMakeLists.txt
@@ -1,21 +1,26 @@
-
-set(build_static_lib 1)
+# easyloggingpp
+set(build_static_lib 1 CACHE BOOL "" FORCE)
add_subdirectory(easyloggingpp)
-TARGET_INCLUDE_DIRECTORIES(easyloggingpp PUBLIC
+target_include_directories(easyloggingpp PUBLIC
${CMAKE_CURRENT_SOURCE_DIR}/easyloggingpp/src)
+# json
set(JSON_BuildTests OFF CACHE INTERNAL "")
add_subdirectory(json)
+# qt-aes
include(GenerateExportHeader)
add_subdirectory(qt-aes)
-set(VMIME_HAVE_MESSAGING_PROTO_SENDMAIL OFF)
-set(VMIME_HAVE_SASL_SUPPORT OFF)
-set(VMIME_CHARSETCONV_LIB iconv)
-set(VMIME_TLS_SUPPORT_LIB openssl)
+# vmime
+set(VMIME_HAVE_MESSAGING_PROTO_SENDMAIL OFF CACHE BOOL "" FORCE)
+set(VMIME_HAVE_SASL_SUPPORT OFF CACHE BOOL "" FORCE)
+set(VMIME_CHARSETCONV_LIB iconv CACHE BOOL "" FORCE)
+set(VMIME_TLS_SUPPORT_LIB openssl CACHE BOOL "" FORCE)
add_subdirectory(vmime)
+# gnupg
+
include(ExternalProject)
# libgpg-error
@@ -23,7 +28,11 @@ include(ExternalProject)
set(GPG_ERROR_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libgpg-error)
set(GPG_ERROR_BIN ${CMAKE_CURRENT_BINARY_DIR}/libgpg-error)
set(GPG_ERROR_STATIC_LIB ${GPG_ERROR_BIN}/lib/libgpg-error.a)
-set(GPG_ERROR_INCLUDES ${GPG_ERROR_BIN}/src)
+set(GPG_ERROR_INCLUDES ${GPG_ERROR_BIN}/include)
+set(GPG_ERROR_LIBS ${GPG_ERROR_BIN}/lib)
+file(MAKE_DIRECTORY ${GPG_ERROR_INCLUDES})
+
+message(STATUS "GPG_ERROR_INCLUDES ${GPG_ERROR_INCLUDES}")
ExternalProject_Add(libgpg-error
PREFIX ${GPG_ERROR_BIN}
@@ -49,12 +58,15 @@ set_target_properties(gpg-error PROPERTIES INTERFACE_INCLUDE_DIRECTORIES ${GPG_E
set(ASSUAN_DIR ${CMAKE_CURRENT_SOURCE_DIR}/libassuan)
set(ASSUAN_BIN ${CMAKE_CURRENT_BINARY_DIR}/libassuan)
set(ASSUAN_STATIC_LIB ${ASSUAN_BIN}/lib/libassuan.a)
-set(ASSUAN_INCLUDES ${ASSUAN_BIN}/src)
+set(ASSUAN_INCLUDES ${ASSUAN_BIN}/include)
+set(ASSUAN_LIBS ${ASSUAN_BIN}/lib)
+file(MAKE_DIRECTORY ${ASSUAN_INCLUDES})
ExternalProject_Add(libassuan
PREFIX ${ASSUAN_BIN}
SOURCE_DIR ${ASSUAN_DIR}
CONFIGURE_COMMAND ${ASSUAN_DIR}/configure --enable-maintainer-mode --prefix=${ASSUAN_BIN} --enable-static=yes
+ --with-libgpg-error-prefix=${GPG_ERROR_BIN}
BUILD_COMMAND make
INSTALL_COMMAND make install
BUILD_BYPRODUCTS ${ASSUAN_STATIC_LIB})
@@ -65,6 +77,8 @@ ExternalProject_Add_Step(libassuan autogen
DEPENDERS configure
)
+ExternalProject_Add_StepDependencies(libassuan autogen libgpg-error)
+
add_library(assuan STATIC IMPORTED GLOBAL)
add_dependencies(assuan libassuan gpg-error)
set_target_properties(assuan PROPERTIES IMPORTED_LOCATION ${ASSUAN_STATIC_LIB})
@@ -80,7 +94,11 @@ set(GPGME_INCLUDES ${GPGME_BIN}/src)
ExternalProject_Add(libgpgme
PREFIX ${GPGME_BIN}
SOURCE_DIR ${GPGME_DIR}
- CONFIGURE_COMMAND ${GPGME_DIR}/configure --enable-maintainer-mode --prefix=${GPGME_BIN} --enable-static=yes --disable-gpg-test --enable-languages=cpp
+ CONFIGURE_COMMAND ${GPGME_DIR}/configure --enable-maintainer-mode --prefix=${GPGME_BIN} --enable-shared=no --enable-static=yes --disable-gpg-test --enable-languages=cpp
+ --with-libgpg-error-prefix=${GPG_ERROR_BIN}
+ --with-libassuan-prefix=${ASSUAN_BIN}
+ "LIB=-lassuan -lgpg-error"
+ "LDFLAGS=-L${ASSUAN_LIBS} -L${GPG_ERROR_LIBS} "
BUILD_COMMAND make
INSTALL_COMMAND make install
BUILD_BYPRODUCTS ${GPGME_STATIC_LIB})
@@ -91,6 +109,8 @@ ExternalProject_Add_Step(libgpgme autogen
DEPENDERS configure
)
+ExternalProject_Add_StepDependencies(libgpgme autogen libassuan libgpg-error)
+
add_library(gpgme STATIC IMPORTED GLOBAL)
add_dependencies(gpgme libgpgme assuan gpg-error)
set_target_properties(gpgme PROPERTIES IMPORTED_LOCATION ${GPGME_STATIC_LIB})
@@ -111,4 +131,4 @@ if (SMTP_SUPPORT)
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}
LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE})
endif ()
-endif ()
+endif () \ No newline at end of file