]> git.sesse.net Git - pistorm/blob - meson.build
Add Meson build files.
[pistorm] / meson.build
1 # To build:
2 #   meson obj ; cd obj ; ninja
3 #
4 # To cross-compile from x86 to Raspberry Pi (including first-time setup), as root:
5 #   dpkg --add-architecture armhf
6 #   echo "deb [trusted=yes] https://archive.raspberrypi.org/debian/ buster main" > /etc/apt/sources.list.d/raspi.list
7 #   apt update
8 #   apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libsdl2-dev:armhf libraspberrypi0
9 #   meson --cross-file rpi.ini piobj ; cd piobj ; ninja
10
11 project('pistorm', ['c','cpp'], default_options: ['buildtype=debugoptimized', 'warning_level=3', 'optimization=3'], version: 'dev')
12
13 if host_machine.cpu_family() == 'arm'
14     add_project_arguments('-march=armv8-a', language: ['c', 'cpp'])
15     add_project_arguments('-mfloat-abi=hard', language: ['c', 'cpp'])
16     add_project_arguments('-mfpu=neon-fp-armv8', language: ['c', 'cpp'])
17 endif
18
19 # Dependencies for Raylib.
20 c = meson.get_compiler('c')
21 raylib = c.find_library('raylib', dirs: [meson.current_source_dir() + '/raylib'])
22 mdep = c.find_library('m')
23 glesv2dep = c.find_library('brcmGLESv2', dirs: '/opt/vc/lib')
24 egldep = c.find_library('libbrcmEGL', dirs: '/opt/vc/lib')
25 bcmhostdep = c.find_library('bcm_host', dirs: '/opt/vc/lib')
26 raylibdep = declare_dependency(dependencies: [raylib, mdep, glesv2dep, egldep, bcmhostdep])
27
28 threaddep = dependency('threads')
29
30 mainfiles = [
31     'emulator.c',
32     'memory_mapped.c',
33     'config_file/config_file.c',
34     'config_file/rominfo.c',
35     'input/input.c',
36     'gpio/ps_protocol.c',
37     'platforms/platforms.c',
38     'platforms/amiga/amiga-autoconf.c',
39     'platforms/amiga/amiga-platform.c',
40     'platforms/amiga/amiga-registers.c',
41     'platforms/amiga/pistorm-dev/pistorm-dev.c',
42     'platforms/mac68k/mac68k-platform.c',
43     'platforms/dummy/dummy-platform.c',
44     'platforms/dummy/dummy-registers.c',
45     'platforms/amiga/Gayle.c',
46     'platforms/amiga/hunk-reloc.c',
47     'platforms/amiga/cdtv-dmac.c',
48     'platforms/amiga/rtg/rtg.c',
49     'platforms/amiga/rtg/rtg-output-raylib.c',
50     'platforms/amiga/rtg/rtg-gfx.c',
51     'platforms/amiga/piscsi/piscsi.c',
52     'platforms/amiga/net/pi-net.c',
53     'platforms/shared/common.c',
54     'platforms/shared/rtc.c',
55     'a314/a314.cc',
56 ]
57
58 musashifiles = [
59     'm68kcpu.c',
60     'm68kdasm.c',
61     'softfloat/softfloat.c',
62     'softfloat/softfloat_fpsp.c',
63 ]
64
65 m68kmake = executable('m68kmake', 'm68kmake.c', native: true)
66 musashi_generated = custom_target(
67     'm68kmake',
68     input: ['m68k_in.c'],
69     output: ['m68kops.c', 'm68kops.h'],
70     command: [m68kmake, '.', '@INPUT@'])
71
72 executable('emulator', [mainfiles, musashifiles, musashi_generated], dependencies: [raylibdep, threaddep])