diff --git a/meson.build b/meson.build index 92aa49f9..31cf125f 100644 --- a/meson.build +++ b/meson.build @@ -42,13 +42,15 @@ if libui_OS == 'windows' and libui_mode == 'shared' and not libui_MSVC endif libui_deps = [] -libui_libversion = '' +libui_soversion = '' libui_rpath = '' if libui_OS == 'windows' # TODO c_winlibs and cpp_winlibs are the windows libraries + # user32 kernel32 gdi32 comctl32 uxtheme msimg32 comdlg32 d2d1 dwrite ole32 oleaut32 oleacc uuid windowscodecs elif libui_OS == 'darwin' # TODO libraries - libui_libversion = 'A' + # "-framework Foundation" "-framework AppKit" + libui_soversion = 'A' # the / is required by some older versions of OS X libui_rpath = '@executable_path/' # TODO min version 10.8 @@ -57,10 +59,45 @@ else version: '>=3.10.0', required: true) libui_deps += [gtk] - libui_libversion = '0' + libui_soversion = '0' libui_rpath = '$ORIGIN' endif +if libui_MSVC + # TODO subsystem version + + # TODO -Wno-switch equivalent + # TODO /sdl turns C4996 into an ERROR + # don't use /analyze; that requires us to write annotations everywhere + # TODO undecided flags from qo? + # the RTC flags are only supplied in debug builds because they are only supposed to be used by debug builds (see "This is because run-time error checks are not valid in a release (optimized) build." in https://docs.microsoft.com/cpp/build/reference/rtc-run-time-error-checks) + # /RTCc is not supplied because it's discouraged as of VS2015; see https://www.reddit.com/r/cpp/comments/46mhne/rtcc_rejects_conformant_code_with_visual_c_2015/d06auq5 + # /EHsc is to shut the compiler up in some cases + # TODO add these compiler flags (assuming meson doesn't provide an alternate method for these, which I know it does for EHsc): + # /wd4100 (equivalent of -Wno-unused-parameter) + # /bigobj /nologo + # $<$:/RTC1 /RTCs /RTCu> + # /EHsc + + # TODO add these linker flags (for each: maybe? depends on whether meson does this itself) + # /LARGEADDRESSAWARE + # /NOLOGO + # /INCREMENTAL:NO + # /MANIFEST:NO +else + # TODO add these C/C++ compiler options + # -Wno-unused-parameter + # -Wno-switch + + if libui_OS == 'windows' + # don't require shipping the MinGW-w64 DLLs + # TODO add these to the linker options + # -static + # -static-libgcc + # -static-libstdc++ + endif +endif + libui_sources = [] libui_extra_libs = [] subdir('common') @@ -79,7 +116,8 @@ libui_libui = library('ui', libui_sources, build_rpath: libui_rpath, install_rpath: libui_rpath, install: true, - gnu_symbol_visibility: 'hidden') + gnu_symbol_visibility: 'hidden', + soversion: libui_soversion) install_headers('ui.h') # TODO test