Changes In Branch 1.0
Excluding Merge-Ins
This is equivalent to a diff from
234b6a518a
to 9c7610b3b7
Modified .fossil-settings/clean-glob
from [0ae1b8a1ac]
to [e3e476a774].
︙ | | |
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
+
|
src/tls/Info.plist
tests/DerivedData
tests/EBOOT.PBP
tests/Info.plist
tests/PARAM.SFO
tests/objc_sync/objc_sync
tests/plugin/Info.plist
tests/subprocess/subprocess
tests/terminal/terminal_tests
tests/testfile_bin.m
tests/testfile_ini.m
tests/tests
tests/tests.3dsx
tests/tests.arm9
tests/tests.nds
|
︙ | | |
Modified .fossil-settings/ignore-glob
from [eed8ea3523]
to [a531885e00].
︙ | | |
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
+
|
tests/Info.plist
tests/PARAM.SFO
tests/iOS.xcodeproj/*.pbxuser
tests/iOS.xcodeproj/project.xcworkspace
tests/iOS.xcodeproj/xcuserdata
tests/objc_sync/objc_sync
tests/plugin/Info.plist
tests/subprocess/subprocess
tests/terminal/terminal_tests
tests/testfile_bin.m
tests/testfile_ini.m
tests/tests
tests/tests.3dsx
tests/tests.arm9
tests/tests.nds
|
︙ | | |
Modified .github/workflows/dragonflybsd.yml
from [e4f8b62803]
to [6c0eaab5cb].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
-
+
+
|
name: dragonflybsd
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
runs-on: ubuntu-latest
strategy:
matrix:
configure_flags:
-
- --disable-shared
- --with-tls=gnutls
steps:
- uses: actions/checkout@v3
- uses: vmactions/dragonflybsd-vm@v0
- uses: actions/checkout@v4
- uses: vmactions/dragonflybsd-vm@v1
with:
usesh: true
copyback: false
prepare: |
pkg install -y autoconf automake gnutls llvm pkgconf
run: |
./autogen.sh
./configure OBJC=clang ${{ matrix.configure_flags }}
make -j4
make check
make install
|
Added .github/workflows/fedora-mingw.yml version [4f77255619].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
name: fedora-mingw
on: [push, pull_request]
jobs:
tests:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- prefix: mingw32
triple: i686-w64-mingw32
- prefix: mingw64
triple: x86_64-w64-mingw32
container: fedora
steps:
- name: Install dependencies
run: |
sudo dnf upgrade --refresh -y
sudo dnf install -y ${{matrix.prefix}}-gcc ${{matrix.prefix}}-openssl clang autoconf automake make wine
- uses: actions/checkout@v4
- name: autogen.sh
run: ./autogen.sh
- name: configure
run: ./configure --host=${{matrix.triple}} OBJC="clang -target ${{matrix.triple}}"
- name: make
run: make -j$(nproc)
- name: make check
run: WINEPATH=/usr/${{matrix.triple}}/sys-root/mingw/bin WINEPREFIX=/tmp/wineprefix make check
- name: make install
run: sudo make install
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | |
Modified .github/workflows/freebsd.yml
from [9828c9c463]
to [4657fe9002].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
-
+
+
|
name: freebsd
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
runs-on: ubuntu-latest
strategy:
matrix:
configure_flags:
-
- --disable-shared
- --with-tls=gnutls
steps:
- uses: actions/checkout@v3
- uses: vmactions/freebsd-vm@v0
- uses: actions/checkout@v4
- uses: vmactions/freebsd-vm@v1
with:
usesh: true
copyback: false
prepare: |
pkg install -y autoconf automake gnutls pkgconf
run: |
./autogen.sh
./configure OBJC=clang ${{ matrix.configure_flags }}
make -j4
make check
make install
|
Deleted .github/workflows/macos-12.yml version [a15421158f].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
|
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
name: macos-12
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
strategy:
matrix:
configure_flags:
-
- --disable-threads
- --disable-threads --disable-sockets
- --disable-threads --disable-files
- --disable-threads --disable-sockets --disable-files
- --disable-sockets
- --disable-sockets --disable-files
- --disable-files
- --disable-shared
steps:
- name: Install dependencies
run: brew install autoconf automake
- uses: actions/checkout@v2
- name: autogen.sh
run: ./autogen.sh
- name: configure
run: ./configure ${{ matrix.configure_flags }}
- name: make
run: make -j$(sysctl -n hw.logicalcpu)
- name: make check
run: make check
- name: make install
run: sudo make install
|
Added .github/workflows/macos-14.yml version [af1606c56d].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
name: macos-14
on: [push, pull_request]
jobs:
tests:
runs-on: macos-14
strategy:
matrix:
configure_flags:
-
- --disable-threads
- --disable-threads --disable-sockets
- --disable-threads --disable-files
- --disable-threads --disable-sockets --disable-files
- --disable-sockets
- --disable-sockets --disable-files
- --disable-files
- --disable-shared
steps:
- name: Install dependencies
run: brew install autoconf automake
- uses: actions/checkout@v4
- name: autogen.sh
run: ./autogen.sh
- name: configure
run: ./configure ${{ matrix.configure_flags }}
- name: make
run: make -j$(sysctl -n hw.logicalcpu)
- name: make check
run: make check
- name: make install
run: sudo make install
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Added .github/workflows/macos-latest.yml version [ccaf442395].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
name: macos-latest
on: [push, pull_request]
jobs:
tests:
runs-on: macos-latest
strategy:
matrix:
configure_flags:
-
- --disable-threads
- --disable-threads --disable-sockets
- --disable-threads --disable-files
- --disable-threads --disable-sockets --disable-files
- --disable-sockets
- --disable-sockets --disable-files
- --disable-files
- --disable-shared
steps:
- name: Install dependencies
run: brew install autoconf automake
- uses: actions/checkout@v2
- name: autogen.sh
run: ./autogen.sh
- name: configure
run: ./configure ${{ matrix.configure_flags }}
- name: make
run: make -j$(sysctl -n hw.logicalcpu)
- name: make check
run: make check
- name: make install
run: sudo make install
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Added .github/workflows/msys2.yml version [f5ad4b3bf9].
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
name: msys2
on: [push, pull_request]
jobs:
tests:
runs-on: windows-latest
strategy:
matrix:
sys:
# Broken: Exceptions with ARC fail. Works with other mingw-w64
# distributions.
#- mingw32
- mingw64
- ucrt64
- clang32
- clang64
steps:
- uses: actions/checkout@v4
- uses: msys2/setup-msys2@v2
with:
update: true
msystem: ${{matrix.sys}}
install: autoconf automake make
pacboy: clang:p openssl:p
- name: autogen.sh
shell: msys2 {0}
run: ./autogen.sh
- name: configure
shell: msys2 {0}
run: ./configure OBJC=clang
- name: make
shell: msys2 {0}
run: make -j4
- name: make check
shell: msys2 {0}
run: make check
- name: make install
shell: msys2 {0}
run: make install
|
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | |
Modified .github/workflows/netbsd-gcc.yml
from [4694c85176]
to [9108c5901d].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
-
+
+
-
+
|
name: netbsd-gcc
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
runs-on: ubuntu-latest
strategy:
matrix:
configure_flags:
-
- --disable-shared
- --with-tls=gnutls
steps:
- uses: actions/checkout@v3
- uses: vmactions/netbsd-vm@v0
- uses: actions/checkout@v4
- uses: vmactions/netbsd-vm@v1
with:
usesh: true
copyback: false
prepare: |
pkg_add autoconf automake gnutls pkgconf
/usr/sbin/pkg_add autoconf automake gnutls pkgconf
run: |
./autogen.sh
./configure OBJC=gcc ${{ matrix.configure_flags }}
make -j4
make check
make install
|
Modified .github/workflows/netbsd.yml
from [2c6f34efc4]
to [5d6e9c60e9].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
-
+
+
-
+
|
name: netbsd
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
runs-on: ubuntu-latest
strategy:
matrix:
configure_flags:
-
- --disable-shared
- --with-tls=gnutls
steps:
- uses: actions/checkout@v3
- uses: vmactions/netbsd-vm@v0
- uses: actions/checkout@v4
- uses: vmactions/netbsd-vm@v1
with:
usesh: true
copyback: false
prepare: |
pkg_add autoconf automake clang gnutls pkgconf
/usr/sbin/pkg_add autoconf automake clang gnutls pkgconf
run: |
./autogen.sh
./configure OBJC=clang ${{ matrix.configure_flags }}
make -j4
make check
make install
|
Modified .github/workflows/openbsd.yml
from [7e76f12fa8]
to [a810b5a14b].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
-
+
-
-
+
+
|
name: openbsd
on: [push, pull_request]
jobs:
tests:
runs-on: macos-12
runs-on: ubuntu-latest
strategy:
matrix:
configure_flags:
-
- --disable-shared
- --with-tls=gnutls
steps:
- uses: actions/checkout@v3
- uses: vmactions/openbsd-vm@v0
- uses: actions/checkout@v4
- uses: vmactions/openbsd-vm@v1
with:
usesh: true
copyback: false
prepare: |
pkg_add autoconf-2.71 automake-1.16.5 gnutls pkgconf
run: |
./autogen.sh
./configure OBJC=clang ${{ matrix.configure_flags }}
make -j4
make check
make install
|
Modified .gitignore
from [9fa51c850c]
to [6d829dc2af].
︙ | | |
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
+
|
tests/Info.plist
tests/PARAM.SFO
tests/iOS.xcodeproj/*.pbxuser
tests/iOS.xcodeproj/project.xcworkspace
tests/iOS.xcodeproj/xcuserdata
tests/objc_sync/objc_sync
tests/plugin/Info.plist
tests/subprocess/subprocess
tests/terminal/terminal_tests
tests/testfile_bin.m
tests/testfile_ini.m
tests/tests
tests/tests.3dsx
tests/tests.arm9
tests/tests.nds
|
︙ | | |
Modified ChangeLog
from [558a5867dd]
to [dc14e368d0].
1
2
3
4
5
6
7
8
9
10
11
12
13
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
Legend:
* Changes of existing features or bugfixes
+ New features
This file only contains the most significant changes.
ObjFW 1.0.11 -> ObjFW 1.0.12, 2024-03-11
* Fixes a regression in OFZIPArchive that was introduced in 1.0.11 that
resulted in failing to extract archives and creating broken archives.
* Fixes a rare condition where OFInflateStream could end up in an endless
loop.
* Fixes OFTarArchiveEntry not having a default date, which could result in
messaging nil on a FP return, which yielded invalid results on 32-bit x86
with GCC.
ObjFW 1.0.10 -> ObjFW 1.0.11, 2024-03-09
* Fixes -[OFHTTPClientResponse isAtEndOfStream] and
-[OFGZIPStream isAtEndOfStream].
* Fixes how OFZIPArchive handles disk 0 vs. disk 1.
* OFLHAArchive and OFZIPArchive create more compatible archives now.
* OFLHAArchive ignores padding in level 2 headers now.
* ofarc correctly sets modification dates of directories now by delaying
setting those until after all files have been extracted.
* Fixes a linker warning on macOS/iOS.
* Several minor documentation fixes.
* OFFileIRIHandler correctly transforms exceptions now so that they use an IRI
and not a path.
ObjFW 1.0.9 -> ObjFW 1.0.10, 2024-02-24
* Fixes objc_getClassList() not releasing the global runtime mutex.
* Improves OFLHAArchive's compatibility with non-standard archives.
+ Adds endbr32 / endbr64 / bti instructions for compatibility with Control
Flow Integrity.
ObjFW 1.0.8 -> ObjFW 1.0.9, 2024-02-18
* Fixes OFGZIPStream reading the size and CRC32 incorrectly when either spans
multiple reads.
* Fixes a type mismatch in OFMapTable that could cause problems on big endian
systems when uint32_t and unsigned long have a different size.
* Fixes the default implementation of -[initWithKeys:arguments:] for custom
dictionaries.
* Improves detection of mutation during enumeration in
-[enumerateKeysAndObjectsUsingBlock:].
* Minor documentation fixes.
ObjFW 1.0.7 -> ObjFW 1.0.8, 2024-01-21
* Fixes compilation on NetBSD, OpenBSD, OpenIndiana etc. which was broken by
1.0.7.
ObjFW 1.0.6 -> ObjFW 1.0.7, 2024-01-21
* Fixes inheriting the environment in OFSubprocess.
* Fixes dealloc in OFSubprocess when -[closeForWriting] was called.
+ Adds tests for OFSubprocess.
* Changes the key for +[OFSystemInfo networkInterfaces] to the adapter name
on Windows XP and newer to avoid a possible collission on the adapter index.
* Fixes compilation with old MinGW versions.
* Fixes the documentation for OFSRVDNSResourceRecord.
ObjFW 1.0.5 -> ObjFW 1.0.6, 2024-01-15
* Fixes compatibility with autoconf 2.72.
* Fixes OFDNSResolver's handling of types, classes and lengths > 255.
ObjFW 1.0.4 -> ObjFW 1.0.5, 2023-11-05
* Fixes the calculation of the extra alignment in OFAllocObject()
* Fixes +[OFSystemInfo networkInterfaces] on OpenBSD and Windows 98
* Fixes OFSocketAddressString() for AppleTalk addresses
* Uses GetModuleHandle() instead of LoadLibrary() where possible on Windows
* Disables tests for global blocks on Win64 due to broken compilers
* Adds PGP keys to verify tarballs and commits in the code repository
ObjFW 1.0.3 -> ObjFW 1.0.4, 2023-10-08
* Fixes OFFile closing fd 0 when initialization fails
* Fixes -[stringByAppendingPathComponent:] on empty strings
* Fixes +[OFSystemInfo operatingSystemName] and
+[OFSystemInfo operatingSystemVersion] returning nil on some systems
* Adds a license for localizations
|
︙ | | |
Modified README.md
from [ab455f4c69]
to [f374e7bc3f].
︙ | | |
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
|
-
+
|
ObjFW is intentionally incompatible with Foundation. This has two reasons:
* GNUstep already provides a reimplementation of Foundation, which is only
compatible to a certain degree. This means that a developer still needs to
care about differences between frameworks if they want to be portable. The
idea behind ObjFW is that a developer does not need to concern themselves
with portablility and making sure their code works with multiple
with portability and making sure their code works with multiple
frameworks: Instead, if it works it ObjFW on one platform, they can
reasonably expect it to also work with ObjFW on another platform. ObjFW
behaving differently on different operating systems (unless inevitable
because it is a platform-specific part, like the Windows Registry) is
considered a bug and will be fixed.
* Foundation predates a lot of modern Objective-C concepts. The most
prominent one is exceptions, which are only used in Foundation as a
|
︙ | | |
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
|
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
|
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
<h1 id="installation">Installation</h1>
ObjFW packages are available for various operating systems and can be
installed as following:
Operating System | Command
-----------------|---------------------------------------------
Alpine Linux | `doas apk add objfw`
CRUX | `sudo prt-get depinst objfw`
Fedora | `sudo dnf install objfw`
FreeBSD | `sudo pkg install objfw`
Haiku | `pkgman install objfw`
Haiku (gcc2h) | `pkgman install objfw_x86`
macOS (Homebrew) | `brew install objfw`
macOS (pkgsrc) | `cd $PKGSRCDIR/devel/objfw && make install`
NetBSD | `cd /usr/pkgsrc/devel/objfw && make install`
OpenBSD | `doas pkg_add objfw`
OpenIndiana | `sudo pkg install developer/objfw`
Operating System | Command
---------------------------|---------------------------------------------
Alpine Linux | `doas apk add objfw`
CRUX | `sudo prt-get depinst objfw`
Fedora | `sudo dnf install objfw`
FreeBSD | `sudo pkg install objfw`
Haiku | `pkgman install objfw`
Haiku (gcc2h) | `pkgman install objfw_x86`
macOS (Homebrew) | `brew install objfw`
macOS (pkgsrc) | `cd $PKGSRCDIR/devel/objfw && make install`
NetBSD | `cd /usr/pkgsrc/devel/objfw && make install`
OpenBSD | `doas pkg_add objfw`
OpenIndiana | `sudo pkg install developer/objfw`
Windows (MSYS2/CLANG64) | `pacman -S mingw-w64-clang-x86_64-objfw`
Windows (MSYS2/CLANGARM64) | `pacman -S mingw-w64-clang-aarch64-objfw`
Windows (MSYS2/UCRT64) | `pacman -S mingw-w64-ucrt-x86_64-objfw`
Windows (MSYS2/MINGW32) | `pacman -S mingw-w64-i686-objfw`
If your operating system is not listed, you can
<a href="#building-from-source">build ObjFW from source</a>.
<h1 id="license">License</h1>
|
︙ | | |
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
|
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
|
-
+
-
-
+
+
-
+
-
+
-
-
-
-
+
+
+
+
-
+
-
-
-
-
-
+
+
+
+
+
-
-
-
-
+
+
+
+
|
The main advantage of cloning the Fossil repository over cloning the Git
repository is that you also get all the tickets, wiki pages, etc.
<h2 id="cloning-fossil">Fossil</h2>
Clone the Fossil repository like this:
$ fossil clone https://objfw.nil.im
fossil clone https://objfw.nil.im
You can then use Fossil's web interface to browse the timeline, tickets,
wiki pages, etc.:
$ cd objfw
$ fossil ui
cd objfw
fossil ui
In order to verify the signature of the currently checked out checkin, you
can use:
$ fossil artifact current | gpg --verify
fossil artifact current | gpg --verify
Please note that not all checkins are signed, as the signing key only resides
on trusted systems. This means that checkins I perform on e.g. Windows are
unsigned. However, usually it should not take long until there is another
signed checkin. Alternatively, you can go back until the last signed checkin
and review changes from there on.
<h2 id="cloning-git">Git</h2>
To clone the Git repository, use the following:
$ git clone https://github.com/ObjFW/ObjFW
git clone https://github.com/ObjFW/ObjFW
Git commits are not signed, so if you want to check the signature of an
individual commit, branch head or tag, please use Fossil.
<h1 id="building-from-source">Building from source</h1>
To build ObjFW from source and install it, just run the following commands:
$ ./configure
$ make
$ make check
$ sudo make install
./configure
make
make check
sudo make install
In case you checked out ObjFW from the Fossil or Git repository, you need to
run the following command first:
$ ./autogen.sh
./autogen.sh
<h2 id="macos-and-ios">macOS and iOS</h2>
<h3 id="building-framework">Building as a framework</h3>
When building for macOS or iOS, everything is built as a `.framework` by
default if `--disable-shared` has not been specified to `./configure`. The
frameworks will end up in `$PREFIX/Library/Frameworks`.
To build for macOS, just follow the
<a href="#building-from-source">regular instructions</a> above.
To build for iOS, follow the regular instructions, but instead of
`./configure` do something like this:
$ clang="xcrun --sdk iphoneos clang"
$ export OBJC="$clang -arch arm64e -arch arm64"
$ export OBJCPP="$clang -arch arm64e -E"
$ export IPHONEOS_DEPLOYMENT_TARGET="10.0"
$ ./configure --prefix=/usr/local/ios --host=arm64-apple-darwin
clang="xcrun --sdk iphoneos clang"
export OBJC="$clang -arch arm64e -arch arm64"
export OBJCPP="$clang -arch arm64e -E"
export IPHONEOS_DEPLOYMENT_TARGET="10.0"
./configure --prefix=/usr/local/ios --host=arm64-apple-darwin
To build for the iOS simulator, follow the regular instructions, but instead
of `./configure` use something like this:
$ clang="xcrun --sdk iphonesimulator clang"
$ export OBJC="$clang -arch $(uname -m)"
$ export IPHONEOS_DEPLOYMENT_TARGET="10.0"
$ ./configure --prefix=/usr/local/iossim --host=$(uname -m)-apple-darwin
clang="xcrun --sdk iphonesimulator clang"
export OBJC="$clang -arch $(uname -m)"
export IPHONEOS_DEPLOYMENT_TARGET="10.0"
./configure --prefix=/usr/local/iossim --host=$(uname -m)-apple-darwin
<h3 id="framework-in-xcode">Using the macOS or iOS framework in Xcode</h3>
To use the macOS framework in Xcode, you need to add the `.framework`s to
your project and add the following flags to `Other C Flags`:
-fconstant-string-class=OFConstantString -fno-constant-cfstrings
|
︙ | | |
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
|
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
|
-
+
+
+
-
+
+
+
-
+
-
+
+
+
-
+
+
+
-
+
+
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
-
+
+
+
+
+
+
-
-
-
-
-
-
-
|
for the one called just "MSYS" are supported, but which packages you need to
install depends on the environment(s) you want to use. If you only want to
target Windows 10 and newer, the CLANG64 and CLANG32 environments are the
recommended ones.
For CLANG64, use:
$ pacman -Syu mingw-w64-clang-x86_64-clang mingw-w64-clang-x86_64-fossil
pacman -Syu mingw-w64-clang-x86_64-clang \
mingw-w64-clang-x86_64-fossil \
mingw-w64-clang-x86_64-openssl
For CLANG32, use:
$ pacman -Syu mingw-w64-clang-i686-clang mingw-w64-clang-i686-fossil
pacman -Syu mingw-w64-clang-i686-clang \
mingw-w64-clang-i686-fossil \
mingw-w64-clang-i686-openssl
For CLANGARM64, use (you need to use Fossil via another environment):
$ pacman -Syu mingw-w64-clang-aarch64-clang
pacman -Syu mingw-w64-clang-aarch64-clang mingw-w64-clang-aarch64-openssl
For MINGW64, use:
$ pacman -Syu mingw-w64-x86_64-clang mingw-w64-x86_64-fossil
pacman -Syu mingw-w64-x86_64-clang \
mingw-w64-x86_64-fossil \
mingw-w64-x86_64-openssl
For MINGW32, use:
$ pacman -Syu mingw-w64-i686-clang mingw-w64-i686-fossil
pacman -Syu mingw-w64-i686-clang \
mingw-w64-i686-fossil \
mingw-w64-i686-openssl
For UCRT64, use:
$ pacman -Syu mingw-w64-ucrt-x86_64-clang mingw-w64-ucrt-x86_64-fossil
pacman -Syu mingw-w64-ucrt-x86_64-clang \
mingw-w64-ucrt-x86_64-fossil \
mingw-w64-ucrt-x86_64-openssl
When using `pacman` to install the packages, `pacman` might tell you to close
the window. If it does so, close the window, restart MSYS2 and execute the
`pacman` command again.
There is nothing wrong with installing multiple environments, as MSYS2 has
created shortcuts for each of them in your start menu. Just make sure to use
the correct shortcut for the environment you want to use.
Finally, install a few more things that are common between all environments:
$ pacman -S autoconf automake make
pacman -S autoconf automake make
<h3 id="steps-windows">Getting, building and installing ObjFW</h3>
Start the MSYS2 using the shortcut for the environment you want to use and
check out ObjFW:
$ fossil clone https://objfw.nil.im
fossil clone https://objfw.nil.im
You can also download a release tarball if you want. Now `cd` to the newly
checked out repository and build and install it:
$ ./autogen.sh && ./configure && make -j16 install
./autogen.sh && ./configure && make -j16 install
If everything was successful, you can now build projects using ObjFW for
Windows using the normal `objfw-compile` and friends.
<h2 id="nintendo">Nintendo DS, Nintendo 3DS and Wii</h2>
Download and install [devkitPro](https://devkitpro.org/wiki/Getting_Started).
<h3 id="nintendo-ds">Nintendo DS</h3>
Follow the normal process, but instead of `./configure` run:
$ ./configure --host=arm-none-eabi --with-nds
./configure --host=arm-none-eabi --with-nds
<h3 id="nintendo-3ds">Nintendo 3DS</h3>
Follow the normal process, but instead of `./configure` run:
$ ./configure --host=arm-none-eabi --with-3ds
./configure --host=arm-none-eabi --with-3ds
<h3 id="wii">Wii</h3>
Follow the normal process, but instead of `./configure` run:
$ ./configure --host=powerpc-eabi --with-wii
./configure --host=powerpc-eabi --with-wii
<h2 id="amiga">Amiga</h2>
Install [amiga-gcc](https://github.com/bebbo/amiga-gcc). Then follow the
normal process, but instead of `./configure` run:
$ ./configure --host=m68k-amigaos
./configure --host=m68k-amigaos
<h1 id="first-app">Writing your first application with ObjFW</h1>
To create your first, empty application, you can use `objfw-new`:
$ objfw-new --app MyFirstApp
objfw-new --app MyFirstApp
This creates a file `MyFirstApp.m`. The `-[applicationDidFinishLaunching:]`
method is called as soon as ObjFW finished all initialization. Use this as
the entry point to your own code. For example, you could add the following
line there to create a "Hello World":
[OFStdOut writeLine: @"Hello World!"];
You can compile your new app using `objfw-compile`:
$ objfw-compile -o MyFirstApp MyFirstApp.m
objfw-compile -o MyFirstApp MyFirstApp.m
`objfw-compile` is a tool that allows building applications and libraries
using ObjFW without needing a full-blown build system. If you want to use
your own build system, you can get the necessary flags from `objfw-config`.
<h1 id="documentation">Documentation</h1>
You can find the documentation for released versions of ObjFW
[here](https://objfw.nil.im/docs/).
In order to build the documentation yourself (necessary to have documentation
for trunk / master), you need to have [Doxygen](https://www.doxygen.nl)
installed. Once installed, you can build the documentation from the root
directory of the repository:
$ make docs
make docs
<h1 id="bugs">Bugs and feature requests</h1>
If you find any bugs or have feature requests, please
[file a new bug](https://objfw.nil.im/tktnew) in the
[bug tracker](https://objfw.nil.im/reportlist).
Alternatively, feel free to send a mail to js@nil.im!
<h1 id="support">Support and community</h1>
If you have any questions about ObjFW or would like to talk to other ObjFW
users, the following venues are available:
* The [forum](https://objfw.nil.im/forum)
* A [Matrix room](https://matrix.to/#/%23objfw:nil.im)
* A [Discord room](https://objfw.nil.im/discord), bridged to the Matrix
room above
* A [Telegram room](https://t.me/objfw), bridged to the Matrix room above
* A [Slack room](https://objfw.nil.im/slack), bridged to the Matrix room
above
* An IRC channel named `#objfw` on `irc.oftc.net`
([Web chat](https://webchat.oftc.net/?channels=%23objfw)), bridged to the
Matrix room above
* A [Slack channel](https://objfw.nil.im/slack), bridged to the Matrix room
above
* A [Discord channel](https://objfw.nil.im/discord), bridged to the Matrix
room above
* A [Telegram room](https://t.me/objfw), bridged to the Matrix room above
* A [Gitter room](https://gitter.im/ObjFW/ObjFW), bridged to the Matrix room
above
Please don't hesitate to join any or all of those!
<h1 id="donating">Donating</h1>
If you want to donate to ObjFW, you can read about possible ways to do so
|
︙ | | |
Modified configure.ac
from [f54f1e9278]
to [160237facd].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
-
+
-
+
-
-
+
|
AC_INIT(ObjFW, 1.1dev, js@nil.im, objfw, https://objfw.nil.im/)
AC_INIT(ObjFW, 1.0.12, js@nil.im, objfw, https://objfw.nil.im/)
AC_CONFIG_SRCDIR(src)
AC_CONFIG_AUX_DIR(build-aux)
AC_CONFIG_MACRO_DIR(build-aux/m4)
AC_DEFINE(OBJFW_VERSION_MAJOR, 1, [The major version of ObjFW])
AC_DEFINE(OBJFW_VERSION_MINOR, 1, [The minor version of ObjFW])
AC_DEFINE(OBJFW_VERSION_MINOR, 0, [The minor version of ObjFW])
dnl This may only be set to 1.1 once 1.1 is released
AC_SUBST(BUNDLE_VERSION, 1.0.0)
AC_SUBST(BUNDLE_VERSION, 1.0.12)
AC_SUBST(BUNDLE_SHORT_VERSION, 1.0)
for i in configure.ac build-aux/m4/*; do
AS_IF([test $i -nt configure], [
AC_MSG_ERROR([$i is newer than configure! Run ./autogen.sh!])
])
done
|
︙ | | |
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
+
|
;;
*)
potential_compilers="clang egcc gcc"
;;
esac
AC_PROG_OBJC($potential_compilers)
AC_PROG_OBJCPP
AC_PROG_EGREP
AC_PROG_LN_S
BUILDSYS_CHECK_IOS
AC_ARG_WITH(wii,
AS_HELP_STRING([--with-wii], [build for Wii]))
AS_IF([test x"$with_wii" = x"yes"], [
|
︙ | | |
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
|
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
|
-
-
-
-
-
-
+
+
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
|
CPPFLAGS="-D__EXTENSIONS__ -D_POSIX_PTHREAD_SEMANTICS $CPPFLAGS"
;;
esac
objc_runtime="ObjFW runtime"
AC_CHECK_HEADER(objc/objc.h)
AC_MSG_CHECKING(which Objective C runtime to use)
AC_ARG_ENABLE(runtime,
AS_HELP_STRING([--enable-runtime], [use the included runtime]))
AC_ARG_ENABLE(seluid24,
AS_HELP_STRING([--enable-seluid24],
[use 24 bit instead of 16 bit for selector UIDs]))
AS_IF([test x"$enable_runtime" != x"yes"], [
AS_IF([test x"$ac_cv_header_objc_objc_h" = x"yes"], [
AC_EGREP_CPP(egrep_cpp_yes, [
#import <objc/objc.h>
AS_IF([test x"$ac_cv_header_objc_objc_h" = x"yes"], [
AC_EGREP_CPP(egrep_cpp_yes, [
#import <objc/objc.h>
#ifdef OBJC_BOOL_DEFINED
egrep_cpp_yes
#endif
], [
objc_runtime="Apple runtime"
], [
dnl We don't want the GNU runtime
:
#ifdef OBJC_BOOL_DEFINED
egrep_cpp_yes
#endif
], [
objc_runtime="Apple runtime"
], [
dnl We don't want the GNU runtime
:
])
])
])
AC_MSG_RESULT($objc_runtime)
case "$objc_runtime" in
"ObjFW runtime")
AC_DEFINE(OF_OBJFW_RUNTIME, 1, [Whether we use the ObjFW runtime])
|
︙ | | |
844
845
846
847
848
849
850
851
852
853
854
855
856
857
|
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
|
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
], [
AC_DEFINE(HAVE_VFP2, 1, [Whether we have VFP2 or above])
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
])
;;
aarch64* | arm64*)
AC_MSG_CHECKING(for bti)
AC_COMPILE_IFELSE([
AC_LANG_PROGRAM([], [
__asm__ __volatile__ ("bti c");
])
], [
AC_DEFINE(HAVE_BTI, 1, [Whether we have bti])
AC_MSG_RESULT(yes)
], [
AC_MSG_RESULT(no)
])
;;
i?86 | x86_64)
AC_CHECK_HEADERS(cet.h)
;;
esac
AC_CHECK_LIB(m, fmod, LIBS="$LIBS -lm")
AC_CHECK_LIB(complex, creal, TESTS_LIBS="$TESTS_LIBS -lcomplex")
AC_CHECK_FUNCS(strtof truncf)
|
︙ | | |
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
|
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
|
+
+
+
+
+
+
+
+
+
+
+
|
AC_CHECK_LIB(socket, socket, LIBS="$LIBS -lsocket")
;;
esac
AC_CHECK_HEADER(sys/socket.h, [
AC_DEFINE(OF_HAVE_SYS_SOCKET_H, 1,
[Whether we have sys/socket.h])
])
AC_CHECK_MEMBERS([struct sockaddr.sa_len], [], [], [
#ifdef OF_HAVE_SYS_TYPES_H
# include <sys/types.h>
#endif
#ifdef OF_HAVE_SYS_SOCKET_H
# include <sys/socket.h>
#endif
#ifdef _WIN32
# include <winsock2.h>
#endif
])
AC_CHECK_TYPE([struct sockaddr_storage], [
AC_DEFINE(OF_HAVE_SOCKADDR_STORAGE, 1,
[Whether we have struct sockaddr_storage])
], [], [
#ifdef OF_HAVE_SYS_TYPES_H
# include <sys/types.h>
|
︙ | | |
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
|
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
|
-
-
|
#endif
#ifdef AF_INET6
egrep_cpp_yes
#endif
], [
AC_DEFINE(OF_HAVE_IPV6, 1, [Whether we have IPv6])
AC_CHECK_FUNCS(inet6_getscopeid)
])
], [
dnl Work around a bug in autoconf 2.61 that creates a broken
dnl configure if this branch is empty.
:
], [
#ifdef _WIN32
|
︙ | | |
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
|
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
|
+
-
+
|
])
], [
break
])
])
])
AS_IF([test x"$have_subprocesses" = x"yes"], [
AC_SUBST(USE_SRCS_SUBPROCESS, '${SRCS_SUBPROCESS}')
AC_SUBST(OF_SUBPROCESS_M, "OFSubprocess.m")
AC_SUBST(SUBPROCESS, "subprocess")
AC_DEFINE(OF_HAVE_SUBPROCESSES, 1, [Whether we have subprocesses])
])
AC_CHECK_HEADERS_ONCE([complex.h sys/ioctl.h sys/ttycom.h])
AC_CHECK_FUNCS(ioctl isatty)
AC_CHECK_FUNC(pledge, [
|
︙ | | |
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
|
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
|
-
+
|
])
AS_IF([test x"$GOBJC" = x"yes"], [
OBJCFLAGS="$OBJCFLAGS -Wwrite-strings -Wpointer-arith"
AC_ARG_ENABLE(werror,
AS_HELP_STRING([--disable-werror], [do not build with -Werror]))
AS_IF([test x"$enable_werror" != x"no"], [
AS_IF([test x"$enable_werror" = x"yes"], [
OBJCFLAGS="$OBJCFLAGS -Werror"
])
old_OBJCFLAGS="$OBJCFLAGS"
OBJCFLAGS="$OBJCFLAGS -Werror"
AC_MSG_CHECKING(whether we need -Wno-strict-aliasing due to GCC bugs)
AC_COMPILE_IFELSE([
|
︙ | | |
Modified extra.mk.in
from [818e425173]
to [ff975543bd].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
-
+
-
+
|
OBJFW_SHARED_LIB = @OBJFW_SHARED_LIB@
OBJFW_STATIC_LIB = @OBJFW_STATIC_LIB@
OBJFW_FRAMEWORK = @OBJFW_FRAMEWORK@
OBJFW_LIB_MAJOR = 1
OBJFW_LIB_MINOR = 0
OBJFW_LIB_PATCH = 2
OBJFW_LIB_PATCH = 9
OBJFW_LIB_MAJOR_MINOR = ${OBJFW_LIB_MAJOR}.${OBJFW_LIB_MINOR}
OBJFWRT_SHARED_LIB = @OBJFWRT_SHARED_LIB@
OBJFWRT_STATIC_LIB = @OBJFWRT_STATIC_LIB@
OBJFWRT_FRAMEWORK = @OBJFWRT_FRAMEWORK@
OBJFWRT_LIB_MAJOR = 1
OBJFWRT_LIB_MINOR = 0
OBJFWRT_LIB_PATCH = 0
OBJFWRT_LIB_PATCH = 2
OBJFWRT_LIB_MAJOR_MINOR = ${OBJFWRT_LIB_MAJOR}.${OBJFWRT_LIB_MINOR}
OBJFWBRIDGE_SHARED_LIB = @OBJFWBRIDGE_SHARED_LIB@
OBJFWBRIDGE_STATIC_LIB = @OBJFWBRIDGE_STATIC_LIB@
OBJFWBRIDGE_FRAMEWORK = @OBJFWBRIDGE_FRAMEWORK@
OBJFWBRIDGE_LIB_MAJOR = 1
OBJFWBRIDGE_LIB_MINOR = 0
|
︙ | | |
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
-
+
+
|
OF_GNUTLS_TLS_STREAM_M = @OF_GNUTLS_TLS_STREAM_M@
OF_HTTP_CLIENT_TESTS_M = @OF_HTTP_CLIENT_TESTS_M@
OF_KQUEUE_KERNEL_EVENT_OBSERVER_M = @OF_KQUEUE_KERNEL_EVENT_OBSERVER_M@
OF_OPENSSL_TLS_STREAM_M = @OF_OPENSSL_TLS_STREAM_M@
OF_POLL_KERNEL_EVENT_OBSERVER_M = @OF_POLL_KERNEL_EVENT_OBSERVER_M@
OF_SECURE_TRANSPORT_TLS_STREAM_M = @OF_SECURE_TRANSPORT_TLS_STREAM_M@
OF_SELECT_KERNEL_EVENT_OBSERVER_M = @OF_SELECT_KERNEL_EVENT_OBSERVER_M@
OF_SUBPROCESS_M = @OF_SUBPROCESS_M@
REEXPORT_RUNTIME = @REEXPORT_RUNTIME@
REEXPORT_RUNTIME_FRAMEWORK = @REEXPORT_RUNTIME_FRAMEWORK@
RUNTIME = @RUNTIME@
RUNTIME_ARC_TESTS_M = @RUNTIME_ARC_TESTS_M@
RUNTIME_AUTORELEASE_M = @RUNTIME_AUTORELEASE_M@
RUNTIME_FRAMEWORK_LIBS = @RUNTIME_FRAMEWORK_LIBS@
RUNTIME_INSTANCE_M = @RUNTIME_INSTANCE_M@
RUNTIME_LIBS = @RUNTIME_LIBS@
SFDC_INLINE_H = @SFDC_INLINE_H@
SFDC_TARGET = @SFDC_TARGET@
SFD_FILE = @SFD_FILE@
SUBPROCESS = @SUBPROCESS@
TESTPLUGIN = @TESTPLUGIN@
TESTPLUGIN_LIBS = @TESTPLUGIN_LIBS@
TESTS_LIBS = @TESTS_LIBS@
TESTS_STATIC_LIB = @TESTS_STATIC_LIB@
TLS = @TLS@
TLS_CPPFLAGS = @TLS_CPPFLAGS@
TLS_LIBS = @TLS_LIBS@
UNICODE_M = @UNICODE_M@
USE_INCLUDES_ATOMIC = @USE_INCLUDES_ATOMIC@
USE_SRCS_APPLETALK = @USE_SRCS_APPLETALK@
USE_SRCS_FILES = @USE_SRCS_FILES@
USE_SRCS_IPX = @USE_SRCS_IPX@
USE_SRCS_PLUGINS = @USE_SRCS_PLUGINS@
USE_SRCS_SOCKETS = @USE_SRCS_SOCKETS@
USE_SRCS_SUBPROCESS = @USE_SRCS_SUBPROCESS@
USE_SRCS_TAGGED_POINTERS = @USE_SRCS_TAGGED_POINTERS@
USE_SRCS_THREADS = @USE_SRCS_THREADS@
USE_SRCS_UNIX_SOCKETS = @USE_SRCS_UNIX_SOCKETS@
USE_SRCS_WINDOWS = @USE_SRCS_WINDOWS@
WRAPPER = @WRAPPER@
|
Modified generators/unicode/TableGenerator.h
from [6c2ca9fc8b]
to [10674e4104].
1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
|
-
+
|
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
|
︙ | | |
Modified generators/unicode/TableGenerator.m
from [1fa7098a9b]
to [723fa7abc3].
1
2
3
4
5
6
7
8
9
|
1
2
3
4
5
6
7
8
9
|
-
+
|
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
|
︙ | | |
Modified generators/unicode/copyright.h
from [210478e1ad]
to [ce7f5ded8c].
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
-
+
-
+
|
/*
* Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>
* Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>
*
* All rights reserved.
*
* This file is part of ObjFW. It may be distributed under the terms of the
* Q Public License 1.0, which can be found in the file LICENSE.QPL included in
* the packaging of this file.
*
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#import "OFString.h"
#define COPYRIGHT \
@"/*\n" \
@" * Copyright (c) 2008-2023 Jonathan Schleifer <js@nil.im>\n" \
@" * Copyright (c) 2008-2024 Jonathan Schleifer <js@nil.im>\n" \
@" *\n" \
@" * All rights reserved.\n" \
@" *\n" \
@" * This file is part of ObjFW. It may be distributed under the terms " \
@"of the\n" \
@" * Q Public License 1.0, which can be found in the file LICENSE.QPL " \
@"included in\n" \
|
︙ | | |
Added misc/keys.asc version [1717b09117].