Major changes
Signed-off-by: Robear Selwans <robear.selwans@outlook.com>
This commit is contained in:
145
subprojects/packagefiles/glfw/meson.build
Normal file
145
subprojects/packagefiles/glfw/meson.build
Normal 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)
|
||||
Reference in New Issue
Block a user