Added the initial Windows meson.build. Windows Meson is having problems running, so we'll have to test this later.

This commit is contained in:
Pietro Gagliardi 2019-03-23 22:28:17 -04:00
parent 5e557d61b3
commit 2be9a4f3a3
3 changed files with 94 additions and 19 deletions

View File

@ -61,21 +61,12 @@ libui_mode = get_option('default_library')
if libui_mode == 'both' if libui_mode == 'both'
error('sorry, but libui does not support building both shared and static libraries at the same time, because Windows resource file rules differ between the two') error('sorry, but libui does not support building both shared and static libraries at the same time, because Windows resource file rules differ between the two')
endif endif
if libui_OS == 'windows' and libui_mode == 'shared' and not libui_MSVC
error('sorry, but libui currently does not support building a shared library with MinGW; use --default_library=static instead')
endif
# TODO there has to be a better way to specify this # TODO there has to be a better way to specify this
libui_buildtype = get_option('buildtype') libui_buildtype = get_option('buildtype')
libui_is_debug = libui_buildtype == 'debug' or libui_buildtype == 'debugoptimized' libui_is_debug = libui_buildtype == 'debug' or libui_buildtype == 'debugoptimized'
libui_deps = [] if libui_OS == 'darwin'
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 see if there's a more direct way to set this # TODO see if there's a more direct way to set this
libui_macosx_version_min = '-mmacosx-version-min=10.8' libui_macosx_version_min = '-mmacosx-version-min=10.8'
add_project_arguments(libui_macosx_version_min, add_project_arguments(libui_macosx_version_min,
@ -83,7 +74,6 @@ elif libui_OS == 'darwin'
language: ['c', 'cpp', 'objc']) language: ['c', 'cpp', 'objc'])
add_project_link_arguments(libui_macosx_version_min, add_project_link_arguments(libui_macosx_version_min,
language: ['c', 'cpp', 'objc']) language: ['c', 'cpp', 'objc'])
else
endif endif
# TODO see if there's a more direct way to set any of these # TODO see if there's a more direct way to set any of these
@ -131,9 +121,9 @@ endif
libui_sources = [] libui_sources = []
libui_base_include_directories = [include_directories('.')] libui_base_include_directories = [include_directories('.')]
libui_include_directories = libui_base_include_directories libui_include_directories = libui_base_include_directories
# TODO make this not += libui_deps = []
libui_deps += [] libui_soversion = ''
libui_extra_libs = [] libui_rpath = ''
subdir('common') subdir('common')
if libui_OS == 'windows' if libui_OS == 'windows'
subdir('windows') subdir('windows')

View File

@ -1,10 +1,5 @@
# 23 march 2019 # 23 march 2019
# TODO
#if(WIN32)
# set(_TEST_RESOURCES_RC resources.rc)
#endif()
libui_test_sources = [ libui_test_sources = [
'drawtests.c', 'drawtests.c',
'images.c', 'images.c',
@ -31,6 +26,9 @@ libui_test_sources = [
'page16.c', 'page16.c',
'spaced.c', 'spaced.c',
] ]
if libui_OS == 'windows' and libui_mode == 'static'
libui_test_sources += ['resources.rc']
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???? # 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, executable('tester', libui_test_sources,

87
windows/meson.build Normal file
View File

@ -0,0 +1,87 @@
# 23 march 2019
libui_sources += [
'windows/alloc.cpp',
'windows/area.cpp',
'windows/areadraw.cpp',
'windows/areaevents.cpp',
'windows/areascroll.cpp',
'windows/areautil.cpp',
'windows/attrstr.cpp',
'windows/box.cpp',
'windows/button.cpp',
'windows/checkbox.cpp',
'windows/colorbutton.cpp',
'windows/colordialog.cpp',
'windows/combobox.cpp',
'windows/container.cpp',
'windows/control.cpp',
'windows/d2dscratch.cpp',
'windows/datetimepicker.cpp',
'windows/debug.cpp',
'windows/draw.cpp',
'windows/drawmatrix.cpp',
'windows/drawpath.cpp',
'windows/drawtext.cpp',
'windows/dwrite.cpp',
'windows/editablecombo.cpp',
'windows/entry.cpp',
'windows/events.cpp',
'windows/fontbutton.cpp',
'windows/fontdialog.cpp',
'windows/fontmatch.cpp',
'windows/form.cpp',
'windows/graphemes.cpp',
'windows/grid.cpp',
'windows/group.cpp',
'windows/image.cpp',
'windows/init.cpp',
'windows/label.cpp',
'windows/main.cpp',
'windows/menu.cpp',
'windows/multilineentry.cpp',
'windows/opentype.cpp',
'windows/parent.cpp',
'windows/progressbar.cpp',
'windows/radiobuttons.cpp',
'windows/separator.cpp',
'windows/sizing.cpp',
'windows/slider.cpp',
'windows/spinbox.cpp',
'windows/stddialogs.cpp',
'windows/tab.cpp',
'windows/table.cpp',
'windows/tabledispinfo.cpp',
'windows/tabledraw.cpp',
'windows/tableediting.cpp',
'windows/tablemetrics.cpp',
'windows/tabpage.cpp',
'windows/text.cpp',
'windows/utf16.cpp',
'windows/utilwin.cpp',
'windows/window.cpp',
'windows/winpublic.cpp',
'windows/winutil.cpp',
]
# resources.rc only contains the libui manifest.
# For a DLL, we have to include this directly, so we do so.
# Windows won't link resources in static libraries, so including this would have no effect.
# In those cases, we just need them to include the manifest with the executable (or link it directly into the output executable themselves); they can also customize the manifest as they see fit (assuming nothing breaks in the process).
# TODO make sure this gets added to both binary-only archives and install rules in this case
if libui_mode == 'shared'
libui_sources += ['windows/resources.rc']
endif
libui_include_directories += [include_directories('.')]
libui_winlibs = 'user32 kernel32 gdi32 comctl32 uxtheme msimg32 comdlg32 d2d1 dwrite ole32 oleaut32 oleacc uuid windowscodecs'.split(' ')
for lib in libui_winlibs
libui_dep += [
meson.get_compiler('cpp').find_library(lib,
required: true),
]
endfor
if libui_OS == 'windows' and libui_mode == 'shared' and not libui_MSVC
error('Sorry, but libui for Windows can currently only be built as a static library with MinGW. You will need to either build as a static library or switch to MSVC.')
endif