• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

patches/H31-Mar-2021-1,3311,162

test/H31-Mar-2021-157140

README.rstH A D31-Mar-20217.4 KiB281164

patch.cmake.inH A D31-Mar-20211.5 KiB5845

patch.pyH A D31-Mar-202143.9 KiB1,382988

qt-install.qsH A D31-Mar-20212.4 KiB9987

qt.cmakeH A D31-Mar-20213 KiB9672

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