Provide three levels of install support
Namely: no, yes, and yes and ask at startup. The install_check option is thus replaced by the can_install option. -Dinstall_check=true maps to -Dcan_install=yes_check, while -Dinstall_check=false maps to -Dcan_install=yes. -Dcan_install=no is new and is recommended for downstream packaging, where -Dinstall_check=false was historically used. Also improve error messages about bad configuration here and there and scatter configuration code in subdirectories, where they can be closer to their areas of effect.
This commit is contained in:
parent
416f84a1c4
commit
2566506e4b
3
.github/build.sh
vendored
3
.github/build.sh
vendored
@ -185,7 +185,6 @@ meson_configure+=$'\t'-Dapp_data=$APP_DATA
|
||||
meson_configure+=$'\t'-Dapp_vendor=$APP_VENDOR
|
||||
meson_configure+=$'\t'-Db_strip=false
|
||||
meson_configure+=$'\t'-Db_staticpic=false
|
||||
meson_configure+=$'\t'-Dinstall_check=true
|
||||
meson_configure+=$'\t'-Dmod_id=$MOD_ID
|
||||
case $BSH_HOST_ARCH-$BSH_HOST_PLATFORM-$BSH_HOST_LIBC-$BSH_DEBUG_RELEASE in
|
||||
x86_64-linux-gnu-debug) ;&
|
||||
@ -376,7 +375,7 @@ if [[ $BSH_HOST_PLATFORM == android ]]; then
|
||||
fi
|
||||
if [[ $PACKAGE_MODE == appimage ]]; then
|
||||
# so far this can only happen with $BSH_HOST_PLATFORM-$BSH_HOST_LIBC == linux-gnu, but this may change later
|
||||
meson configure -Dinstall_check=false -Dignore_updates=true -Dbuild_render=false -Dbuild_font=false
|
||||
meson configure -Dcan_install=no -Dignore_updates=true -Dbuild_render=false -Dbuild_font=false
|
||||
strip_target=$APP_EXE
|
||||
fi
|
||||
if [[ $BSH_BUILD_PLATFORM == windows ]]; then
|
||||
|
49
meson.build
49
meson.build
@ -72,11 +72,7 @@ endif
|
||||
|
||||
is_static = static_variant != 'none'
|
||||
is_debug = get_option('optimization') in [ '0', 'g' ]
|
||||
enforce_https = get_option('enforce_https')
|
||||
|
||||
if not is_debug and not enforce_https
|
||||
error('refusing to build a release binary with enforce_https=false')
|
||||
endif
|
||||
app_exe = get_option('app_exe')
|
||||
|
||||
tpt_libs_static = 'none'
|
||||
if static_variant == 'prebuilt'
|
||||
@ -130,8 +126,6 @@ else
|
||||
endif
|
||||
endif
|
||||
|
||||
conf_data = configuration_data()
|
||||
|
||||
x86_sse_level_str = get_option('x86_sse')
|
||||
if x86_sse_level_str == 'auto'
|
||||
x86_sse_level = 20
|
||||
@ -322,47 +316,6 @@ else
|
||||
ident_platform = 'UNKNOWN'
|
||||
endif
|
||||
|
||||
install_check = get_option('install_check')
|
||||
if host_platform == 'darwin' or host_platform == 'android'
|
||||
install_check = false
|
||||
endif
|
||||
app_exe = get_option('app_exe')
|
||||
app_id = get_option('app_id')
|
||||
mod_id = get_option('mod_id')
|
||||
is_snapshot = get_option('snapshot')
|
||||
is_beta = get_option('beta')
|
||||
is_mod = mod_id > 0
|
||||
update_server = get_option('update_server')
|
||||
|
||||
conf_data.set('SET_WINDOW_ICON', host_platform == 'linux' ? 'true' : 'false')
|
||||
conf_data.set('X86', is_x86 ? 'true' : 'false')
|
||||
conf_data.set('BETA', is_beta ? 'true' : 'false')
|
||||
conf_data.set('INSTALL_CHECK', install_check ? 'true' : 'false')
|
||||
conf_data.set('IGNORE_UPDATES', get_option('ignore_updates') ? 'true' : 'false')
|
||||
conf_data.set('MOD_ID', mod_id)
|
||||
conf_data.set('DEBUG', is_debug ? 'true' : 'false')
|
||||
conf_data.set('SNAPSHOT', is_snapshot ? 'true' : 'false')
|
||||
conf_data.set('MOD', is_mod ? 'true' : 'false')
|
||||
conf_data.set('SNAPSHOT_ID', get_option('snapshot_id'))
|
||||
conf_data.set('SERVER', get_option('server'))
|
||||
conf_data.set('STATICSERVER', get_option('static_server'))
|
||||
conf_data.set('UPDATESERVER', update_server)
|
||||
conf_data.set('USE_UPDATESERVER', update_server != '' ? 'true' : 'false')
|
||||
conf_data.set('IDENT_PLATFORM', ident_platform)
|
||||
conf_data.set('IDENT', '@0@-@1@-@2@'.format(host_arch, host_platform, host_libc).to_upper())
|
||||
conf_data.set('ENFORCE_HTTPS', enforce_https ? 'true' : 'false')
|
||||
conf_data.set('ALLOW_FAKE_NEWER_VERSION', (is_snapshot or is_beta or is_debug or is_mod) ? 'true' : 'false')
|
||||
conf_data.set('APPNAME', get_option('app_name'))
|
||||
conf_data.set('APPCOMMENT', get_option('app_comment'))
|
||||
conf_data.set('APPEXE', app_exe)
|
||||
conf_data.set('APPID', app_id)
|
||||
conf_data.set('APPDATA', get_option('app_data'))
|
||||
conf_data.set('APPVENDOR', get_option('app_vendor'))
|
||||
conf_data.set('LUACONSOLE', lua_variant != 'none' ? 'true' : 'false')
|
||||
conf_data.set('GRAVFFT', enable_gravfft ? 'true' : 'false')
|
||||
conf_data.set('NOHTTP', not enable_http ? 'true' : 'false')
|
||||
conf_data.set('PATH_SEP_CHAR', host_platform == 'windows' ? '\\\\' : '/')
|
||||
|
||||
data_files = []
|
||||
|
||||
subdir('src')
|
||||
|
@ -18,10 +18,11 @@ option(
|
||||
description: 'Don\'t show notifications about available updates'
|
||||
)
|
||||
option(
|
||||
'install_check',
|
||||
type: 'boolean',
|
||||
value: false,
|
||||
description: 'Do install check on startup'
|
||||
'can_install',
|
||||
type: 'combo',
|
||||
choices: [ 'no', 'yes', 'yes_check', 'auto' ],
|
||||
value: 'auto',
|
||||
description: 'Disable (\'no\') or enable (\'yes\') setting up file and URL associations, or even offer to do it at startup (\'yes_check\')'
|
||||
)
|
||||
option(
|
||||
'http',
|
||||
|
@ -11,6 +11,7 @@ constexpr bool NOHTTP = @NOHTTP@;
|
||||
constexpr bool LUACONSOLE = @LUACONSOLE@;
|
||||
constexpr bool ALLOW_FAKE_NEWER_VERSION = @ALLOW_FAKE_NEWER_VERSION@;
|
||||
constexpr bool USE_UPDATESERVER = @USE_UPDATESERVER@;
|
||||
constexpr bool CAN_INSTALL = @CAN_INSTALL@;
|
||||
constexpr bool INSTALL_CHECK = @INSTALL_CHECK@;
|
||||
constexpr bool IGNORE_UPDATES = @IGNORE_UPDATES@;
|
||||
constexpr bool ENFORCE_HTTPS = @ENFORCE_HTTPS@;
|
||||
|
@ -13,3 +13,4 @@ if enable_http
|
||||
else
|
||||
client_files += files('RequestManagerNoHttp.cpp')
|
||||
endif
|
||||
conf_data.set('NOHTTP', not enable_http ? 'true' : 'false')
|
||||
|
@ -106,9 +106,4 @@ bool WriteFile(const std::vector<char> &fileData, ByteString filename)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool CanInstall()
|
||||
{
|
||||
return INSTALL_CHECK;
|
||||
}
|
||||
}
|
||||
|
@ -46,7 +46,6 @@ namespace Platform
|
||||
|
||||
bool CanUpdate();
|
||||
|
||||
bool CanInstall();
|
||||
bool Install();
|
||||
|
||||
bool ChangeDir(ByteString toDir);
|
||||
|
@ -24,9 +24,4 @@ bool CanUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Install()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -48,9 +48,4 @@ bool CanUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Install()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -11,9 +11,4 @@ bool CanUpdate()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool Install()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -4,19 +4,57 @@ common_files += files(
|
||||
'tpt-rand.cpp',
|
||||
'tpt-thread-local.cpp',
|
||||
)
|
||||
|
||||
can_install_enforce_no = false
|
||||
set_window_icon = false
|
||||
path_sep_char = '/'
|
||||
if host_platform == 'windows'
|
||||
common_files += files('PlatformWindows.cpp')
|
||||
path_sep_char = '\\\\'
|
||||
common_files += files(
|
||||
'PlatformWindows.cpp',
|
||||
)
|
||||
elif host_platform == 'darwin'
|
||||
common_files += files('PlatformDarwin.cpp')
|
||||
common_files += files('PlatformPosix.cpp')
|
||||
can_install_enforce_no = true
|
||||
common_files += files(
|
||||
'PlatformDarwin.cpp',
|
||||
'PlatformPosix.cpp',
|
||||
)
|
||||
elif host_platform == 'android'
|
||||
common_files += files('PlatformAndroid.cpp')
|
||||
common_files += files('PlatformPosix.cpp')
|
||||
can_install_enforce_no = true
|
||||
common_files += files(
|
||||
'PlatformAndroid.cpp',
|
||||
'PlatformPosix.cpp',
|
||||
)
|
||||
elif host_platform == 'linux'
|
||||
# TODO: again, this is more like "posix" than "linux"
|
||||
common_files += files('PlatformLinux.cpp')
|
||||
common_files += files('PlatformPosix.cpp')
|
||||
set_window_icon = true
|
||||
common_files += files(
|
||||
'PlatformLinux.cpp',
|
||||
'PlatformPosix.cpp',
|
||||
)
|
||||
else
|
||||
common_files += files('PlatformNull.cpp')
|
||||
common_files += files('PlatformPosix.cpp')
|
||||
can_install_enforce_no = true
|
||||
common_files += files(
|
||||
'PlatformNull.cpp',
|
||||
'PlatformPosix.cpp',
|
||||
)
|
||||
endif
|
||||
conf_data.set('SET_WINDOW_ICON', set_window_icon ? 'true' : 'false')
|
||||
conf_data.set('PATH_SEP_CHAR', path_sep_char)
|
||||
|
||||
can_install = get_option('can_install')
|
||||
if can_install == 'auto'
|
||||
can_install = 'yes_check'
|
||||
if is_debug
|
||||
can_install = 'yes'
|
||||
endif
|
||||
if can_install_enforce_no
|
||||
can_install = 'no'
|
||||
endif
|
||||
endif
|
||||
if can_install != 'no' and can_install_enforce_no
|
||||
error('cannot provide install support, configure with -Dcan_install=no to fix this error')
|
||||
endif
|
||||
conf_data.set('CAN_INSTALL', can_install != 'no' ? 'true' : 'false')
|
||||
conf_data.set('INSTALL_CHECK', can_install == 'yes_check' ? 'true' : 'false')
|
||||
|
||||
|
@ -252,7 +252,7 @@ void GameController::PlaceSave(ui::Point position)
|
||||
|
||||
void GameController::Install()
|
||||
{
|
||||
if (Platform::CanInstall())
|
||||
if constexpr (CAN_INSTALL)
|
||||
{
|
||||
new ConfirmPrompt("Install " + String(APPNAME), "Do you wish to install " + String(APPNAME) + " on this computer?\nThis allows you to open save files and saves directly from the website.", { [] {
|
||||
if (Platform::Install())
|
||||
|
@ -25,6 +25,7 @@ if enable_http
|
||||
else
|
||||
luaconsole_files += files('LuaSocketTCPNoHttp.cpp')
|
||||
endif
|
||||
conf_data.set('LUACONSOLE', lua_variant != 'none' ? 'true' : 'false')
|
||||
|
||||
subdir('luascripts')
|
||||
|
||||
|
@ -1,8 +1,40 @@
|
||||
configure_file(
|
||||
input: 'Config.template.h',
|
||||
output: 'Config.h',
|
||||
configuration: conf_data
|
||||
)
|
||||
conf_data = configuration_data()
|
||||
|
||||
app_id = get_option('app_id')
|
||||
mod_id = get_option('mod_id')
|
||||
is_snapshot = get_option('snapshot')
|
||||
is_beta = get_option('beta')
|
||||
is_mod = mod_id > 0
|
||||
conf_data.set('X86', is_x86 ? 'true' : 'false')
|
||||
conf_data.set('BETA', is_beta ? 'true' : 'false')
|
||||
conf_data.set('MOD_ID', mod_id)
|
||||
conf_data.set('DEBUG', is_debug ? 'true' : 'false')
|
||||
conf_data.set('MOD', is_mod ? 'true' : 'false')
|
||||
conf_data.set('SNAPSHOT', is_snapshot ? 'true' : 'false')
|
||||
conf_data.set('SNAPSHOT_ID', get_option('snapshot_id'))
|
||||
conf_data.set('ALLOW_FAKE_NEWER_VERSION', (is_snapshot or is_beta or is_debug or is_mod) ? 'true' : 'false')
|
||||
conf_data.set('IDENT_PLATFORM', ident_platform)
|
||||
conf_data.set('IDENT', '@0@-@1@-@2@'.format(host_arch, host_platform, host_libc).to_upper())
|
||||
|
||||
update_server = get_option('update_server')
|
||||
conf_data.set('UPDATESERVER', update_server)
|
||||
conf_data.set('USE_UPDATESERVER', update_server != '' ? 'true' : 'false')
|
||||
|
||||
enforce_https = get_option('enforce_https')
|
||||
if not is_debug and not enforce_https
|
||||
error('refusing to build a release binary without enforcing HTTPS, configure with -Denforce_https=true to fix this error')
|
||||
endif
|
||||
conf_data.set('ENFORCE_HTTPS', enforce_https ? 'true' : 'false')
|
||||
|
||||
conf_data.set('IGNORE_UPDATES', get_option('ignore_updates') ? 'true' : 'false')
|
||||
conf_data.set('SERVER', get_option('server'))
|
||||
conf_data.set('STATICSERVER', get_option('static_server'))
|
||||
conf_data.set('APPNAME', get_option('app_name'))
|
||||
conf_data.set('APPCOMMENT', get_option('app_comment'))
|
||||
conf_data.set('APPEXE', app_exe)
|
||||
conf_data.set('APPID', app_id)
|
||||
conf_data.set('APPDATA', get_option('app_data'))
|
||||
conf_data.set('APPVENDOR', get_option('app_vendor'))
|
||||
|
||||
powder_files = files(
|
||||
'SDLCompat.cpp',
|
||||
@ -43,10 +75,12 @@ subdir('graphics')
|
||||
subdir('gui')
|
||||
if lua_variant != 'none'
|
||||
subdir('lua')
|
||||
conf_data.set('LUACONSOLE', 'true')
|
||||
else
|
||||
powder_files += files(
|
||||
'lua/PlainCommandInterface.cpp',
|
||||
)
|
||||
conf_data.set('LUACONSOLE', 'false')
|
||||
endif
|
||||
subdir('prefs')
|
||||
subdir('resampler')
|
||||
@ -80,3 +114,9 @@ configure_file(
|
||||
output: 'ToolNumbers.h',
|
||||
configuration: tools_conf_data
|
||||
)
|
||||
|
||||
configure_file(
|
||||
input: 'Config.template.h',
|
||||
output: 'Config.h',
|
||||
configuration: conf_data
|
||||
)
|
||||
|
@ -31,4 +31,5 @@ if enable_gravfft
|
||||
else
|
||||
powder_files += files('PlainGravity.cpp')
|
||||
endif
|
||||
conf_data.set('GRAVFFT', enable_gravfft ? 'true' : 'false')
|
||||
render_files += files('PlainGravity.cpp')
|
||||
|
Loading…
Reference in New Issue
Block a user