From 94f95157fea6bbdd97648b70cc8c75df4e772e31 Mon Sep 17 00:00:00 2001 From: Kevin Trogant Date: Tue, 16 Jan 2024 17:44:03 +0100 Subject: [PATCH] build config for integrated asset compiler --- meson.build | 109 ++++++++++++++++++++++++++-------------------- meson_options.txt | 3 +- 2 files changed, 63 insertions(+), 49 deletions(-) diff --git a/meson.build b/meson.build index 0ecd34e..1475939 100644 --- a/meson.build +++ b/meson.build @@ -35,6 +35,8 @@ if buildtype == 'debug' or buildtype == 'debugoptimized' endif # Gather dependencies +common_incdirs = [include_directories(['contrib', 'src'])] + thread_dep = dependency('threads') m_dep = compiler.find_library('m', required : false) vk_dep = dependency('vulkan', required : false) @@ -45,7 +47,22 @@ if get_option('use_xlib') add_project_arguments(['-DRT_USE_XLIB'], language : 'c') endif -incdir = include_directories(['contrib', 'src']) +runtime_incdirs = common_incdirs +runtime_linkargs = [] +runtime_additional_sources = [] +runtime_cargs = [] +if get_option('build_asset_compiler') + runtime_cargs += ['-DRT_BUILD_ASSET_COMPILER'] + + # Shaderc for shaders + shaderc_include = include_directories('contrib/shaderc/libshaderc/include') + shaderc_libdir = 'NONE' + if host_machine.system() == 'windows' + shaderc_libdir = meson.project_source_root() / 'contrib/shaderc/build-win/libshaderc/Release' + endif + runtime_incdirs += shaderc_include + runtime_linkargs += ['-L'+shaderc_libdir, '-lshaderc_combined'] +endif runtime_lib = library('rt', # Project Sources @@ -91,7 +108,9 @@ runtime_lib = library('rt', 'contrib/xxhash/xxhash.c', 'contrib/lz4/lz4.c', dependencies : [thread_dep, m_dep, windowing_dep], - include_directories : incdir, + include_directories : runtime_incdirs, + link_args : runtime_linkargs, + c_args : runtime_cargs, c_pch : 'pch/rt_pch.h') @@ -120,7 +139,7 @@ if vk_dep.found() 'contrib/volk/volk.h', 'contrib/volk/volk.c', dependencies : [m_dep, vk_inc_dep, windowing_dep], - include_directories : incdir, + include_directories : common_incdirs, link_with : [runtime_lib], c_pch : 'pch/vk_pch.h', c_args : platform_defs) @@ -128,66 +147,60 @@ if vk_dep.found() static_renderer_lib = vk_renderer_lib endif -shaderc_include = include_directories('contrib/shaderc/libshaderc/include') -shaderc_libdir = 'NONE' -if host_machine.system() == 'windows' - shaderc_libdir = meson.project_source_root() / 'contrib/shaderc/build-win/libshaderc/Release' -endif - # Handle linking against both runtime and renderer if we build static libs -runtime_link_libs = [] +engine_link_libs = [] if get_option('default_library') == 'static' - runtime_link_libs = [runtime_lib, static_renderer_lib] + engine_link_libs = [runtime_lib, static_renderer_lib] else - runtime_link_libs = [runtime_lib] + engine_link_libs = [runtime_lib] endif # Asset Compiler Tool -executable('assetc', - 'src/tools/assetc/assetmeta.h', - 'src/tools/assetc/assetsettings.h', - 'src/tools/assetc/dependency_tracking.h', - 'src/tools/assetc/description_parser.h', - 'src/tools/assetc/options.h', - 'src/tools/assetc/packages.h', - 'src/tools/assetc/processing.h', - 'src/tools/assetc/processing_flags.h', - 'src/tools/assetc/utils.h', - - 'src/tools/assetc/assetc.c', - 'src/tools/assetc/assetmeta.c', - 'src/tools/assetc/assetsettings.c', - 'src/tools/assetc/dependency_tracking.c', - 'src/tools/assetc/description_parser.c', - 'src/tools/assetc/discovery.c', - 'src/tools/assetc/packages.c', - 'src/tools/assetc/pipeline_processor.c', - 'src/tools/assetc/processor.c', - 'src/tools/assetc/shader_processor.c', - 'src/tools/assetc/uidtable.c', - 'src/tools/assetc/utils.c', - - # Contrib sources - 'contrib/xxhash/xxhash.c', - 'contrib/lz4/lz4.c', - include_directories : [incdir, shaderc_include], - dependencies : [], - link_with : runtime_link_libs, - link_args : ['-L'+shaderc_libdir, '-lshaderc_combined'], - win_subsystem : 'console') +#executable('assetc', +# 'src/tools/assetc/assetmeta.h', +# 'src/tools/assetc/assetsettings.h', +# 'src/tools/assetc/dependency_tracking.h', +# 'src/tools/assetc/description_parser.h', +# 'src/tools/assetc/options.h', +# 'src/tools/assetc/packages.h', +# 'src/tools/assetc/processing.h', +# 'src/tools/assetc/processing_flags.h', +# 'src/tools/assetc/utils.h', +# +# 'src/tools/assetc/assetc.c', +# 'src/tools/assetc/assetmeta.c', +# 'src/tools/assetc/assetsettings.c', +# 'src/tools/assetc/dependency_tracking.c', +# 'src/tools/assetc/description_parser.c', +# 'src/tools/assetc/discovery.c', +# 'src/tools/assetc/packages.c', +# 'src/tools/assetc/pipeline_processor.c', +# 'src/tools/assetc/processor.c', +# 'src/tools/assetc/shader_processor.c', +# 'src/tools/assetc/uidtable.c', +# 'src/tools/assetc/utils.c', +# +# # Contrib sources +# 'contrib/xxhash/xxhash.c', +# 'contrib/lz4/lz4.c', +# include_directories : [incdir, shaderc_include], +# dependencies : [], +# link_with : engine_link_libs, +# link_args : ['-L'+shaderc_libdir, '-lshaderc_combined'], +# win_subsystem : 'console') # Game executable('voyage', 'src/game/voyage.c', - include_directories : incdir, - link_with : runtime_link_libs, + include_directories : common_incdirs, + link_with : engine_link_libs, win_subsystem : 'windows') # Unit Tests rttest_exe = executable('rttest', 'src/tests/rttest.c', - link_with : runtime_link_libs, - include_directories : incdir, + link_with : engine_link_libs, + include_directories : common_incdirs, win_subsystem : 'console') test('runtime test', rttest_exe) diff --git a/meson_options.txt b/meson_options.txt index 5b10009..6ce73ff 120000 --- a/meson_options.txt +++ b/meson_options.txt @@ -1,2 +1,3 @@ option('use_xlib', type : 'boolean', value : false, description : 'Use Xlib for window creation under linux') -option('error_report_debugbreak', type : 'boolean', value : true, description : 'Debugbreak in vyReportError') +option('error_report_debugbreak', type : 'boolean', value : true, description : 'Debugbreak in ReportError') +option('build_asset_compiler', type : 'boolean', value : true, description : 'Enables or disables the asset compiler inside runtime.')