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
|
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
|
-
-
+
+
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
|
In case you checked out ObjFW from the Git repository, you need to run
the following command first:
$ autoreconf
Building as a Mac OS X framework
================================
Building as a macOS or iOS framework
====================================
It is also possible to build ObjFW as a Mac OS X framework. To do so,
just execute `xcodebuild -target ObjFW` in the root directory of ObjFW
or open the .xcodeproj in Xcode and choose Build -> Build from the
menu. Copy the resulting ObjFW.framework to `/Library/Frameworks` and
you are done.
It is also possible to build ObjFW as a macOS framework. To do so, just
execute `xcodebuild -target 'ObjFW (Mac)'` in the root directory of ObjFW to
build it as a macOS framework or `xcodebuild -target 'ObjFW (iOS)'` to build
it as an iOS framework; alternatively, you can open the .xcodeproj in Xcode
and choose Build -> Build from the menu. Copy the resulting ObjFW.framework
to `/Library/Frameworks` and you are done.
Using the Mac OS X framework in Xcode
=====================================
Using the macOS or iOS framework in Xcode
=========================================
To use the Mac OS X framework in Xcode, you need to add the .framework
to your project and add the following flags to `Other C Flags`:
To use the macOS framework in Xcode, you need to add the .framework to your
project and add the following flags to `Other C Flags`:
-fconstant-string-class=OFConstantString -fno-constant-cfstrings
Optionally, if you want to use blocks, you also need to add:
-fblocks
Building with LLVM/Clang for ARM
================================
When using LLVM/Clang older than 3.5 to compile for ARM, it is necessary to
specify extra flags in order to enable ARM EHABI compliant exceptions. To do
so, set `OBJCFLAGS` to this:
-O2 -g -mllvm -arm-enable-ehabi -mllvm -arm-enable-ehabi-descriptors
If you have a CPU supporting VFP or NEON, it is important to set the correct
architecture, as otherwise VFP / NEON registers won't be saved and restored
when forwarding. For example, if you have an ARMv6 that supports VFP, you
need to set `OBJC` to this:
clang -march=armv6 -mfpu=vfp
Using these flags, ObjFW was compiled successfully for Android and the
Raspberry Pi.
Bugs and feature requests
=========================
If you find any bugs or have feature requests, feel free to send a
mail to js@heap.zone!
|