Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 03-May-2022 | - | ||||
patches/ | H | 31-Mar-2021 | - | 1,331 | 1,162 | |
test/ | H | 31-Mar-2021 | - | 157 | 140 | |
README.rst | H A D | 31-Mar-2021 | 7.4 KiB | 281 | 164 | |
patch.cmake.in | H A D | 31-Mar-2021 | 1.5 KiB | 58 | 45 | |
patch.py | H A D | 31-Mar-2021 | 43.9 KiB | 1,382 | 988 | |
qt-install.qs | H A D | 31-Mar-2021 | 2.4 KiB | 99 | 87 | |
qt.cmake | H A D | 31-Mar-2021 | 3 KiB | 96 | 72 |
README.rst
1Libraries 2========= 3 4Um die AusweisApp2 zu bauen ist eine Toolchain erforderlich, die die 5Abhängigkeiten und die Compilertools beinhaltet. 6 7Unterstützte C++17 Compiler: 8 9- MinGW / GCC >= 7.3 10 11- Clang >= 5.0 12 13- MSVC >= 2017 14 15 16Notwendige Bibliotheken: 17 18- Qt >= 5.12 19 20 - http://www.qt.io/download/ 21 22- OpenSSL >= 1.1.0 23 24 - https://www.openssl.org/source/ 25 26 - LibreSSL wird auf Grund des fehlenden RSA-PSK nicht unterstützt. 27 28- pcsclite >= 1.8 (nur Linux/FreeBSD) 29 30 31Notwendige Tools: 32 33- CMake >= 3.8.0 (3.14.0 >= für iOS) 34 35 - http://www.cmake.org 36 37 38 39Build 40----- 41Die Abhängigkeiten lassen sich mittels der CMakeLists.txt in diesem Ordner 42automatisch aufbauen. 43Das Skript kann die abhängigen Bibliotheken als Quellcode selbständig herunterladen, 44entpacken und bauen. 45 46Lokale Pakete können mittels -DPACKAGES_DIR=C:/packages verwendet werden. 47Wichtig: Bei PACKAGES_DIR muss ein absoluter Pfad angegeben werden! 48 49Der Build umfasst unter anderem das Qt-Framework, daher kann (je nach Rechenleistung) 50der Build einige Stunden dauern. 51 52Wichtig bei der Angabe in CMake ist der Verweis auf den Ordner "libs". Ein Verweis 53direkt auf "AusweisApp2" würde den Build für die "AusweisApp2" konfigurieren. 54 55Nach dem Aufruf "make" bzw. "mingw32-make" werden nun alle Bibliotheken gebaut und in 56dem Ordner ./dist installiert. Dieser Ordner kann beim Build von der AusweisApp2 mittels 57-DCMAKE_PREFIX_PATH als Toolchain angegeben werden. 58Zusätzlich kann mit dem make Target "compress" der Inhalt der dist-Ordner bereinigt und 59ein Tarball aus den gebauten Bibliotheken erzeugt werden. 60 61 62Proxy 63^^^^^ 64Sofern beim Download der Pakete ein Proxy notwendig ist, müssen vorm Aufruf von "make" 65folgende Umgebungsvariablen gesetzt werden. (Ein erneutes Ausführen von CMake ist nicht 66notwendig.) 67 68:: 69 70 http_proxy=host:port 71 https_proxy=host:port 72 ftp_proxy=host:port 73 74 75 76macOS 77^^^^^ 78Unter MacOS ist die Einrichtung relativ einfach und bedarf nur der oben genannten Voreinstellungen. 79Es wird der von Apple ausgelieferte clang compiler verwendet. 80 81Beispiel: Innerhalb von /Users/governikus/AusweisApp2 befindet sich der Quellcode. 82 83:: 84 85 $ cd /Users/governikus 86 $ mkdir build 87 $ cd build 88 $ cmake -DCMAKE_BUILD_TYPE=release -DPACKAGES_DIR=/Users/governikus/packages ../AusweisApp2/libs 89 $ make 90 91 92Windows MinGW 93^^^^^^^^^^^^^ 94Unter Windows ist es derzeit empfohlen einen Teil der Toolchain mittels MSYS2 zu bauen. 95Perl muss dafür in MSYS2 nachinstalliert werden. Außerdem ist das Windows SDK notwendig. 96 97MinGW 98""""" 99 100- http://sourceforge.net/projects/mingw-w64/ 101 102 - Dabei wurde das folgende Paket getestet: 103 32 Bit: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/7.3.0/threads-posix/dwarf/i686-7.3.0-release-posix-dwarf-rt_v5-rev0.7z/download 104 64 Bit: https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/7.3.0/threads-posix/seh/x86_64-7.3.0-release-posix-seh-rt_v5-rev0.7z/download 105 106 107MSYS2 108""""" 109 110- https://sourceforge.net/projects/msys2/files/Base/x86_64/ 111 112 - Getestet: msys2-base-x86_64-20190524.tar.xz 113 114 115Windows SDK 116""""""""""" 117 118- https://developer.microsoft.com/de-de/windows/downloads/windows-10-sdk 119 120 - Getestet: 10.0.18362.0 121 122 123Python 2 124"""""""" 125 126- https://www.python.org/downloads/ 127 128 - Getestet: python-2.7.17.amd64.msi 129 130 131Vorbereitung 132"""""""""""" 133#. Download und Entpacken des MinGW Paketes. 134 135#. Eintragen des Ordners "bin" von der MinGW-Installation in %PATH%. 136 137#. Entpacken von MSYS2. 138 139#. Start von "msys2_shell.cmd -use-full-path". 140 141#. System aktualisieren mittels "pacman -Syu" (danach MSYS2 neustarten). 142 143#. Perl nachinstallieren mittels "pacman -S perl". 144 145#. Installation des Windows SDK und setzen einer Systemvariable: 146 147:: 148 149 Für das Windows SDK 10.0.15063.0 und neuer (getestet: 10.0.18362.0): 150 WindowsSdkVerBinPath = C:\Program Files (x86)\Windows Kits\10\bin\%VERSION% 151 Für alle älteren Versionen: 152 WindowsSdkDir = C:\Program Files (x86)\Windows Kits\10 153 154Durch einige Probleme mit Unix-Shell-Skripten ist es derzeit leider 155notwendig die Toolchain in zwei Schritten zu bauen. 156Hierzu muss OpenSSL und Qt separat gebaut werden. 157 158#. Download und Start der Installation von Python. 159 160#. Sicherstellen, dass die python.exe während der Installation zum PATH hinzugefügt wird. 161 162 163Eventuell muss für MinGW folgende Option gesetzt werden (QTBUG-16443): 164 165#. Windows --> gpedit.msc --> Enter (als Administrator) 166 167#. Richtlinien für Lokaler Computer 168 169#. Computerkonfiguration 170 171#. Administrative Vorlagen 172 173#. System 174 175#. Dateisystem 176 177#. Lange Win32-Pfade aktivieren 178 179 180openssl / Qt 181"""""""""""" 182Da Qt mittels Batchskript gebaut werden muss, ist es leider nicht möglich dies innerhalb 183von MSYS2 zu bauen [2]. Daher wird OpenSSL und Qt mittels Windows-CLI konfiguriert. 184Dabei wird Qt über Windows-CLI und OpenSSL unter MSYS2 gebaut. 185 186#. cmd.exe von Windows starten 187 188#. mkdir c:\msys64\home\user\qt ("user" ist der Benutzer, der unter MSYS2 verwendet wird) 189 190#. cd c:\msys64\home\user\qt 191 192#. cmake -DCMAKE_BUILD_TYPE=release -DPACKAGES_DIR=C:/packages C:/AusweisApp2/libs -G "MinGW Makefiles" 193 194#. MSYS2 Shell starten ("msys2_shell.cmd -use-full-path") 195 196#. cd qt 197 198#. mingw32-make openssl 199 200#. MSYS2 Shell verlassen 201 202#. In der cmd.exe: c:\msys64\home\user\qt 203 204#. mingw32-make qt 205 206 207[2] http://sourceforge.net/p/mingw/bugs/1902/ 208 209 210iOS 211""" 212Die Toolchain für iOS kann nur auf MacOS gebaut werden. Dabei müssen XCode und 213die Command Line Tools (siehe "xcode-select -p" bzw. "xcode-select --install") 214auf dem Mac vorhanden sein. Die folgende Anleitung wurde unter macOS 10.12 getestet. 215 216Ebenfalls muss für den Build-Vorgang von Qt ein iOS Developer-Zertifikat mit Wildcard (*) 217im Keystore von MacOS hinterlegt sein. 218 219Beispiel: Innerhalb von /Users/governikus/AusweisApp2 befindet sich der Quellcode. 220 221:: 222 223 $ cd /Users/governikus 224 $ mkdir build 225 $ cd build 226 $ cmake -DCMAKE_BUILD_TYPE=release -DPACKAGES_DIR=/Users/governikus/packages -DCMAKE_TOOLCHAIN_FILE=../AusweisApp2/cmake/iOS.toolchain.cmake ../AusweisApp2/libs 227 $ make 228 229 230Android 231""""""" 232Die Toolchain für Android wird derzeit nur unter Linux unterstützt. Dabei müssen folgende 233Komponenten vorhanden sein: 234 235- Android NDK mit gesetztem ANDROID_NDK_ROOT 236 237 - https://developer.android.com/tools/sdk/ndk/index.html 238 239 - Getestet: r21d (https://wiki.qt.io/Qt_for_Android_known_issues) 240 241- Android SDK (cmdline) mit gesetztem ANDROID_SDK_ROOT 242 243 - https://developer.android.com/studio#cmdline-tools 244 245 - Getestet: 26.1.1 / 2.1 246 247- SDK build tools 248 249 - https://developer.android.com/studio/releases/build-tools 250 251 - Getestet: 29.0.3 252 253- SDK platform tools 254 255 - https://developer.android.com/studio/releases/platform-tools 256 257 - Getestet: 30.0.3 258 259- Um Qt erfolgreich zu bauen, ist mindestens ein API-Levelpaket von Android notwendig. 260 Dieses sollte mindestens Level 21 sein. Nähere Informationen dazu 261 sind im Wiki von Qt enthalten: http://wiki.qt.io/Android 262 Die Plattformen können mittels Android Manager nachinstalliert werden. 263 264- JDK mit gesetztem JAVA_HOME 265 266 267 268Beispiel: Innerhalb von /home/governikus/AusweisApp2 befindet sich der Quellcode. 269 270:: 271 272 $ cd /home/governikus 273 $ mkdir build 274 $ cd build 275 $ cmake -DCMAKE_BUILD_TYPE=release -DPACKAGES_DIR=/home/governikus/packages -DCMAKE_TOOLCHAIN_FILE=../AusweisApp2/cmake/android.toolchain.cmake ../AusweisApp2/libs 276 $ make 277 278Standardmäßig wird die Architektur "armeabi-v7a" gewählt. Um zum Beispiel die Toolchain für x86-Architektur 279zu bauen, ist beim Aufruf von CMake der Parameter "-DCMAKE_ANDROID_ARCH_ABI=x86" mitzugeben. 280 281