Major changes

Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
2025-07-02 12:26:20 +03:00
parent 4ec57bbd79
commit dd0d232c97
32 changed files with 997 additions and 182 deletions

View File

@@ -0,0 +1,145 @@
# Modified Meson WrapDB file
project(
'glfw',
'c',
version: '3.3.10',
license: 'Zlib',
default_options: ['b_ndebug=if-release', 'c_std=c99', 'warning_level=0'],
meson_version: '>=0.58.0',
)
#@ Project variables
sys_os = host_machine.system()
sys_cc = meson.get_compiler('c')
opt_libdir = get_option('libdir')
is_posix = sys_os != 'windows'
if get_option('default_library') != 'static'
add_project_arguments('-D_GLFW_BUILD_DLL', language: 'c')
endif
if sys_os == 'windows'
opt_display = 'win32'
elif sys_os == 'darwin'
opt_display = 'cocoa'
else
opt_display = 'x11'
endif
### Dependencies ###
deps = []
#@ Backend API
# X11
if opt_display == 'x11'
foreach x : ['x11', 'xrandr', 'xinerama', 'xcursor', 'xi', 'xkbcommon']
deps += dependency(x, required: true)
endforeach
# Win32
elif opt_display == 'win32'
if sys_os != 'windows'
error('Non Windows is unsupportred')
endif
# Cocoa
elif opt_display == 'cocoa'
if sys_os != 'darwin'
error('Non macOS is unsupported')
endif
deps += dependency('appleframeworks', modules: ['Cocoa', 'CoreFoundation', 'IOKit'])
endif
#@ System Dependencies
foreach l : ['m', 'rt']
deps += sys_cc.find_library(l, required: false)
endforeach
if meson.version().version_compare('>= 0.62')
deps += dependency('dl', required: false)
else
deps += sys_cc.find_library('dl', required: false)
endif
deps += dependency('threads')
### Configuration ###
cfg_data = configuration_data()
foreach d : ['osmesa', 'x11', 'wayland', 'win32', 'cocoa']
cfg_data.set('_GLFW_' + d.to_upper(), opt_display == d)
endforeach
cfg_file = configure_file(configuration: cfg_data, output: 'glfw_config.h')
### Targets ###
#@ Primary target:
## GLFW library
# Common files
s_common = files('src/context.c', 'src/init.c', 'src/input.c', 'src/monitor.c', 'src/vulkan.c', 'src/window.c')
s_common += cfg_file
# Backend files
if opt_display == 'x11'
s_display = files(
'src/egl_context.c',
'src/glx_context.c',
'src/osmesa_context.c',
'src/posix_thread.c',
'src/posix_time.c',
'src/x11_init.c',
'src/x11_monitor.c',
'src/x11_window.c',
'src/xkb_unicode.c',
'src/@0@_joystick.c'.format(sys_os == 'linux' ? 'linux' : 'null'),
)
elif opt_display == 'win32'
s_display = files(
'src/egl_context.c',
'src/osmesa_context.c',
'src/wgl_context.c',
'src/win32_init.c',
'src/win32_joystick.c',
'src/win32_monitor.c',
'src/win32_thread.c',
'src/win32_time.c',
'src/win32_window.c',
)
elif opt_display == 'cocoa'
add_languages('objc', native: false)
s_display = files(
'src/cocoa_init.m',
'src/cocoa_joystick.m',
'src/cocoa_monitor.m',
'src/cocoa_time.c',
'src/cocoa_window.m',
'src/egl_context.c',
'src/nsgl_context.m',
'src/osmesa_context.c',
'src/posix_thread.c',
)
add_project_arguments('-D_GLFW_USE_CONFIG_H', language: 'objc')
if host_machine.system() == 'darwin'
add_project_arguments('-D_DARWIN_C_SOURCE', language: 'objc')
endif
endif
srcfiles = [s_common, s_display]
incdirs = include_directories('include', 'src')
#@ Flags
add_project_arguments('-D_GLFW_USE_CONFIG_H', language: 'c')
if host_machine.system() == 'darwin'
add_project_arguments('-D_DARWIN_C_SOURCE', language: 'c')
endif
c_args = ['-Wno-everything']
# Build
glfw_lib = library(
'glfw3',
srcfiles,
include_directories: incdirs,
dependencies: deps,
version: meson.project_version(),
build_by_default: true,
pic: true,
c_args: c_args,
)
glfw_dep = declare_dependency(
include_directories: incdirs,
link_with: glfw_lib,
)
meson.override_dependency('glfw3', glfw_dep)