mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-11-23 19:38:48 +03:00
Initial meson build for macOS
This commit is contained in:
parent
bc5c8189da
commit
eb9319b6ed
3 changed files with 104 additions and 8 deletions
|
@ -119,6 +119,30 @@ build-macos:
|
||||||
- .hunter/
|
- .hunter/
|
||||||
- "${CCACHE_DIR}"
|
- "${CCACHE_DIR}"
|
||||||
|
|
||||||
|
build-macos-meson:
|
||||||
|
stage: build
|
||||||
|
tags: [macos]
|
||||||
|
needs: []
|
||||||
|
variables:
|
||||||
|
GIT_SUBMODULE_STRATEGY: normal
|
||||||
|
script:
|
||||||
|
- export PATH=/usr/local/opt/qt@5/bin/:${PATH}
|
||||||
|
- meson setup --prefix=${PWD}/build/nheko.app --bindir=Contents/MacOS build
|
||||||
|
- meson compile -C build
|
||||||
|
- meson install --skip-subprojects -C build
|
||||||
|
artifacts:
|
||||||
|
paths:
|
||||||
|
- build/nheko.app
|
||||||
|
name: nheko-${CI_COMMIT_SHORT_SHA}-macos-app
|
||||||
|
expose_as: 'macos-app'
|
||||||
|
public: false
|
||||||
|
cache:
|
||||||
|
key: "$CI_JOB_NAME"
|
||||||
|
when: 'always'
|
||||||
|
paths:
|
||||||
|
- .ccache
|
||||||
|
- subprojects/packagecache/
|
||||||
|
|
||||||
codesign-macos:
|
codesign-macos:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
tags: [macos]
|
tags: [macos]
|
||||||
|
|
50
meson.build
50
meson.build
|
@ -18,7 +18,9 @@ elif target_machine.system() == 'darwin'
|
||||||
else
|
else
|
||||||
qt5_modules += 'DBus'
|
qt5_modules += 'DBus'
|
||||||
endif
|
endif
|
||||||
|
|
||||||
qt5_dep = dependency('qt5', modules: qt5_modules, include_type: 'system')
|
qt5_dep = dependency('qt5', modules: qt5_modules, include_type: 'system')
|
||||||
|
|
||||||
inc = include_directories('src', 'includes', 'third_party/cpp-httplib-0.5.12')
|
inc = include_directories('src', 'includes', 'third_party/cpp-httplib-0.5.12')
|
||||||
|
|
||||||
deps = [
|
deps = [
|
||||||
|
@ -79,8 +81,8 @@ if (not qtkeychain_dep.found()
|
||||||
qtkeychain_dep = qtkeychain_proj.dependency('qt5keychain')
|
qtkeychain_dep = qtkeychain_proj.dependency('qt5keychain')
|
||||||
|
|
||||||
if target_machine.system() == 'linux' or target_machine.system() == 'freebsd' or target_machine.system() == 'netbsd' or target_machine.system() == 'openbsd' or target_machine.system() == 'dragonfly'
|
if target_machine.system() == 'linux' or target_machine.system() == 'freebsd' or target_machine.system() == 'netbsd' or target_machine.system() == 'openbsd' or target_machine.system() == 'dragonfly'
|
||||||
deps += dependency('libsecret-1', default_options: ['manpage=false', 'vapi=false', 'gtk_doc=false', 'introspection=false',]) # 'bash_completion=disabled'])
|
deps += dependency('libsecret-1', default_options: ['manpage=false', 'vapi=false', 'gtk_doc=false', 'introspection=false',]) # 'bash_completion=disabled'])
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
deps += qtkeychain_dep
|
deps += qtkeychain_dep
|
||||||
|
|
||||||
|
@ -90,11 +92,13 @@ if sdp_dep.found() and webrtc_dep.found()
|
||||||
deps += [sdp_dep, webrtc_dep]
|
deps += [sdp_dep, webrtc_dep]
|
||||||
add_project_arguments('-DGSTREAMER_AVAILABLE', language: 'cpp')
|
add_project_arguments('-DGSTREAMER_AVAILABLE', language: 'cpp')
|
||||||
|
|
||||||
xcb_dep = dependency('xcb', required: get_option('screenshare_x11'))
|
if target_machine.system() != 'darwin'
|
||||||
xcb_ewmh_dep = dependency('xcb-ewmh', required: get_option('screenshare_x11'))
|
xcb_dep = dependency('xcb', required: get_option('screenshare_x11'))
|
||||||
if xcb_dep.found() and xcb_ewmh_dep.found()
|
xcb_ewmh_dep = dependency('xcb-ewmh', required: get_option('screenshare_x11'))
|
||||||
deps += [xcb_dep, xcb_ewmh_dep]
|
if xcb_dep.found() and xcb_ewmh_dep.found()
|
||||||
add_project_arguments('-DXCB_AVAILABLE', language: 'cpp')
|
deps += [xcb_dep, xcb_ewmh_dep]
|
||||||
|
add_project_arguments('-DXCB_AVAILABLE', language: 'cpp')
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -119,6 +123,20 @@ configure_file(input : 'meson/nheko.h',
|
||||||
output : 'config_nheko.h',
|
output : 'config_nheko.h',
|
||||||
configuration : conf_data)
|
configuration : conf_data)
|
||||||
|
|
||||||
|
if host_machine.system() == 'darwin'
|
||||||
|
# Identify MacOS bundle
|
||||||
|
macos_bundle_data = configuration_data()
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_BUNDLE_NAME', meson.project_name())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_EXECUTABLE_NAME', meson.project_name())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_INFO_STRING', meson.project_version())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_BUNDLE_VERSION', meson.project_version())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_LONG_VERSION_STRING', meson.project_version())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_SHORT_VERSION_STRING', meson.project_version())
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_COPYRIGHT', 'Copyright (c) 2021 Nheko Contributors')
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_GUI_IDENTIFIER', 'io.github.nheko-reborn.nheko')
|
||||||
|
macos_bundle_data.set('MACOSX_BUNDLE_ICON_FILE', 'nheko')
|
||||||
|
endif
|
||||||
|
|
||||||
vcs_tag(input: 'meson/version.h', output: 'nheko_version.h', replace_string: '@PROJECT_VERSION@')
|
vcs_tag(input: 'meson/version.h', output: 'nheko_version.h', replace_string: '@PROJECT_VERSION@')
|
||||||
|
|
||||||
moc_files = qt5.preprocess(moc_headers :
|
moc_files = qt5.preprocess(moc_headers :
|
||||||
|
@ -329,14 +347,21 @@ endif
|
||||||
subdir('resources/langs')
|
subdir('resources/langs')
|
||||||
resources = qt5.compile_resources(name: 'res', sources: 'resources/res.qrc')
|
resources = qt5.compile_resources(name: 'res', sources: 'resources/res.qrc')
|
||||||
|
|
||||||
|
cpp_args = ['-DQAPPLICATION_CLASS=QApplication']
|
||||||
|
|
||||||
|
if target_machine.system() == 'darwin'
|
||||||
|
cpp_args += ['-DMACOS_USE_BUNDLE']
|
||||||
|
endif
|
||||||
|
|
||||||
executable('nheko',
|
executable('nheko',
|
||||||
sources, moc_files, resources, translations,
|
sources, moc_files, resources, translations,
|
||||||
cpp_args: '-DQAPPLICATION_CLASS=QApplication',
|
cpp_args: cpp_args,
|
||||||
include_directories: inc,
|
include_directories: inc,
|
||||||
dependencies : deps,
|
dependencies : deps,
|
||||||
win_subsystem: 'windows,6.1',
|
win_subsystem: 'windows,6.1',
|
||||||
install: true)
|
install: true)
|
||||||
|
|
||||||
|
|
||||||
if target_machine.system() != 'windows' and target_machine.system() != 'darwin'
|
if target_machine.system() != 'windows' and target_machine.system() != 'darwin'
|
||||||
install_data([
|
install_data([
|
||||||
'resources/nheko-16.png',
|
'resources/nheko-16.png',
|
||||||
|
@ -360,5 +385,14 @@ if target_machine.system() != 'windows' and target_machine.system() != 'darwin'
|
||||||
], install_dir: 'share/icons/hicolor')
|
], install_dir: 'share/icons/hicolor')
|
||||||
install_data('resources/nheko.desktop', install_dir: 'share/applications')
|
install_data('resources/nheko.desktop', install_dir: 'share/applications')
|
||||||
install_data('resources/nheko.appdata.xml', install_dir: 'share/metainfo')
|
install_data('resources/nheko.appdata.xml', install_dir: 'share/metainfo')
|
||||||
|
elif target_machine.system() == 'darwin'
|
||||||
|
install_data('resources/nheko.icns', install_dir : 'Contents/Resources')
|
||||||
|
configure_file(
|
||||||
|
input : 'meson/MacOSXBundleInfo.plist.in',
|
||||||
|
output : 'Info.plist',
|
||||||
|
configuration : macos_bundle_data,
|
||||||
|
install : true,
|
||||||
|
install_dir : 'Contents'
|
||||||
|
)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
38
meson/MacOSXBundleInfo.plist.in
Normal file
38
meson/MacOSXBundleInfo.plist.in
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
<plist version="1.0">
|
||||||
|
<dict>
|
||||||
|
<key>CFBundleDevelopmentRegion</key>
|
||||||
|
<string>English</string>
|
||||||
|
<key>CFBundleExecutable</key>
|
||||||
|
<string>@MACOSX_BUNDLE_EXECUTABLE_NAME@</string>
|
||||||
|
<key>CFBundleGetInfoString</key>
|
||||||
|
<string>@MACOSX_BUNDLE_INFO_STRING@</string>
|
||||||
|
<key>CFBundleIconFile</key>
|
||||||
|
<string>@MACOSX_BUNDLE_ICON_FILE@</string>
|
||||||
|
<key>CFBundleIdentifier</key>
|
||||||
|
<string>@MACOSX_BUNDLE_GUI_IDENTIFIER@</string>
|
||||||
|
<key>CFBundleInfoDictionaryVersion</key>
|
||||||
|
<string>6.0</string>
|
||||||
|
<key>CFBundleLongVersionString</key>
|
||||||
|
<string>@MACOSX_BUNDLE_LONG_VERSION_STRING@</string>
|
||||||
|
<key>CFBundleName</key>
|
||||||
|
<string>@MACOSX_BUNDLE_BUNDLE_NAME@</string>
|
||||||
|
<key>CFBundlePackageType</key>
|
||||||
|
<string>APPL</string>
|
||||||
|
<key>CFBundleShortVersionString</key>
|
||||||
|
<string>@MACOSX_BUNDLE_SHORT_VERSION_STRING@</string>
|
||||||
|
<key>CFBundleVersion</key>
|
||||||
|
<string>@MACOSX_BUNDLE_BUNDLE_VERSION@</string>
|
||||||
|
<key>CSResourcesFileMapped</key>
|
||||||
|
<true/>
|
||||||
|
<key>LSRequiresCarbon</key>
|
||||||
|
<true/>
|
||||||
|
<key>NSHumanReadableCopyright</key>
|
||||||
|
<string>@MACOSX_BUNDLE_COPYRIGHT@</string>
|
||||||
|
<key>NSPrincipalClass</key>
|
||||||
|
<string>NSApplication</string>
|
||||||
|
<key>NSHighResolutionCapable</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>
|
Loading…
Reference in a new issue