diff --git a/meson.build b/meson.build index 2f887045..23d36405 100644 --- a/meson.build +++ b/meson.build @@ -53,7 +53,7 @@ libui_forced_options = { } foreach name, value : libui_forced_options # TODO why does meson need this guard? why aren't all options defined regardless of target?! - if not (name == 'cpp_eh' and not libui_MSVC) and not (name == 'c_std' and libui_MSVC) + if not ((name == 'c_winlibs' or name == 'cpp_eh' or name == 'cpp_winlibs') and not libui_MSVC) and not (name == 'c_std' and libui_MSVC) actual = '@0@'.format(get_option(name)) if actual != value error('sorry, but libui requires that option ' + name + ' has the default value ' + value) @@ -122,6 +122,13 @@ else endif endif +libui_manifest_args = [] +if libui_mode == 'static' + add_project_arguments('-D_UI_STATIC', + language: ['c', 'cpp', 'objc']) + libui_manifest_args = ['-D_UI_STATIC'] +endif + libui_sources = [] libui_base_include_directories = [include_directories('.')] libui_include_directories = libui_base_include_directories @@ -139,6 +146,7 @@ else subdir('unix') install_headers('ui_unix.h') endif +# TODO make sure the name is always libui.(something) regardless of the OS or build type libui_libui = library('ui', libui_sources, include_directories: libui_include_directories, dependencies: libui_deps, diff --git a/test/meson.build b/test/meson.build index 30a994b0..b954b722 100644 --- a/test/meson.build +++ b/test/meson.build @@ -26,13 +26,25 @@ libui_test_sources = [ 'page16.c', 'spaced.c', ] -if libui_OS == 'windows' and libui_mode == 'static' - libui_test_sources += ['resources.rc'] + +libui_test_include_directories = libui_base_include_directories + [include_directories('.')] + +if libui_OS == 'windows' + libui_test_manifest = 'test.manifest' + if libui_mode == 'static' + libui_test_manifest = 'test.static.manifest' + endif + libui_test_sources += [ + windows.compile_resources('resources.rc', + args: libui_manifest_args, + depend_files: [libui_test_manifest], + include_directories: libui_test_include_directories), + ] endif # TODO meson doesn't let us name this target test, but also doesn't seem to provide a way to override the executable name???? executable('tester', libui_test_sources, - include_directories: libui_base_include_directories + [include_directories('.')], + include_directories: libui_test_include_directories, dependencies: libui_binary_deps, link_with: libui_libui, build_by_default: false, diff --git a/windows/meson.build b/windows/meson.build index db6c971a..bab21571 100644 --- a/windows/meson.build +++ b/windows/meson.build @@ -77,6 +77,7 @@ if libui_mode == 'shared' libui_sources += [ # TODO settle the path thing once and for all windows.compile_resources('resources.rc', + args: libui_manifest_args, depend_files: ['libui.manifest'], include_directories: libui_include_directories), ]