From ab097e23702209d6c73969fc44ffe3a3a180dc57 Mon Sep 17 00:00:00 2001 From: pupbrained Date: Sat, 22 Jun 2024 01:55:17 -0400 Subject: [PATCH] fix meson.build --- meson-vcpkg.txt | 0 meson.build | 97 ++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 75 insertions(+), 22 deletions(-) delete mode 100644 meson-vcpkg.txt diff --git a/meson-vcpkg.txt b/meson-vcpkg.txt deleted file mode 100644 index e69de29..0000000 diff --git a/meson.build b/meson.build index 4eca14b..2deba65 100644 --- a/meson.build +++ b/meson.build @@ -1,20 +1,23 @@ project( 'draconis++', 'cpp', - version : '0.1.0', - default_options : [ - 'cpp_std=c++20', + version: '0.1.0', + default_options: [ + 'cpp_std=c++23', 'default_library=static', 'warning_level=everything', 'buildtype=debugoptimized' ] ) +clangtidy = find_program('clang-tidy', required: false) + cpp = meson.get_compiler('cpp') -add_project_arguments( - cpp.get_supported_arguments( - [ - '-DCURL_STATICLIB', +if host_machine.system() == 'darwin' + add_languages('objcpp') + objcpp = meson.get_compiler('objcpp') + add_project_arguments( + objcpp.get_supported_arguments([ '-Wno-c++20-compat', '-Wno-c++20-extensions', '-Wno-c++98-compat', @@ -25,36 +28,86 @@ add_project_arguments( '-Wno-pre-c++20-compat-pedantic', '-Wno-switch-default', '-Wunused-function', - ] - ), - language : 'cpp' + ]), + language: 'objcpp' + ) +endif + +common_cpp_args = [ + '-Wno-c++20-compat', + '-Wno-c++20-extensions', + '-Wno-c++98-compat', + '-Wno-c++98-compat-pedantic', + '-Wno-disabled-macro-expansion', + '-Wno-missing-prototypes', + '-Wno-padded', + '-Wno-pre-c++20-compat-pedantic', + '-Wno-switch-default', + '-Wunused-function' +] + +if host_machine.system() == 'windows' + common_cpp_args += ['-DCURL_STATICLIB'] +endif + +add_project_arguments( + cpp.get_supported_arguments(common_cpp_args), + language: 'cpp' ) source_file_names = [ 'src/main.cpp', 'src/config/config.cpp', - 'src/config/weather.cpp', - 'src/os/windows.cpp' + 'src/config/weather.cpp' ] +if host_machine.system() == 'linux' + source_file_names += ['src/os/linux.cpp'] +elif host_machine.system() == 'darwin' + source_file_names += [ + 'src/os/macos.cpp', + 'src/os/macos/bridge.mm', + ] +elif host_machine.system() == 'windows' + source_file_names += ['src/os/windows.cpp'] +endif + sources = [] + foreach file : source_file_names sources += files(file) endforeach -windows_sdk_lib_dir = 'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/um/x64' -link_args = ['-L' + windows_sdk_lib_dir, '-lwindowsapp', '-static'] +deps = [ + dependency('fmt', static: host_machine.system() != 'darwin'), + dependency('libcurl', static: host_machine.system() != 'darwin'), + dependency('tomlplusplus', static: host_machine.system() != 'darwin'), + dependency('yyjson', static: host_machine.system() != 'darwin') +] -deps = [] +if host_machine.system() == 'darwin' + deps += dependency('Foundation') + deps += dependency('MediaPlayer') +elif host_machine.system() == 'linux' + deps += dependency('sdbus-c++') +endif -deps += dependency('fmt', static : true) -deps += dependency('libcurl', static : true) -deps += dependency('tomlplusplus', static : true) -deps += dependency('yyjson', static : true) +objc_args = [] +link_args = [] + +if host_machine.system() == 'darwin' + objc_args += ['-fobjc-arc'] + link_args += ['-framework', 'Foundation', '-framework', 'MediaPlayer'] +elif host_machine.system() == 'windows' + windows_sdk_lib_dir = 'C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/um/x64' + link_args += ['-L' + windows_sdk_lib_dir, '-lwindowsapp', '-static'] +endif executable( 'draconis++', sources, - dependencies : deps, - link_args : link_args -) \ No newline at end of file + objc_args: objc_args, + link_args: link_args, + dependencies: deps +) +