Add a Cocoa frontend for xC

Some work remains to be done to get it to be even as good
as the Win32 frontend, but it's generally usable.
This commit is contained in:
Přemysl Eric Janouch 2023-08-30 00:35:34 +02:00
parent e5156cddbf
commit 1c4343058d
Signed by: p
GPG Key ID: A0420B94F92B9493
4 changed files with 1421 additions and 4 deletions

2
NEWS
View File

@ -33,6 +33,8 @@
* Added a Win32 frontend for xC called xW
* Added a Cocoa frontend for xC called xM
* Added a Go port of xD called xS

View File

@ -2,8 +2,9 @@ xK
==
'xK' (chat kit) is an IRC software suite consisting of a daemon, bot, terminal
client, and web + Win32 frontends for the client. It's all you're ever going to
need for chatting, so long as you can make do with slightly minimalist software.
client, and web/Windows/macOS frontends for the client. It's all you're ever
going to need for chatting, so long as you can make do with slightly minimalist
software.
They're all lean on dependencies, and offer a maximally permissive licence.
@ -140,13 +141,23 @@ endpoint as the third command line argument in this case.
xW
~~
The Win32 frontend is a separate CMake subproject that should be compiled
using MinGW-w64. In order to run it, make a shortcut for the executable and
include the relay address in its _Target_ field:
using MinGW-w64. To avoid having to specify the relay address each time you
run it, create a shortcut for the executable and include the address in its
_Target_ field:
C:\...\xW.exe 127.0.0.1 9000
It works reasonably well starting with Windows 7.
xM
~~
The Cocoa frontend is a separate CMake subproject that requires Xcode to build.
It is currently not that usable. The relay address can either be passed on
the command line, or preset in the _defaults_ database:
$ defaults write name.janouch.xM relayHost 127.0.0.1
$ defaults write name.janouch.xM relayPort 9000
Client Certificates
-------------------
'xC' will use the SASL EXTERNAL method to authenticate using the TLS client

32
xM/CMakeLists.txt Normal file
View File

@ -0,0 +1,32 @@
# Swift language support
cmake_minimum_required (VERSION 3.15)
file (READ ../xK-version project_version)
configure_file (../xK-version xK-version.tag COPYONLY)
string (STRIP "${project_version}" project_version)
# There were two issues when building this from the main CMakeLists.txt:
# a) renaming main.swift to xM.swift requires removing top-level statements,
# b) there is a "redefinition of module 'FFI'" error.
project (xM VERSION "${project_version}"
DESCRIPTION "Cocoa frontend for xC" LANGUAGES Swift)
set (root "${PROJECT_SOURCE_DIR}/..")
add_custom_command (OUTPUT xC-proto.swift
COMMAND env LC_ALL=C awk
-f ${root}/liberty/tools/lxdrgen.awk
-f ${root}/liberty/tools/lxdrgen-swift.awk
-v PrefixCamel=Relay
${root}/xC.lxdr > xC-proto.swift
DEPENDS
${root}/liberty/tools/lxdrgen.awk
${root}/liberty/tools/lxdrgen-swift.awk
${root}/xC.lxdr
COMMENT "Generating xC relay protocol code" VERBATIM)
set (MACOSX_BUNDLE_GUI_IDENTIFIER name.janouch.${PROJECT_NAME})
# Other requirements: macOS 10.14 for Network, and macOS 11 for Logger.
set (CMAKE_Swift_LANGUAGE_VERSION 5)
add_executable (xM MACOSX_BUNDLE
main.swift ${PROJECT_BINARY_DIR}/xC-proto.swift)

1372
xM/main.swift Normal file

File diff suppressed because it is too large Load Diff