poly-1-fw/meson.build

130 lines
3.1 KiB
Meson

project('poly1', ['cpp', 'c'], default_options: ['optimization=2', 'cpp_std=c++17'])
atpack_zip = 'Microchip.AVR-Dx_DFP.2.1.152.atpack'
dependencies = []
local_headers = ['.', 'etl/include']
sources = [
'ascii85.c',
'base64.c',
'board.cpp',
'main.cpp',
'midix.cpp',
'stor.cpp',
'sysex.cpp',
]
_includes = local_headers
_incl_dirs = include_directories(_includes)
# test binaries
if host_machine.cpu_family() != 'avr'
test_midi = executable(
'test_midi',
['test_midi.cpp', 'midix.cpp'],
include_directories: _incl_dirs,
)
test_ascii85 = executable(
'test_ascii85',
['test_ascii85.c', 'ascii85.c', 'base64.c'],
include_directories: _incl_dirs,
)
subdir_done()
endif
# debug build
if get_option('buildtype') == 'debug'
add_project_arguments(['-DDEBUG=1', '-ggdb3'], language: ['c', 'cpp'])
else
add_project_arguments(['-ggdb3'], language: ['c', 'cpp'])
endif
objcopy = find_program('objcopy')
objdump = find_program('objdump')
size = find_program('size')
pymcuprog = find_program('pymcuprog', required: false, disabler: true)
atpack_path = meson.build_root() / 'atpack'
sysroot = atpack_path / 'gcc/dev' / host_machine.cpu()
add_project_arguments(['-B', sysroot], language: ['c', 'cpp'])
add_project_link_arguments(['-B', sysroot], language: ['c', 'cpp'])
add_project_arguments(['-mmcu=' + host_machine.cpu()], language: ['c', 'cpp'])
add_project_link_arguments(['-mmcu=' + host_machine.cpu()], language: ['c', 'cpp'])
add_project_arguments(['-DF_CPU=' + get_option('cpu_freq').to_string()], language: ['c', 'cpp'])
add_project_arguments(['-I' + atpack_path / 'include'], language: ['c', 'cpp'])
add_project_arguments(['-DETL_NO_STL=1'], language: ['c', 'cpp'])
add_project_arguments(['-mrelax'], language: ['c', 'cpp'])
atpack = custom_target(
'atpack',
command: [ 'unzip', '@INPUT@', '-d', '@OUTPUT@' ],
input: atpack_zip,
output: 'atpack',
)
main = executable(
meson.project_name() + '.elf',
sources,
atpack,
include_directories: _incl_dirs,
dependencies: dependencies,
)
main_hex = custom_target(
meson.project_name() + '.hex',
command: [
objcopy,
'-O', 'ihex',
'@INPUT@', '@OUTPUT@'
],
input: main,
output: meson.project_name() + '.hex',
build_by_default: true,
)
main_disas = custom_target(
meson.project_name() + '.disas',
command: [
objdump,
'-SC', '@INPUT@'
],
input: main,
output: meson.project_name() + '.disas',
build_by_default: true,
capture: true,
)
main_size = custom_target(
'size',
build_always_stale: true,
build_by_default: true,
command: [
size, '@INPUT@'
],
input: main,
console: true,
output: 'size',
)
if pymcuprog.found()
flash = custom_target(
'flash',
build_always_stale: true,
command: [
pymcuprog, 'write', '-d', host_machine.cpu(),
'-t', 'uart', '-u', get_option('programmer'),
'-f', '@INPUT@',
'--erase',
'--verify'
],
input: main_hex,
console: true,
output: 'flash'
)
endif