130 lines
3.1 KiB
Meson
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
|