2017-11-25 20:45:11 +01:00
|
|
|
project('taisei', 'c',
|
|
|
|
license : 'MIT',
|
2019-01-24 21:21:08 +01:00
|
|
|
version : 'v1.3-dev',
|
2018-05-15 02:33:38 +02:00
|
|
|
meson_version : '>=0.45.0',
|
2017-11-25 20:45:11 +01:00
|
|
|
default_options : [
|
2018-06-19 11:51:24 +02:00
|
|
|
'c_std=c11',
|
2017-11-25 20:45:11 +01:00
|
|
|
|
|
|
|
# You may want to change these for a debug build dir
|
|
|
|
'buildtype=release',
|
|
|
|
'strip=true',
|
|
|
|
'b_lto=true',
|
2019-01-24 21:21:08 +01:00
|
|
|
'b_ndebug=if-release',
|
2017-11-25 20:45:11 +01:00
|
|
|
]
|
|
|
|
)
|
2017-11-12 01:28:30 +01:00
|
|
|
|
|
|
|
cc = meson.get_compiler('c')
|
2017-11-27 14:27:32 +01:00
|
|
|
python3 = import('python3').find_python()
|
2019-01-24 21:21:08 +01:00
|
|
|
macos_app_bundle = get_option('macos_bundle') and host_machine.system() == 'darwin'
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2019-01-24 21:21:08 +01:00
|
|
|
subdir('scripts')
|
2017-11-25 20:45:11 +01:00
|
|
|
|
2019-01-24 21:21:08 +01:00
|
|
|
config = configuration_data()
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2019-01-24 21:21:08 +01:00
|
|
|
taisei_c_args = cc.get_supported_arguments(
|
|
|
|
'-Wall',
|
|
|
|
'-Wpedantic',
|
2019-02-02 12:25:06 +01:00
|
|
|
'-Werror=assume',
|
2019-01-24 21:21:08 +01:00
|
|
|
'-Werror=implicit-function-declaration',
|
|
|
|
|
|
|
|
#
|
|
|
|
# Keep the rest sorted
|
|
|
|
#
|
|
|
|
|
|
|
|
'-Wabsolute-value',
|
|
|
|
'-Wcast-align',
|
|
|
|
'-Wcast-align=strict',
|
|
|
|
'-Wclobbered',
|
|
|
|
'-Wduplicated-branches',
|
|
|
|
'-Wduplicated-cond',
|
|
|
|
'-Wfloat-overflow-conversion',
|
|
|
|
'-Wfloat-zero-conversion',
|
|
|
|
'-Wfor-loop-analysis',
|
|
|
|
'-Wformat-pedantic',
|
|
|
|
'-Wformat-security',
|
|
|
|
'-Wgcc-compat',
|
|
|
|
'-Wgnu',
|
|
|
|
'-Wignored-qualifiers',
|
|
|
|
'-Wimplicit-fallthrough',
|
|
|
|
'-Winit-self',
|
|
|
|
'-Wlogical-op',
|
|
|
|
'-Wmissing-prototypes',
|
Some compatibility fixes for Elbrus compiler (and others based on EDG front end) (#157)
* Reduce alignment to 16 due to stack variables alignment
On some archs (e.g. elbrus) there is no possibility to align
variables on stack by more that 16 bytes.
* Added check for -Wno-typedef-redefinition
In C11, there is legal to redefine typedef with the same type,
but some compilers like elbrus's lcc and, probably, intel's icc
generate a warning about that. So we disable it.
* Typo fix
* Fix __builtin_unreachable() warning on some frontends like EDG
* Added check for __attribute__((designated_init))
It doesn't work for elbrus'c lcc and clang; but clang does not
generate warning by default, but we still disable it just in case.
* A hack to avoid -Wtype-limits for compilers with unsigned enums
* Rewritten unreachable __builtin_unreachable() behavior.
According to https://bugs.llvm.org/show_bug.cgi?id=13910,
old clang versions also suffer from this issue along with lcc.
And also this warning option is removed from gcc since 4.5.0,
and it's likely there is no unreachable code analysis at all:
https://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Warning-Options.html
* Fixed unneeded stray UNREACHABLE which caused warnings
* Removed alignas() which is unneeded after lowering alignment requirements
* Removed a hack of -Wunreachable-code disabling on certain compilers
Actually, there was a wrong opinion that most of unreachable code
warnings are produced by __builtin_unreachable() itself,
not the certain use of it. After commit 36493d3, it is finally
figured out that it wasn't the case.
* Added dummy element to a struct in a test for designated_init
This test will enexpectedly fail when GNU extensions are not available
2019-02-07 09:11:13 +01:00
|
|
|
'-Wno-typedef-redefinition',
|
2019-01-24 21:21:08 +01:00
|
|
|
'-Wno-long-long',
|
|
|
|
'-Wnull-dereference',
|
|
|
|
'-Wparentheses',
|
|
|
|
'-Wshadow=compatible-local',
|
|
|
|
'-Wsometimes-uninitialized',
|
|
|
|
'-Wstrict-prototypes',
|
|
|
|
'-Wtype-limits',
|
|
|
|
'-Wunreachable-code',
|
Some compatibility fixes for Elbrus compiler (and others based on EDG front end) (#157)
* Reduce alignment to 16 due to stack variables alignment
On some archs (e.g. elbrus) there is no possibility to align
variables on stack by more that 16 bytes.
* Added check for -Wno-typedef-redefinition
In C11, there is legal to redefine typedef with the same type,
but some compilers like elbrus's lcc and, probably, intel's icc
generate a warning about that. So we disable it.
* Typo fix
* Fix __builtin_unreachable() warning on some frontends like EDG
* Added check for __attribute__((designated_init))
It doesn't work for elbrus'c lcc and clang; but clang does not
generate warning by default, but we still disable it just in case.
* A hack to avoid -Wtype-limits for compilers with unsigned enums
* Rewritten unreachable __builtin_unreachable() behavior.
According to https://bugs.llvm.org/show_bug.cgi?id=13910,
old clang versions also suffer from this issue along with lcc.
And also this warning option is removed from gcc since 4.5.0,
and it's likely there is no unreachable code analysis at all:
https://gcc.gnu.org/onlinedocs/gcc-4.5.0/gcc/Warning-Options.html
* Fixed unneeded stray UNREACHABLE which caused warnings
* Removed alignas() which is unneeded after lowering alignment requirements
* Removed a hack of -Wunreachable-code disabling on certain compilers
Actually, there was a wrong opinion that most of unreachable code
warnings are produced by __builtin_unreachable() itself,
not the certain use of it. After commit 36493d3, it is finally
figured out that it wasn't the case.
* Added dummy element to a struct in a test for designated_init
This test will enexpectedly fail when GNU extensions are not available
2019-02-07 09:11:13 +01:00
|
|
|
'-Wunneeded-internal-declaration',
|
2019-01-24 21:21:08 +01:00
|
|
|
'-Wunreachable-code-loop-increment',
|
|
|
|
)
|
2017-11-25 20:45:11 +01:00
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
static = get_option('static')
|
|
|
|
|
2018-10-19 01:51:59 +02:00
|
|
|
dep_freetype = dependency('freetype2', required : true, static : static)
|
|
|
|
dep_png = dependency('libpng', version : '>=1.5', required : true, static : static)
|
|
|
|
dep_sdl2 = dependency('sdl2', version : '>=2.0.5', required : true, static : static)
|
|
|
|
dep_sdl2_mixer = dependency('SDL2_mixer', required : false, static : static)
|
|
|
|
dep_webp = dependency('libwebp', version : '>=0.5', required : false, static : static)
|
|
|
|
dep_webpdecoder = dependency('libwebpdecoder', version : '>=0.5', required : false, static : static)
|
|
|
|
dep_zip = dependency('libzip', version : '>=1.0', required : false, static : static)
|
|
|
|
dep_zlib = dependency('zlib', required : true, static : static)
|
2018-10-18 23:12:46 +02:00
|
|
|
|
2018-10-19 01:51:59 +02:00
|
|
|
dep_m = cc.find_library('m', required : false)
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2018-06-30 22:11:54 +02:00
|
|
|
dep_cglm = subproject('cglm').get_variable('cglm_dep')
|
|
|
|
dep_glad = subproject('glad').get_variable('glad_dep')
|
|
|
|
|
2018-04-12 16:08:48 +02:00
|
|
|
taisei_deps = [
|
2018-10-18 23:12:46 +02:00
|
|
|
dep_cglm,
|
2018-06-29 23:36:51 +02:00
|
|
|
dep_freetype,
|
2018-04-12 16:08:48 +02:00
|
|
|
dep_m,
|
2018-10-18 23:12:46 +02:00
|
|
|
dep_png,
|
|
|
|
dep_sdl2,
|
|
|
|
dep_zlib,
|
2018-06-30 22:11:54 +02:00
|
|
|
# don't add glad here
|
2018-04-12 16:08:48 +02:00
|
|
|
]
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2018-10-19 01:51:59 +02:00
|
|
|
if dep_webpdecoder.found()
|
|
|
|
taisei_deps += dep_webpdecoder
|
|
|
|
elif dep_webp.found()
|
|
|
|
warning('libwebpdecoder not found, will link against libwebp instead')
|
|
|
|
taisei_deps += dep_webp
|
|
|
|
else
|
|
|
|
error('libwebpdecoder or libwebp is required, neither found')
|
|
|
|
endif
|
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
if host_machine.system() == 'windows'
|
|
|
|
taisei_deps += cc.find_library('shlwapi')
|
|
|
|
endif
|
|
|
|
|
2019-01-24 21:21:08 +01:00
|
|
|
package_data = get_option('package_data')
|
|
|
|
enable_zip = get_option('enable_zip')
|
|
|
|
package_data = (package_data == 'auto' ? enable_zip : package_data == 'true')
|
|
|
|
|
|
|
|
if enable_zip
|
|
|
|
if not dep_zip.found()
|
|
|
|
error('ZIP support enabled but libzip not found')
|
|
|
|
endif
|
|
|
|
|
|
|
|
taisei_deps += dep_zip
|
|
|
|
endif
|
|
|
|
|
|
|
|
if package_data and not enable_zip
|
|
|
|
error('ZIP support must be enabled for data packaging to work')
|
|
|
|
endif
|
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
if dep_sdl2_mixer.found() and get_option('enable_audio') != 'false'
|
|
|
|
taisei_deps += dep_sdl2_mixer
|
|
|
|
elif get_option('enable_audio') == 'true'
|
|
|
|
error('Audio support enabled but SDL2_mixer not found')
|
|
|
|
endif
|
|
|
|
|
2017-11-25 20:45:11 +01:00
|
|
|
config.set('TAISEI_BUILDCONF_USE_ZIP', taisei_deps.contains(dep_zip))
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2017-11-25 20:45:11 +01:00
|
|
|
have_posix = cc.has_header_symbol('unistd.h', '_POSIX_VERSION')
|
|
|
|
have_vla = not cc.has_header_symbol('unistd.h', '__STDC_NO_VLA__')
|
|
|
|
have_complex = not cc.has_header_symbol('unistd.h', '__STDC_NO_COMPLEX__')
|
|
|
|
have_backtrace = cc.has_header_symbol('execinfo.h', 'backtrace')
|
2018-05-28 10:10:41 +02:00
|
|
|
have_timespec = cc.has_header_symbol('time.h', 'timespec_get')
|
2017-11-12 01:28:30 +01:00
|
|
|
|
|
|
|
if not (have_vla and have_complex)
|
|
|
|
error('Your C implementation needs to support complex numbers and variable-length arrays.')
|
|
|
|
endif
|
|
|
|
|
2018-05-28 10:10:41 +02:00
|
|
|
config.set('TAISEI_BUILDCONF_HAVE_TIMESPEC', have_timespec)
|
2019-01-09 04:25:10 +01:00
|
|
|
config.set('TAISEI_BUILDCONF_HAVE_INT128', cc.sizeof('__int128') == 16)
|
|
|
|
config.set('TAISEI_BUILDCONF_HAVE_LONG_DOUBLE', cc.sizeof('long double') > 8)
|
2018-05-28 10:10:41 +02:00
|
|
|
|
2017-11-27 14:27:32 +01:00
|
|
|
if macos_app_bundle
|
|
|
|
bundle_dir = 'Taisei.app'
|
|
|
|
datadir = join_paths(bundle_dir, 'Contents', 'Resources')
|
|
|
|
bindir = join_paths(bundle_dir, 'Contents', 'MacOS')
|
|
|
|
config.set('TAISEI_BUILDCONF_RELATIVE_DATA_PATH', true)
|
|
|
|
|
|
|
|
# arguments must be strings...
|
|
|
|
meson.add_install_script(
|
|
|
|
python3.path(),
|
|
|
|
join_paths(meson.source_root(), 'scripts', 'macos-install-dylibs.py'),
|
2019-01-24 21:21:08 +01:00
|
|
|
':'.join(meson.get_cross_property('macos_lib_path', [])),
|
|
|
|
':'.join(meson.get_cross_property('macos_tool_path', [])),
|
|
|
|
meson.get_cross_property('macos_tool_prefix', ''),
|
2017-11-27 14:27:32 +01:00
|
|
|
)
|
2017-11-12 01:28:30 +01:00
|
|
|
else
|
2017-11-27 14:27:32 +01:00
|
|
|
datadir = get_option('datadir')
|
|
|
|
|
|
|
|
if get_option('install_relative') == 'auto'
|
|
|
|
config.set('TAISEI_BUILDCONF_RELATIVE_DATA_PATH', host_machine.system() == 'windows')
|
|
|
|
else
|
|
|
|
config.set('TAISEI_BUILDCONF_RELATIVE_DATA_PATH', get_option('install_relative') == 'true')
|
|
|
|
endif
|
2017-12-21 05:52:25 +01:00
|
|
|
|
|
|
|
if config.get('TAISEI_BUILDCONF_RELATIVE_DATA_PATH')
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
bindir = '.'
|
2017-12-21 05:52:25 +01:00
|
|
|
else
|
|
|
|
bindir = get_option('bindir')
|
|
|
|
endif
|
2017-11-12 01:28:30 +01:00
|
|
|
endif
|
|
|
|
|
2017-11-28 14:46:28 +01:00
|
|
|
if get_option('install_freedesktop') == 'auto'
|
|
|
|
install_xdg = not config.get('TAISEI_BUILDCONF_RELATIVE_DATA_PATH')
|
|
|
|
else
|
|
|
|
install_xdg = get_option('install_freedesktop') == 'true'
|
|
|
|
endif
|
|
|
|
|
2017-11-25 20:45:11 +01:00
|
|
|
if config.get('TAISEI_BUILDCONF_RELATIVE_DATA_PATH')
|
2017-11-27 14:27:32 +01:00
|
|
|
data_path = 'data'
|
2017-11-28 14:46:28 +01:00
|
|
|
doc_path = ''
|
|
|
|
xdg_path = 'freedesktop.org'
|
2017-11-27 14:27:32 +01:00
|
|
|
|
2017-12-21 05:52:25 +01:00
|
|
|
# This is relative to SDL_GetBasePath()
|
|
|
|
config.set_quoted('TAISEI_BUILDCONF_DATA_PATH', data_path)
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2017-12-21 05:52:25 +01:00
|
|
|
if macos_app_bundle
|
2017-11-27 14:27:32 +01:00
|
|
|
# Actual installation path
|
|
|
|
data_path = join_paths(datadir, data_path)
|
2017-11-28 14:46:28 +01:00
|
|
|
|
|
|
|
# I don't know why would you do that, but more power to you
|
|
|
|
xdg_path = join_paths(datadir, xdg_path)
|
2017-11-12 01:28:30 +01:00
|
|
|
endif
|
|
|
|
else
|
2017-11-27 14:27:32 +01:00
|
|
|
data_path = join_paths(datadir, 'taisei')
|
|
|
|
config.set_quoted('TAISEI_BUILDCONF_DATA_PATH', join_paths(get_option('prefix'), data_path))
|
|
|
|
doc_path = join_paths(datadir, 'doc', 'taisei')
|
2017-12-21 04:49:44 +01:00
|
|
|
xdg_path = datadir
|
2017-11-12 01:28:30 +01:00
|
|
|
endif
|
|
|
|
|
2018-04-12 16:08:48 +02:00
|
|
|
is_debug_build = get_option('buildtype').startswith('debug')
|
2019-01-25 01:02:56 +01:00
|
|
|
is_developer_build = (get_option('developer') == 'auto' ? is_debug_build : get_option('developer') == 'true')
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2019-01-25 01:02:56 +01:00
|
|
|
config.set('TAISEI_BUILDCONF_DEVELOPER', is_developer_build)
|
2018-04-12 16:08:48 +02:00
|
|
|
config.set('TAISEI_BUILDCONF_LOG_ENABLE_BACKTRACE', is_debug_build and have_backtrace)
|
|
|
|
config.set('TAISEI_BUILDCONF_LOG_FATAL_MSGBOX', host_machine.system() == 'windows' or host_machine.system() == 'darwin')
|
2018-01-18 18:27:03 +01:00
|
|
|
config.set('TAISEI_BUILDCONF_DEBUG_OPENGL', get_option('debug_opengl'))
|
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
if host_machine.system() == 'windows'
|
2017-12-18 19:26:17 +01:00
|
|
|
custom_target('COPYING.txt',
|
2019-01-24 21:21:08 +01:00
|
|
|
command : [eolconv_command, host_eol_style, '@INPUT@', '@OUTPUT@'],
|
2017-12-18 19:26:17 +01:00
|
|
|
input : 'COPYING',
|
|
|
|
output : 'COPYING.txt',
|
|
|
|
install : true,
|
|
|
|
install_dir : doc_path
|
|
|
|
)
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
|
|
|
if angle_enabled
|
|
|
|
install_data(
|
|
|
|
get_option('angle_libgles'),
|
|
|
|
get_option('angle_libegl'),
|
|
|
|
install_dir : join_paths(bindir, 'ANGLE'),
|
|
|
|
)
|
|
|
|
endif
|
2017-11-12 01:28:30 +01:00
|
|
|
else
|
|
|
|
install_data('COPYING', install_dir : doc_path)
|
OpenGL ES 3.0 rendering backend (#148)
* First steps towards shader transpilation
Needs to be manually enabled via -Dshader_transpiler=true.
Requires shaderc. https://github.com/google/shaderc
Not yet functional due to missing SPIRV-Cross integration. SPIRV-Cross
currently does not have an official C API, and crossc is too minimal to
be useful. The current plan is to extend crossc and vendor it, while
also sending PRs upstream.
* Integrate crossc; shader transpilation for GLES now works
* fix leak
* gles30 backend now playable on Mesa with 3.2 context
Some rendering issues are present. Identified so far:
- Marisa's lasers are invisible
- Death effect looks wrong
Also, a small pixmap manipulation library has been written, and the
texture uploading API redesigned around it.
* fix marisa lasers in GLES (uniform name clashed with builtin)
* fix player death effect in GLES (another name clash)
* Dump ANGLE's translated shader code in debug log
* fix screenshots
* Drop support for triangle fans, switch to strips
Fans offer no advantage over strips, and they've been removed in D3D10+,
so ANGLE has to emulate them.
* crude workaround for an ANGLE bug
* Re-enable GL debug labels, fix an issue with them that affected ANGLE (but was always technically a bug)
* fix race condition in shaderc initialization
* New SDL_RWops interface for vertex buffers
* Optimize VBO streaming via buffering updates
Measurable performance improvement even with the main gl33 renderer,
drastic improvement with ANGLE.
* Fix the depth texture binding problem under ANGLE
Apparently it hates GL_DEPTH_COMPONENT16 for some reason. Sized internal
formats are not supported in GLES 2.0 anyway, so not using them is
probably a good idea.
* fix GLES2.0 segfault (the backend still doesn't work, though)
* dump GL extensions at info log level, not debug
* get around a Mesa bug; more correct texture format table for GLES2
* Correct GLES3 texture format table according to the spec
Not a Mesa bug after all
* require crossc>=1.5.0, fallback to subproject
* Request at least 8bit per color channel in GL backends
* Forbid lto for static windows builds with shader_transpiler=true
* fix edge case segfault
* Add basic ANGLE bundling support to the build system
Windows only, and no NSIS support yet
* Fix various windows-related build system and installer brokenness
* Disable gles backends by default
* update documentation
2018-10-02 00:36:10 +02:00
|
|
|
|
|
|
|
if angle_enabled
|
|
|
|
error('install_angle is only available for Windows targets at the moment')
|
|
|
|
endif
|
2017-11-12 01:28:30 +01:00
|
|
|
endif
|
|
|
|
|
2017-11-27 14:27:32 +01:00
|
|
|
systype = (have_posix ? 'POSIX (@0@)' : '@0@').format(host_machine.system())
|
|
|
|
systype = '@0@, @1@, @2@'.format(systype, host_machine.cpu_family(), host_machine.cpu())
|
|
|
|
|
2019-01-24 21:21:08 +01:00
|
|
|
if meson.is_cross_build()
|
|
|
|
systype = '@0@ (cross-compiling)'.format(systype)
|
|
|
|
endif
|
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
summary = '''
|
|
|
|
|
|
|
|
Summary:
|
2017-11-27 14:27:32 +01:00
|
|
|
Taisei version: @9@
|
|
|
|
|
2017-11-25 20:45:11 +01:00
|
|
|
System type: @0@
|
|
|
|
Audio enabled: @1@
|
|
|
|
Package data: @2@
|
2017-11-12 01:28:30 +01:00
|
|
|
|
|
|
|
Relative install paths: @3@
|
2017-11-25 20:45:11 +01:00
|
|
|
Prefix: @4@
|
|
|
|
Executables: @5@
|
|
|
|
Data: @6@
|
|
|
|
Documentation: @7@
|
2017-11-12 01:28:30 +01:00
|
|
|
|
2017-11-25 20:45:11 +01:00
|
|
|
Build type: @8@
|
2017-11-12 01:28:30 +01:00
|
|
|
'''.format(
|
|
|
|
systype,
|
|
|
|
taisei_deps.contains(dep_sdl2_mixer),
|
|
|
|
taisei_deps.contains(dep_zip),
|
2017-11-25 20:45:11 +01:00
|
|
|
config.get('TAISEI_BUILDCONF_RELATIVE_DATA_PATH'),
|
2017-11-12 01:28:30 +01:00
|
|
|
get_option('prefix'),
|
2017-11-28 14:46:28 +01:00
|
|
|
|
|
|
|
# the $ is intentional
|
|
|
|
join_paths('$prefix', bindir),
|
|
|
|
join_paths('$prefix', data_path),
|
|
|
|
join_paths('$prefix', doc_path),
|
|
|
|
|
2017-11-27 14:27:32 +01:00
|
|
|
get_option('buildtype'),
|
|
|
|
taisei_version_string
|
2017-11-12 01:28:30 +01:00
|
|
|
)
|
|
|
|
|
2018-04-12 16:08:48 +02:00
|
|
|
version_deps = []
|
|
|
|
|
2017-11-12 01:28:30 +01:00
|
|
|
subdir('misc')
|
2018-04-12 16:08:48 +02:00
|
|
|
subdir('external')
|
|
|
|
subdir('resources')
|
2017-11-12 01:28:30 +01:00
|
|
|
subdir('doc')
|
|
|
|
subdir('xdg')
|
2018-04-12 16:08:48 +02:00
|
|
|
subdir('atlas')
|
|
|
|
subdir('src')
|
2017-11-25 20:45:11 +01:00
|
|
|
|
|
|
|
message(summary)
|