Decided to just use add_project_(link_)arguments() for now, and set up the macOS build for testing.

This commit is contained in:
Pietro Gagliardi 2019-03-23 15:42:42 -04:00
parent 035139a1e9
commit 253ce9a3cc
3 changed files with 108 additions and 18 deletions

19
common/meson.build Normal file
View File

@ -0,0 +1,19 @@
# 23 march 2019
libui_sources += [
'common/attribute.c',
'common/attrlist.c',
'common/attrstr.c',
'common/areaevents.c',
'common/control.c',
'common/debug.c',
'common/matrix.c',
'common/opentype.c',
'common/shouldquit.c',
'common/tablemodel.c',
'common/tablevalue.c',
'common/userbugs.c',
'common/utf.c',
]
libui_include_directories += [include_directory('.')]

58
darwin/meson.build Normal file
View File

@ -0,0 +1,58 @@
# 23 march 2019
add_languages('objc',
required: true)
libui_sources += [
'darwin/aat.m',
'darwin/alloc.m',
'darwin/area.m',
'darwin/areaevents.m',
'darwin/attrstr.m',
'darwin/autolayout.m',
'darwin/box.m',
'darwin/button.m',
'darwin/checkbox.m',
'darwin/colorbutton.m',
'darwin/combobox.m',
'darwin/control.m',
'darwin/datetimepicker.m',
'darwin/debug.m',
'darwin/draw.m',
'darwin/drawtext.m',
'darwin/editablecombo.m',
'darwin/entry.m',
'darwin/fontbutton.m',
'darwin/fontmatch.m',
'darwin/fonttraits.m',
'darwin/fontvariation.m',
'darwin/form.m',
'darwin/future.m',
'darwin/graphemes.m',
'darwin/grid.m',
'darwin/group.m',
'darwin/image.m',
'darwin/label.m',
'darwin/main.m',
'darwin/map.m',
'darwin/menu.m',
'darwin/multilineentry.m',
'darwin/opentype.m',
'darwin/progressbar.m',
'darwin/radiobuttons.m',
'darwin/scrollview.m',
'darwin/separator.m',
'darwin/slider.m',
'darwin/spinbox.m',
'darwin/stddialogs.m',
'darwin/tab.m',
'darwin/table.m',
'darwin/tablecolumn.m',
'darwin/text.m',
'darwin/undocumented.m',
'darwin/util.m',
'darwin/window.m',
'darwin/winmoveresize.m',
]
libui_include_directories += [include_directory('.')]

View File

@ -32,8 +32,7 @@ project('libui', 'c',
default_options: libui_default_options,
license: 'MIT')
# TODO:
# - add add_language('c++') in windows/meson.build and examples/meson.build:cpp-multithread
# - add add_language('objc') in darwin/meson.build
# - add add_languages('c++') in windows/meson.build and examples/meson.build:cpp-multithread
foreach name, value : libui_forced_options
actual = '@0@'.format(get_option(name))
@ -53,6 +52,10 @@ 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
libui_buildtype = get_option('buildtype')
libui_is_debug = libui_buildtype == 'debug' or libui_buildtype == 'debugoptimized'
libui_deps = []
libui_soversion = ''
libui_rpath = ''
@ -66,7 +69,11 @@ elif libui_OS == 'darwin'
libui_soversion = 'A'
# the / is required by some older versions of OS X
libui_rpath = '@executable_path/'
# TODO min version 10.8
# TODO see if there's a more direct way to set this
libui_macosx_version_min = '-mmacosx-version-min=10.8'
add_project_arguments(libui_macosx_version_min)
add_project_link_arguments(libui_macosx_version_min)
else
libui_deps += [dependency('gtk+-3.0',
version: '>=3.10.0',
@ -76,6 +83,7 @@ else
libui_rpath = '$ORIGIN'
endif
# TODO see if there's a more direct way to set any of these
if libui_MSVC
# TODO subsystem version
@ -86,30 +94,34 @@ if libui_MSVC
# 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
# 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
# $<$<CONFIG:Debug>:/RTC1 /RTCs /RTCu>
add_project_arguments(
'/wd4100',
'/bigobj', '/nologo')
if libui_is_debug
add_project_arguments('/RTC1', '/RTCs', '/RTCu')
endif
# TODO add these linker flags (for each: maybe? depends on whether meson does this itself)
# /LARGEADDRESSAWARE
# /NOLOGO
# /INCREMENTAL:NO
# /MANIFEST:NO
add_project_link_arguments(
'/LARGEADDRESSAWARE',
'/NOLOGO',
'/INCREMENTAL:NO',
'/MANIFEST:NO')
else
# TODO add these C/C++ compiler options
# -Wno-unused-parameter
# -Wno-switch
add_project_arguments(
'-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++
add_project_link_arguments(
'-static',
'-static-libgcc',
'-static-libstdc++')
endif
endif
libui_sources = []
libui_include_directories = [include_directory('.')]
libui_extra_libs = []
subdir('common')
if libui_OS == 'windows'
@ -123,6 +135,7 @@ else
install_headers('ui_unix.h')
endif
libui_libui = library('ui', libui_sources,
include_directories: libui_include_directories,
dependencies: libui_deps,
build_rpath: libui_rpath,
install_rpath: libui_rpath,