diff --git a/examples/cl-repl/lisp/ini.lisp b/examples/cl-repl/lisp/ini.lisp index e8f21c6..61797a6 100644 --- a/examples/cl-repl/lisp/ini.lisp +++ b/examples/cl-repl/lisp/ini.lisp @@ -59,7 +59,8 @@ ;; needed for :sockets (linked as static lib) (asdf:defsystem :sb-bsd-sockets) -;; eventual ssl libs (not included in LQML) need to be loaded manually +;; eventual ssl libs need to be loaded manually +;; TODO: still needed? #+android (when (probe-file "libssl.so") (ffi:load-foreign-library "libcrypto.so") diff --git a/examples/clog-demo/readme-build.md b/examples/clog-demo/readme-build.md new file mode 100644 index 0000000..ebc8c00 --- /dev/null +++ b/examples/clog-demo/readme-build.md @@ -0,0 +1,137 @@ + +Prepare +------- + +First you need to patch the ASDF from ECL android. So, switch to where you have +ecl-android installed, and edit file: 'contrib/asdf/asdf.lisp'. + +Find the following function, and replace it with this code: +``` +(defun system-source-directory (system-designator) + ;; hack + (let ((dir (pathname-directory-pathname (system-source-file system-designator)))) + (if dir + (translate-logical-pathname dir) + (when (probe-file "/sdcard/") ; android (needs runtime check) + *default-pathname-defaults*)))) +``` +You need to rebuild ECL android after this; in order to make a clean rebuild, +remove the following directories: + + rm -fr ecl-android + rm -fr ecl-android-host + rm -fr build + +Then run the 2 build scripts again. + +(Notes: this is needed because on android some paths are returned as logical +pathnames, which need translation for the way they are used in CLOG. And in +case the ASDF source files are not present, like here, the above path should +not return NIL, which would give a runtime error, so we simply return the app +path instead.) + +-- + +If you use Qt versions prior to 5.15, you need to adapt the QML module version +to your minor Qt version in all files under `qml/`. + +Example: Qt5.**12** => import QtQuick 2.**12**. + +The version number can be omitted in Qt6. + + +Note +---- + +Every Lisp file under `lisp/` and every qml/image/font/whatever file under +`qml/` is added **automatically** to your Qt project file (both for re-compile +and adding to resources included in the executable). + +So, you only need to **manually** care about the usual ASDF project files in +`app.asd`. + + +Run desktop +----------- +``` +$ lqml run.lisp +``` + + +Build desktop app +----------------- +``` +$ cd build + +$ qmake .. +$ make +``` + + +Build android APK +----------------- +``` +$ cd build-android + +$ qmake-android .. +$ make apk + +$ ./install-run.sh +``` +Log note: for showing only your own messages, see `log.sh`. + + + +Build iOS app +------------- + +**Important notes**: the Qt Xcode integration is not perfect, which means: when +you include asset files (like in example `swank-server`), they may not be +copied to the build directory, the first time you build the app. + +So, it's a good idea to run `qmake-ios` twice before building the app. + +The first build after a `qmake-ios` will almost always fail (missing files): +just run 'Build' (from Xcode) again, and the missing files will be created. + +You also need to check the console from where you launched `./xcode.sh` for +eventual errors compiling the Lisp code. +``` +$ cd build-ios + +$ qmake-ios .. +$ qmake-ios .. # run twice + +$ ./xcode.sh +``` +The script above first cross-compiles the Lisp code, then opens **Xcode**. + +Please note: + +* before building the app, go to 'Build Settings' / 'Build Options' and set + **Enable Bitcode** to **No** + +* if it complains about missing source files when first hitting the 'Run' + button, just hit the 'Run' button again (and they will be generated) + +* using latest Xcode, it may complain about the 'Legacy Build System'; just go + to 'File' / 'Project Settings' and select 'New Build System' + +* you only need to run `qmake-ios` again after you added/removed files to the + project; after every `qmake-ios`, the above steps need to be repeated + +If you cross-compiled ECL for the simulator, it should work there too, but this +is currently only tested on **Intel**. + +Simulator note: to show the virtual keyboard, use `cmd-k`. + + +Advanced note +------------- +For conditions during Qt event processing, a fallback restart is added at +startup (needed in e.g. Slime). + +If you don't want this, define the following in `app.pro`: +``` +DEFINES += NO_QT_RESTART +```