Edit meson scripts to compile for Android

This commit is contained in:
ItzVladik 2026-04-05 08:18:29 +00:00
parent 91923d445a
commit 1ea1801271
5 changed files with 86 additions and 10 deletions

View file

@ -17,6 +17,8 @@ pymod = import('python')
python = pymod.find_installation('python3', required: true) python = pymod.find_installation('python3', required: true)
cc = meson.get_compiler('cpp') cc = meson.get_compiler('cpp')
lib_dir = meson.current_source_dir() / 'thirdparty/lib' / host_machine.system() / host_machine.cpu()
inc_dir = 'thirdparty/include' / host_machine.system()
global_cpp_defs = [ global_cpp_defs = [
'-DSPLIT_SAVES', '-DSPLIT_SAVES',
@ -28,13 +30,21 @@ global_cpp_defs = [
'-DDEBUG', '-DDEBUG',
] ]
if host_machine.system() == 'linux' if host_machine.system() == 'linux' or host_machine.system() == 'android'
global_cpp_defs += ['-Dlinux', '-D__linux', '-D__linux__'] global_cpp_defs += ['-Dlinux', '-D__linux', '-D__linux__']
endif endif
if host_machine.system() == 'android'
global_cpp_defs += ['-D__android__']
endif
if get_option('renderer') == 'gles' if get_option('renderer') == 'gles'
global_cpp_defs += ['-DGLES'] global_cpp_defs += ['-DGLES']
gl_dep = dependency('glesv2', required: true) if host_machine.system() == 'android'
gl_dep = cc.find_library('GLESv3', required: true )
else
gl_dep = dependency('glesv2', required: true)
endif
glu_dep = dependency('', required: false) glu_dep = dependency('', required: false)
else else
gl_dep = dependency('gl', required: true) gl_dep = dependency('gl', required: true)
@ -69,10 +79,21 @@ global_cpp_args = [
] ]
add_project_arguments(global_cpp_args, language: 'cpp') add_project_arguments(global_cpp_args, language: 'cpp')
sdl2_dep = dependency('sdl2') if host_machine.system() == 'android'
sdl2_dep = declare_dependency(
dependencies: cc.find_library('SDL2', dirs: lib_dir, required: true ),
include_directories: inc_dir)
else
sdl2_dep = dependency('sdl2')
endif
thread_dep = dependency('threads') thread_dep = dependency('threads')
dl_dep = cc.find_library('dl', required: true) dl_dep = cc.find_library('dl', required: true)
glm_dep = dependency('glm')
if host_machine.system() == 'android'
glm_dep = declare_dependency(include_directories: inc_dir)
else
glm_dep = dependency('glm')
endif
stb = subproject('stb').get_variable('stb_inc') stb = subproject('stb').get_variable('stb_inc')
stb_dep = declare_dependency(include_directories: stb) stb_dep = declare_dependency(include_directories: stb)

23
scripts/android.txt Normal file
View file

@ -0,0 +1,23 @@
[constants]
ndk_home = 'set_path_to_you_ndk'
ndk_api = 'set_api_ndk'
[properties]
skip_sanity_check = true
[binaries]
c = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android' + ndk_api + '-clang'
cpp = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/aarch64-linux-android' + ndk_api + '-clang++'
ar = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar'
strip = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-strip'
sys_root = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/sysroot'
as = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-as'
ranlib = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib'
ld = ndk_home / 'toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ld'
pkg_config = 'false'
[host_machine]
system = 'android'
cpu_family = 'arm'
cpu = 'aarch64'
endian = 'little'

View file

@ -29,7 +29,7 @@ platform_sources = run_command(
).stdout().strip().split('\n') ).stdout().strip().split('\n')
# linux-specific files # linux-specific files
if host_machine.system() == 'linux' if host_machine.system() == 'linux' or host_machine.system() == 'android'
platform_sources += run_command( platform_sources += run_command(
'sh', 'sh',
'-c', 'find "' '-c', 'find "'

View file

@ -64,8 +64,16 @@ lib_minecraft = static_library('minecraft',
cpp_args : global_cpp_args + global_cpp_defs, cpp_args : global_cpp_args + global_cpp_defs,
) )
_inc_dir = '../../' / inc_dir
zlib_dep = dependency('zlib') zlib_dep = dependency('zlib')
crypto_dep = dependency('libcrypto') # for MD5 in Hasher.cpp on Linux if host_machine.system() == 'android'
crypto_dep = declare_dependency(
dependencies: cc.find_library('crypto', dirs: lib_dir, required: true ),
include_directories: _inc_dir)
else
crypto_dep = dependency('libcrypto') # for MD5 in Hasher.cpp on Linux
endif
minecraft_dep = declare_dependency( minecraft_dep = declare_dependency(
link_with : lib_minecraft, link_with : lib_minecraft,

View file

@ -1,4 +1,5 @@
platform_inc = include_directories('.') platform_inc = include_directories('.')
_inc_dir = '../../' / inc_dir
_threads = dependency('threads') _threads = dependency('threads')
lib_platform_core = static_library('platform_core', lib_platform_core = static_library('platform_core',
@ -14,16 +15,39 @@ platform_dep = declare_dependency(
) )
# SDL2-based platform implementations (formerly 4J.* modules) # SDL2-based platform implementations (formerly 4J.* modules)
_sdl2 = dependency('sdl2') if host_machine.system() == 'android'
_sdl2 = declare_dependency(
dependencies: cc.find_library('SDL2', dirs: lib_dir, required: true ),
include_directories: _inc_dir)
else
_sdl2 = dependency('sdl2')
endif
_defs = [] _defs = []
if get_option('renderer') == 'gles' if get_option('renderer') == 'gles'
_gl = dependency('glesv2', required: true) if host_machine.system() == 'android'
_gl = cc.find_library('GLESv3', required: true )
_egl = cc.find_library('EGL', required: true )
else
_gl = dependency('glesv2', required: true)
endif
_defs += ['-DGLES'] _defs += ['-DGLES']
else else
_gl = dependency('gl', required: true) _gl = dependency('gl', required: true)
endif endif
deps = [
_sdl2,
_gl,
_threads,
glm_dep,
stb_dep,
]
if host_machine.system() == 'android'
deps += _egl
endif
sdl2_sources = files( sdl2_sources = files(
'sdl2/Input.cpp', 'sdl2/Input.cpp',
'sdl2/Profile.cpp', 'sdl2/Profile.cpp',
@ -35,7 +59,7 @@ sdl2_sources = files(
lib_platform_sdl2 = static_library('platform_sdl2', lib_platform_sdl2 = static_library('platform_sdl2',
sdl2_sources, sdl2_sources,
include_directories: [platform_inc, include_directories('sdl2')], include_directories: [platform_inc, include_directories('sdl2')],
dependencies: [_sdl2, _gl, _threads, glm_dep, stb_dep], dependencies: deps,
cpp_args: _defs + global_cpp_args + global_cpp_defs, cpp_args: _defs + global_cpp_args + global_cpp_defs,
) )
@ -44,7 +68,7 @@ lib_platform_sdl2 = static_library('platform_sdl2',
render_dep = declare_dependency( render_dep = declare_dependency(
link_with: lib_platform_sdl2, link_with: lib_platform_sdl2,
include_directories: [platform_inc, include_directories('sdl2')], include_directories: [platform_inc, include_directories('sdl2')],
dependencies: [_sdl2, _gl, _threads, glm_dep], dependencies: deps,
) )
input_dep = render_dep input_dep = render_dep
profile_dep = render_dep profile_dep = render_dep