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, default_options: libui_default_options,
license: 'MIT') license: 'MIT')
# TODO: # TODO:
# - add add_language('c++') in windows/meson.build and examples/meson.build:cpp-multithread # - add add_languages('c++') in windows/meson.build and examples/meson.build:cpp-multithread
# - add add_language('objc') in darwin/meson.build
foreach name, value : libui_forced_options foreach name, value : libui_forced_options
actual = '@0@'.format(get_option(name)) 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') error('sorry, but libui currently does not support building a shared library with MinGW; use --default_library=static instead')
endif 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_deps = []
libui_soversion = '' libui_soversion = ''
libui_rpath = '' libui_rpath = ''
@ -66,7 +69,11 @@ elif libui_OS == 'darwin'
libui_soversion = 'A' libui_soversion = 'A'
# the / is required by some older versions of OS X # the / is required by some older versions of OS X
libui_rpath = '@executable_path/' 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 else
libui_deps += [dependency('gtk+-3.0', libui_deps += [dependency('gtk+-3.0',
version: '>=3.10.0', version: '>=3.10.0',
@ -76,6 +83,7 @@ else
libui_rpath = '$ORIGIN' libui_rpath = '$ORIGIN'
endif endif
# TODO see if there's a more direct way to set any of these
if libui_MSVC if libui_MSVC
# TODO subsystem version # 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) # 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 # /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): # 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) add_project_arguments(
# /bigobj /nologo '/wd4100',
# $<$<CONFIG:Debug>:/RTC1 /RTCs /RTCu> '/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) add_project_link_arguments(
# /LARGEADDRESSAWARE '/LARGEADDRESSAWARE',
# /NOLOGO '/NOLOGO',
# /INCREMENTAL:NO '/INCREMENTAL:NO',
# /MANIFEST:NO '/MANIFEST:NO')
else else
# TODO add these C/C++ compiler options add_project_arguments(
# -Wno-unused-parameter '-Wno-unused-parameter',
# -Wno-switch '-Wno-switch')
if libui_OS == 'windows' if libui_OS == 'windows'
# don't require shipping the MinGW-w64 DLLs # don't require shipping the MinGW-w64 DLLs
# TODO add these to the linker options add_project_link_arguments(
# -static '-static',
# -static-libgcc '-static-libgcc',
# -static-libstdc++ '-static-libstdc++')
endif endif
endif endif
libui_sources = [] libui_sources = []
libui_include_directories = [include_directory('.')]
libui_extra_libs = [] libui_extra_libs = []
subdir('common') subdir('common')
if libui_OS == 'windows' if libui_OS == 'windows'
@ -123,6 +135,7 @@ else
install_headers('ui_unix.h') install_headers('ui_unix.h')
endif endif
libui_libui = library('ui', libui_sources, libui_libui = library('ui', libui_sources,
include_directories: libui_include_directories,
dependencies: libui_deps, dependencies: libui_deps,
build_rpath: libui_rpath, build_rpath: libui_rpath,
install_rpath: libui_rpath, install_rpath: libui_rpath,