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
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
108
|
# Building Ice for Objective-C on macOS
This page describes how to build and install Ice for Objective-C from source
code on macOS. If you prefer, you can install a [Homebrew][1] package instead.
## Objective-C Build Requirements
### Operating Systems and Compilers
Ice for Objective-C is currently only supported on macOS and iOS, and was
extensively tested using the operating system and compiler versions listed for
our [supported platforms][2].
## Building Ice for Objective-C
The build of Ice for Objective-C requires that you first build Ice for C++ in
the `cpp` subdirectory for the same configuration(s) and platform(s).
Review the top-level [config/Make.rules](../config/Make.rules) in your build
tree and update the configuration if needed. The comments in the file provide
more information.
Change to the Ice for Objective-C source subdirectory:
```
cd objective-c
```
Run `make` to build the Ice Objective-C libraries and test suite. Set `V=1` to
get a more detailed build output. You can build only the libraries with the
`srcs` target, or only the tests with the `tests` target. For example:
```
make V=1 -j8 srcs
```
### Build configurations and platforms
The Objective-C source tree supports multiple build configurations and
platforms. To see the supported configurations and platforms:
```
make print V=supported-configs
make print V=supported-platforms
```
To build all the supported configurations and platforms:
```
make CONFIGS=all PLATFORMS=all -j8
```
The `arc-` configurations (for [Automatic Reference Counting][3]) apply only to
the test suite; the Ice libraries don't use these configurations, and the same
Ice for Objective-C library can be used with and without ARC.
### Ice Xcode SDK
The build system supports building Xcode SDKs for Ice. These SDKs allow you to
easily develop Ice applications with Xcode. To build Xcode SDKs, use the
`xcodesdk` configurations:
```
make CONFIGS=xcodesdk -j8 srcs # Build the Objective-C mapping Xcode SDK
# for the default platform
```
The Xcode SDKs are built into `ice/sdk`.
## Installing an Objective-C Source Build
Simply run `make install`. This will install Ice in the directory specified by
the `prefix` variable in `../config/Make.rules`.
When compiling Ice programs, you must pass the location of the
`<prefix>/include` directory to the compiler with the `-I` option, and the
location of the library directory with the `-L` option.
## Building the Test Suite
`make all` or `make tests` builds the test suite for the platform(s) and
configuration(s) you selected.
However, in order to run the test suite on `iphoneos`, you need to build the
Objective-C Controller app from Xcode:
- Open the Objective-C Test Controller project located in the
`objective-c/test/ios/controller` directory.
- Build the `Objective-C Controller` or `Objective-C ARC Controller` app.
## Running the Test Suite
Python is required to run the test suite. After a successful source build, you
can run the tests as shown below. If everything worked out, you should see lots
of `ok` messages. In case of a failure, the tests abort with `failed`.
### macOS
```
python allTests.py # default config and default platform
python allTests --config=... --platform=... # use the specified config and platform
```
### iOS Simulator
```
python allTests.py --config=xcodesdk --platform=iphonesimulator --controller-app
```
### iOS
- Start the `Objective-C Controller` or `Objective-C ARC Controller` app on
your iOS device, from Xcode.
- On your Mac:
```
python allTests.py --config=xcodesdk --platform=iphoneos
```
All the test clients and servers run on the iOS device, not on your Mac
computer.
[1]: https://doc.zeroc.com/display/Rel/Using+the+macOS+Binary+Distribution+for+Ice+3.7.0
[2]: https://doc.zeroc.com/display/Rel/Supported+Platforms+for+Ice+3.7.0
[3]: https://en.wikipedia.org/wiki/Automatic_Reference_Counting
|