# 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') dependencies += [ fmt, json, freetype2, flac, ogg, vorbis, vorbisfile, vorbisenc, sfml_audio, sfml_graphics, sfml_system, sfml_window ] sources = [ 'src/dbc.cpp', 'src/guecs.cpp', 'src/lel.cpp', 'src/sfml/components.cpp', ] sfml_impl = [ 'src/sfml/config.cpp', 'src/sfml/backend.cpp', 'src/sfml/shaders.cpp', 'src/sfml/sound.cpp', 'src/sfml/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: dependencies) lel_guecs_dep = declare_dependency( link_with: lel_guecs_lib, include_directories: lel_guecs_inc) executable('runtests', [ 'src/sfml/config.cpp', 'tests/lel.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)