You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
123 lines
3.3 KiB
123 lines
3.3 KiB
# clang might need _LIBCPP_ENABLE_CXX26_REMOVED_CODECVT
|
|
|
|
project('lel-guecs', 'cpp',
|
|
version: '0.2.0',
|
|
default_options: [
|
|
'cpp_std=c++20',
|
|
'cpp_args=-D_GLIBCXX_DEBUG=1 -D_GLIBCXX_DEBUG_PEDANTIC=1',
|
|
])
|
|
|
|
# use this for common options only for our executables
|
|
cpp_args=[]
|
|
link_args=[]
|
|
# these are passed as override_defaults
|
|
exe_defaults = [ 'warning_level=2' ]
|
|
|
|
cc = meson.get_compiler('cpp')
|
|
dependencies = []
|
|
|
|
if build_machine.system() == 'windows'
|
|
sfml_main = dependency('sfml_main')
|
|
opengl32 = cc.find_library('opengl32', required: true)
|
|
winmm = cc.find_library('winmm', required: true)
|
|
gdi32 = cc.find_library('gdi32', required: true)
|
|
|
|
dependencies += [
|
|
opengl32, winmm, gdi32, sfml_main
|
|
]
|
|
exe_defaults += ['werror=true']
|
|
|
|
elif build_machine.system() == 'darwin'
|
|
add_global_link_arguments(
|
|
language: 'cpp',
|
|
)
|
|
|
|
opengl = dependency('OpenGL')
|
|
corefoundation = dependency('CoreFoundation')
|
|
carbon = dependency('Carbon')
|
|
cocoa = dependency('Cocoa')
|
|
iokit = dependency('IOKit')
|
|
corevideo = dependency('CoreVideo')
|
|
|
|
link_args += ['-ObjC']
|
|
exe_defaults += ['werror=false']
|
|
dependencies += [
|
|
opengl, corefoundation, carbon, cocoa, iokit, corevideo
|
|
]
|
|
endif
|
|
|
|
catch2 = subproject('catch2').get_variable('catch2_with_main_dep')
|
|
fmt = subproject('fmt').get_variable('fmt_dep')
|
|
json = subproject('nlohmann_json').get_variable('nlohmann_json_dep')
|
|
freetype2 = subproject('freetype2').get_variable('freetype_dep')
|
|
|
|
flac = subproject('flac').get_variable('flac_dep')
|
|
ogg = subproject('ogg').get_variable('libogg_dep')
|
|
vorbis = subproject('vorbis').get_variable('vorbis_dep')
|
|
vorbisfile = subproject('vorbis').get_variable('vorbisfile_dep')
|
|
vorbisenc = subproject('vorbis').get_variable('vorbisenc_dep')
|
|
sfml_audio = subproject('sfml').get_variable('sfml_audio_dep')
|
|
sfml_graphics = subproject('sfml').get_variable('sfml_graphics_dep')
|
|
sfml_system = subproject('sfml').get_variable('sfml_system_dep')
|
|
sfml_window = subproject('sfml').get_variable('sfml_window_dep')
|
|
|
|
lib_depends = [ fmt, sfml_graphics, sfml_system, sfml_window ]
|
|
|
|
dependencies += [
|
|
json, freetype2, flac, ogg,
|
|
vorbis, vorbisfile, vorbisenc, sfml_audio,
|
|
] + lib_depends
|
|
|
|
|
|
sources = [
|
|
'src/dbc.cpp',
|
|
'src/guecs.cpp',
|
|
'src/lel.cpp',
|
|
'src/sfmlbackend/components.cpp',
|
|
]
|
|
|
|
sfml_impl = [
|
|
'src/sfmlbackend/config.cpp',
|
|
'src/sfmlbackend/backend.cpp',
|
|
'src/sfmlbackend/shaders.cpp',
|
|
'src/sfmlbackend/sound.cpp',
|
|
'src/sfmlbackend/textures.cpp',
|
|
]
|
|
|
|
lel_guecs_inc = include_directories('include')
|
|
|
|
lel_guecs_lib = static_library('lel-guecs',
|
|
sources,
|
|
pic: true,
|
|
cpp_args: cpp_args,
|
|
include_directories: lel_guecs_inc,
|
|
override_options: exe_defaults,
|
|
dependencies: lib_depends)
|
|
|
|
lel_guecs_dep = declare_dependency(
|
|
link_with: lel_guecs_lib,
|
|
include_directories: lel_guecs_inc)
|
|
|
|
executable('runtests', sfml_impl + [
|
|
'tests/lel.cpp',
|
|
'tests/shaders.cpp',
|
|
'tests/sound.cpp',
|
|
'tests/textures.cpp',
|
|
'tests/guecs.cpp',
|
|
],
|
|
cpp_args: cpp_args,
|
|
link_args: link_args,
|
|
override_options: exe_defaults,
|
|
include_directories: lel_guecs_inc,
|
|
link_with: [lel_guecs_lib],
|
|
dependencies: dependencies + [catch2])
|
|
|
|
executable('calc', sfml_impl + [
|
|
'demos/calc.cpp',
|
|
],
|
|
cpp_args: cpp_args,
|
|
link_args: link_args,
|
|
override_options: exe_defaults,
|
|
include_directories: lel_guecs_inc,
|
|
link_with: [lel_guecs_lib],
|
|
dependencies: dependencies)
|
|
|