# 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}) set (MACOSX_BUNDLE_ICON_FILE xM.icns) # Avoid including binary files in the repository by generating icons in code. # sips(1) + Javascript + iconutil(1) could probably also be used. find_program (SWIFT_EXECUTABLE swift REQUIRED) set (icon "${PROJECT_BINARY_DIR}/${MACOSX_BUNDLE_ICON_FILE}") add_custom_command (OUTPUT "${icon}" COMMAND ${SWIFT_EXECUTABLE} "${PROJECT_SOURCE_DIR}/gen-icon.swift" "${icon}" DEPENDS gen-icon.swift COMMENT "Generating xM application icon" VERBATIM) set_source_files_properties ("${icon}" PROPERTIES MACOSX_PACKAGE_LOCATION Resources) # 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 "${icon}" "${PROJECT_BINARY_DIR}/xC-proto.swift")