The Lisp part of the application needs to be delivered using one of four special images:
lispworks-7-0-0-amd64-darwin-ioswhich build runtimes for the iOS Simulator, 32-bit and 64-bit, running on Mac OS X, or
lispworks-7-0-0-arm64-linux-ioswhich build runtimes for the real iOS device, 32-bit and 64-bit. To do this, you run the QEMU emulator on Mac OS X and tell it to run the lispworks-7-1-0-arm-linux-ios or
There is an example script
examples/ios/run-lw-ios.sh which can be used to invoke all of these images in sequence with the same command line arguments.
These images do not contain the GUI part of LispWorks, but do contain all the non-GUI parts.
There are no iOS-specific Lisp functions required to build the Lisp part of an application: you use deliver in the normal way. The only difference compared to a desktop application is that the file passed to deliver should have a
".o" extension and the generated file will be an iOS object file that must be linked with the other parts of the application using Xcode. Generation of shared libraries is not supported (this is a limitation of iOS).
To include the delivered object file in an Xcode project, add the file to the project using the File > Add files to <project>... menu item. Xcode should detect this as a file of type "Object Code".
If you want to run the same Xcode project with both the iOS Simulator and a real device or build for 32-bit and 64-bit devices then you can conditionalize the filename passed to deliver to create four different files. For example,
(format nil "OthelloDemo/OthelloServer-~A.o"
OthelloServer-x86_64.o to the Xcode project. Building the project will result in warnings such as
ld: warning: ignoring file
was built for armv7 which is not the architecture being linked (i386):
These warnings can be ignored.
LispWorks User Guide and Reference Manual - 20 Sep 2017