lots of new stuff waow
This commit is contained in:
parent
bb4ccb5d42
commit
867bab1050
38 changed files with 704 additions and 452 deletions
106
meson.build
106
meson.build
|
@ -4,8 +4,8 @@
|
|||
project(
|
||||
'draconis++',
|
||||
'cpp',
|
||||
version: '0.1.0',
|
||||
default_options: [
|
||||
version : '0.1.0',
|
||||
default_options : [
|
||||
'default_library=static',
|
||||
'buildtype=debugoptimized',
|
||||
'b_vscrt=mt',
|
||||
|
@ -35,13 +35,13 @@ common_warning_flags = [
|
|||
]
|
||||
|
||||
common_cpp_flags = {
|
||||
'common': [
|
||||
'common' : [
|
||||
'-fno-strict-enums',
|
||||
'-fvisibility=hidden',
|
||||
'-fvisibility-inlines-hidden',
|
||||
'-std=c++26',
|
||||
],
|
||||
'msvc': [
|
||||
'msvc' : [
|
||||
'-DNOMINMAX', '/MT',
|
||||
'/Zc:__cplusplus',
|
||||
'/Zc:preprocessor',
|
||||
|
@ -49,20 +49,20 @@ common_cpp_flags = {
|
|||
'/external:anglebrackets',
|
||||
'/std:c++latest',
|
||||
],
|
||||
'unix_extra': '-march=native',
|
||||
'windows_extra': '-DCURL_STATICLIB',
|
||||
'unix_extra' : '-march=native',
|
||||
'windows_extra' : '-DCURL_STATICLIB',
|
||||
}
|
||||
|
||||
# Configure Objective-C++ for macOS
|
||||
if host_system == 'darwin'
|
||||
add_languages('objcpp', native: false)
|
||||
add_languages('objcpp', native : false)
|
||||
objcpp = meson.get_compiler('objcpp')
|
||||
objcpp_flags = common_warning_flags + [
|
||||
'-std=c++26',
|
||||
'-fvisibility=hidden',
|
||||
'-fvisibility-inlines-hidden',
|
||||
]
|
||||
add_project_arguments(objcpp.get_supported_arguments(objcpp_flags), language: 'objcpp')
|
||||
add_project_arguments(objcpp.get_supported_arguments(objcpp_flags), language : 'objcpp')
|
||||
endif
|
||||
|
||||
# Apply C++ compiler arguments
|
||||
|
@ -80,29 +80,36 @@ else
|
|||
endif
|
||||
endif
|
||||
|
||||
add_project_arguments(common_cpp_args, language: 'cpp')
|
||||
add_project_arguments(common_cpp_args, language : 'cpp')
|
||||
|
||||
# --------------------- #
|
||||
# Include Directories #
|
||||
# --------------------- #
|
||||
project_internal_includes = include_directories('src')
|
||||
project_public_includes = include_directories('include', is_system : true)
|
||||
|
||||
# ------- #
|
||||
# Files #
|
||||
# ------- #
|
||||
base_sources = files(
|
||||
'src/config/config.cpp',
|
||||
'src/config/weather.cpp',
|
||||
'src/core/package.cpp',
|
||||
'src/core/system_data.cpp',
|
||||
'src/Config/Config.cpp',
|
||||
'src/Core/SystemData.cpp',
|
||||
'src/Services/Weather/OpenMeteoService.cpp',
|
||||
'src/Services/Weather/OpenWeatherMapService.cpp',
|
||||
'src/Services/PackageCounting.cpp',
|
||||
'src/UI/UI.cpp',
|
||||
'src/main.cpp',
|
||||
'src/ui/ui.cpp',
|
||||
)
|
||||
|
||||
platform_sources = {
|
||||
'darwin': ['src/os/macos.cpp', 'src/os/macos/bridge.mm'],
|
||||
'dragonfly': ['src/os/bsd.cpp'],
|
||||
'freebsd': ['src/os/bsd.cpp'],
|
||||
'haiku': ['src/os/haiku.cpp'],
|
||||
'linux': ['src/os/linux.cpp'],
|
||||
'netbsd': ['src/os/bsd.cpp'],
|
||||
'serenity': ['src/os/serenity.cpp'],
|
||||
'windows': ['src/os/windows.cpp'],
|
||||
'darwin' : ['src/OS/macOS.cpp', 'src/OS/macOS/bridge.mm'],
|
||||
'dragonfly' : ['src/OS/bsd.cpp'],
|
||||
'freebsd' : ['src/OS/bsd.cpp'],
|
||||
'haiku' : ['src/OS/haiku.cpp'],
|
||||
'linux' : ['src/OS/linux.cpp'],
|
||||
'netbsd' : ['src/OS/bsd.cpp'],
|
||||
'serenity' : ['src/OS/serenity.cpp'],
|
||||
'windows' : ['src/OS/Windows.cpp'],
|
||||
}
|
||||
|
||||
sources = base_sources + files(platform_sources.get(host_system, []))
|
||||
|
@ -111,9 +118,9 @@ sources = base_sources + files(platform_sources.get(host_system, []))
|
|||
# Dependencies Config #
|
||||
# --------------------- #
|
||||
common_deps = [
|
||||
dependency('libcurl', include_type: 'system', static: true),
|
||||
dependency('tomlplusplus', include_type: 'system', static: true),
|
||||
dependency('openssl', include_type: 'system', static: true, required: false),
|
||||
dependency('libcurl', include_type : 'system', static : true),
|
||||
dependency('tomlplusplus', include_type : 'system', static : true),
|
||||
dependency('openssl', include_type : 'system', static : true, required : false),
|
||||
]
|
||||
|
||||
# Platform-specific dependencies
|
||||
|
@ -124,8 +131,8 @@ if host_system == 'darwin'
|
|||
dependency('SQLiteCpp'),
|
||||
dependency(
|
||||
'appleframeworks',
|
||||
modules: ['foundation', 'mediaplayer', 'systemconfiguration'],
|
||||
static: true,
|
||||
modules : ['foundation', 'mediaplayer', 'systemconfiguration'],
|
||||
static : true,
|
||||
),
|
||||
dependency('iconv'),
|
||||
]
|
||||
|
@ -136,11 +143,11 @@ elif host_system == 'windows'
|
|||
]
|
||||
elif host_system != 'serenity' and host_system != 'haiku'
|
||||
# Make dbus, x11, and wayland dependencies optional
|
||||
dbus_dep = dependency('dbus-1', required: false)
|
||||
xcb_dep = dependency('xcb', required: false)
|
||||
xau_dep = dependency('xau', required: false)
|
||||
xdmcp_dep = dependency('xdmcp', required: false)
|
||||
wayland_dep = dependency('wayland-client', required: false)
|
||||
dbus_dep = dependency('dbus-1', required : false)
|
||||
xcb_dep = dependency('xcb', required : false)
|
||||
xau_dep = dependency('xau', required : false)
|
||||
xdmcp_dep = dependency('xdmcp', required : false)
|
||||
wayland_dep = dependency('wayland-client', required : false)
|
||||
|
||||
platform_deps += [
|
||||
dependency('SQLiteCpp'),
|
||||
|
@ -149,15 +156,15 @@ elif host_system != 'serenity' and host_system != 'haiku'
|
|||
|
||||
if dbus_dep.found()
|
||||
platform_deps += dbus_dep
|
||||
add_project_arguments('-DHAVE_DBUS', language: 'cpp')
|
||||
add_project_arguments('-DHAVE_DBUS', language : 'cpp')
|
||||
endif
|
||||
if xcb_dep.found() and xau_dep.found() and xdmcp_dep.found()
|
||||
platform_deps += [xcb_dep, xau_dep, xdmcp_dep]
|
||||
add_project_arguments('-DHAVE_XCB', language: 'cpp')
|
||||
add_project_arguments('-DHAVE_XCB', language : 'cpp')
|
||||
endif
|
||||
if wayland_dep.found()
|
||||
platform_deps += wayland_dep
|
||||
add_project_arguments('-DHAVE_WAYLAND', language: 'cpp')
|
||||
add_project_arguments('-DHAVE_WAYLAND', language : 'cpp')
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -165,28 +172,28 @@ endif
|
|||
ftxui_components = ['ftxui::screen', 'ftxui::dom', 'ftxui::component']
|
||||
ftxui_dep = dependency(
|
||||
'ftxui',
|
||||
modules: ftxui_components,
|
||||
include_type: 'system',
|
||||
static: true,
|
||||
required: false,
|
||||
modules : ftxui_components,
|
||||
include_type : 'system',
|
||||
static : true,
|
||||
required : false,
|
||||
)
|
||||
|
||||
if not ftxui_dep.found()
|
||||
ftxui_dep = declare_dependency(
|
||||
dependencies: [
|
||||
dependency('ftxui-dom', fallback: ['ftxui', 'dom_dep']),
|
||||
dependency('ftxui-screen', fallback: ['ftxui', 'screen_dep']),
|
||||
dependency('ftxui-component', fallback: ['ftxui', 'component_dep']),
|
||||
dependencies : [
|
||||
dependency('ftxui-dom', fallback : ['ftxui', 'dom_dep']),
|
||||
dependency('ftxui-screen', fallback : ['ftxui', 'screen_dep']),
|
||||
dependency('ftxui-component', fallback : ['ftxui', 'component_dep']),
|
||||
],
|
||||
)
|
||||
endif
|
||||
|
||||
glaze_dep = dependency('glaze', include_type: 'system', required: false)
|
||||
glaze_dep = dependency('glaze', include_type : 'system', required : false)
|
||||
|
||||
if not glaze_dep.found()
|
||||
cmake = import('cmake')
|
||||
glaze_proj = cmake.subproject('glaze')
|
||||
glaze_dep = glaze_proj.dependency('glaze_glaze', include_type: 'system')
|
||||
glaze_dep = glaze_proj.dependency('glaze_glaze', include_type : 'system')
|
||||
endif
|
||||
|
||||
# Combine all dependencies
|
||||
|
@ -212,8 +219,9 @@ endif
|
|||
executable(
|
||||
'draconis++',
|
||||
sources,
|
||||
objc_args: objc_args,
|
||||
link_args: link_args,
|
||||
dependencies: deps,
|
||||
install: true,
|
||||
include_directories : [project_internal_includes, project_public_includes],
|
||||
objc_args : objc_args,
|
||||
link_args : link_args,
|
||||
dependencies : deps,
|
||||
install : true,
|
||||
)
|
Loading…
Add table
Add a link
Reference in a new issue