mirror of https://github.com/frida/tinycc
Add Meson build system
This commit is contained in:
parent
263232e8cf
commit
71c2e2c3d5
|
@ -0,0 +1,129 @@
|
|||
project('tcc', 'c',
|
||||
version: '0.9.27-frida',
|
||||
)
|
||||
|
||||
cc = meson.get_compiler('c')
|
||||
|
||||
sources = [
|
||||
'libtcc.c',
|
||||
'tccpp.c',
|
||||
'tccgen.c',
|
||||
'tccelf.c',
|
||||
'tccasm.c',
|
||||
'tccrun.c',
|
||||
]
|
||||
|
||||
cdata = configuration_data()
|
||||
cdata.set_quoted('TCC_VERSION', meson.project_version())
|
||||
|
||||
tccdir = get_option('prefix') / get_option('libdir') / 'tcc'
|
||||
cdata.set_quoted('CONFIG_TCCDIR', tccdir)
|
||||
|
||||
host_os = host_machine.system()
|
||||
if host_os == 'windows'
|
||||
sources += 'tccpe.c'
|
||||
cdata.set('TCC_TARGET_PE', true)
|
||||
elif host_os == 'darwin'
|
||||
sources += 'tccmacho.c'
|
||||
cdata.set('TCC_TARGET_MACHO', true)
|
||||
endif
|
||||
|
||||
host_arch = host_machine.cpu_family()
|
||||
if host_arch == 'x86'
|
||||
sources += [
|
||||
'i386-gen.c',
|
||||
'i386-link.c',
|
||||
'i386-asm.c',
|
||||
]
|
||||
|
||||
cdata.set('TCC_TARGET_I386', true)
|
||||
elif host_arch == 'x86_64'
|
||||
sources += [
|
||||
'x86_64-gen.c',
|
||||
'x86_64-link.c',
|
||||
'i386-asm.c',
|
||||
]
|
||||
if host_os != 'windows'
|
||||
sources += 'lib/va_list.c'
|
||||
endif
|
||||
|
||||
cdata.set('TCC_TARGET_X86_64', true)
|
||||
elif host_arch == 'arm'
|
||||
sources += [
|
||||
'arm-gen.c',
|
||||
'arm-link.c',
|
||||
'arm-asm.c',
|
||||
]
|
||||
|
||||
cdata.set('TCC_TARGET_ARM', true)
|
||||
cdata.set('TCC_ARM_EABI', true)
|
||||
cdata.set('TCC_ARM_VFP', true)
|
||||
|
||||
is_hardfloat_src = '''
|
||||
#ifndef __ARM_PCS_VFP
|
||||
# error Not hardfloat
|
||||
#endif
|
||||
'''
|
||||
if cc.compiles(is_hardfloat_src, name: 'hardfloat ABI')
|
||||
cdata.set('TCC_ARM_HARDFLOAT', true)
|
||||
endif
|
||||
elif host_arch == 'aarch64'
|
||||
sources += [
|
||||
'arm64-gen.c',
|
||||
'arm64-link.c',
|
||||
'arm-asm.c',
|
||||
]
|
||||
|
||||
cdata.set('TCC_TARGET_ARM64', true)
|
||||
|
||||
have_ptrauth_src = '''
|
||||
#ifdef __clang__
|
||||
# if __has_feature(ptrauth_calls)
|
||||
# define HAVE_PTRAUTH 1
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_PTRAUTH
|
||||
# error Pointer authentication not supported
|
||||
#endif
|
||||
'''
|
||||
if cc.compiles(have_ptrauth_src, name: 'pointer authentication')
|
||||
cdata.set('HAVE_PTRAUTH', true)
|
||||
endif
|
||||
endif
|
||||
|
||||
install_headers('libtcc.h')
|
||||
|
||||
runtime_headers = [
|
||||
'include/float.h',
|
||||
'include/ptrauth.h',
|
||||
'include/stdalign.h',
|
||||
'include/stdarg.h',
|
||||
'include/stdbool.h',
|
||||
'include/stddef.h',
|
||||
'include/stdnoreturn.h',
|
||||
'include/varargs.h',
|
||||
]
|
||||
install_headers(runtime_headers, install_dir: tccdir / 'include')
|
||||
|
||||
configure_file(
|
||||
output: 'config.h',
|
||||
configuration: cdata,
|
||||
)
|
||||
|
||||
tcc = library('tcc', sources,
|
||||
c_args: ['-DONE_SOURCE=0'],
|
||||
install: true,
|
||||
)
|
||||
tcc_dep = declare_dependency(
|
||||
link_with: tcc,
|
||||
include_directories: include_directories('.'),
|
||||
)
|
||||
|
||||
pkg = import('pkgconfig')
|
||||
pkg.generate(
|
||||
name: 'libtcc',
|
||||
description: 'Tiny C Compiler',
|
||||
url: 'https://bellard.org/tcc/',
|
||||
libraries: [tcc],
|
||||
)
|
Loading…
Reference in New Issue