]> git.sesse.net Git - pistorm/commitdiff
Add Meson build files. master
authorSteinar H. Gunderson <steinar+git@gunderson.no>
Thu, 17 Jun 2021 21:47:08 +0000 (23:47 +0200)
committerSteinar H. Gunderson <steinar+nageru@gunderson.no>
Fri, 25 Jun 2021 23:50:03 +0000 (01:50 +0200)
meson.build [new file with mode: 0644]
rpi.ini [new file with mode: 0644]

diff --git a/meson.build b/meson.build
new file mode 100644 (file)
index 0000000..acb36f8
--- /dev/null
@@ -0,0 +1,72 @@
+# To build:
+#   meson obj ; cd obj ; ninja
+#
+# To cross-compile from x86 to Raspberry Pi (including first-time setup), as root:
+#   dpkg --add-architecture armhf
+#   echo "deb [trusted=yes] https://archive.raspberrypi.org/debian/ buster main" > /etc/apt/sources.list.d/raspi.list
+#   apt update
+#   apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf libsdl2-dev:armhf libraspberrypi0
+#   meson --cross-file rpi.ini piobj ; cd piobj ; ninja
+
+project('pistorm', ['c','cpp'], default_options: ['buildtype=debugoptimized', 'warning_level=3', 'optimization=3'], version: 'dev')
+
+if host_machine.cpu_family() == 'arm'
+    add_project_arguments('-march=armv8-a', language: ['c', 'cpp'])
+    add_project_arguments('-mfloat-abi=hard', language: ['c', 'cpp'])
+    add_project_arguments('-mfpu=neon-fp-armv8', language: ['c', 'cpp'])
+endif
+
+# Dependencies for Raylib.
+c = meson.get_compiler('c')
+raylib = c.find_library('raylib', dirs: [meson.current_source_dir() + '/raylib'])
+mdep = c.find_library('m')
+glesv2dep = c.find_library('brcmGLESv2', dirs: '/opt/vc/lib')
+egldep = c.find_library('libbrcmEGL', dirs: '/opt/vc/lib')
+bcmhostdep = c.find_library('bcm_host', dirs: '/opt/vc/lib')
+raylibdep = declare_dependency(dependencies: [raylib, mdep, glesv2dep, egldep, bcmhostdep])
+
+threaddep = dependency('threads')
+
+mainfiles = [
+    'emulator.c',
+    'memory_mapped.c',
+    'config_file/config_file.c',
+    'config_file/rominfo.c',
+    'input/input.c',
+    'gpio/ps_protocol.c',
+    'platforms/platforms.c',
+    'platforms/amiga/amiga-autoconf.c',
+    'platforms/amiga/amiga-platform.c',
+    'platforms/amiga/amiga-registers.c',
+    'platforms/amiga/pistorm-dev/pistorm-dev.c',
+    'platforms/mac68k/mac68k-platform.c',
+    'platforms/dummy/dummy-platform.c',
+    'platforms/dummy/dummy-registers.c',
+    'platforms/amiga/Gayle.c',
+    'platforms/amiga/hunk-reloc.c',
+    'platforms/amiga/cdtv-dmac.c',
+    'platforms/amiga/rtg/rtg.c',
+    'platforms/amiga/rtg/rtg-output-raylib.c',
+    'platforms/amiga/rtg/rtg-gfx.c',
+    'platforms/amiga/piscsi/piscsi.c',
+    'platforms/amiga/net/pi-net.c',
+    'platforms/shared/common.c',
+    'platforms/shared/rtc.c',
+    'a314/a314.cc',
+]
+
+musashifiles = [
+    'm68kcpu.c',
+    'm68kdasm.c',
+    'softfloat/softfloat.c',
+    'softfloat/softfloat_fpsp.c',
+]
+
+m68kmake = executable('m68kmake', 'm68kmake.c', native: true)
+musashi_generated = custom_target(
+    'm68kmake',
+    input: ['m68k_in.c'],
+    output: ['m68kops.c', 'm68kops.h'],
+    command: [m68kmake, '.', '@INPUT@'])
+
+executable('emulator', [mainfiles, musashifiles, musashi_generated], dependencies: [raylibdep, threaddep])
diff --git a/rpi.ini b/rpi.ini
new file mode 100644 (file)
index 0000000..41f41b4
--- /dev/null
+++ b/rpi.ini
@@ -0,0 +1,13 @@
+[binaries]
+name = 'rpi'
+arch = 'arm-linux-gnueabihf'
+c = arch + '-gcc'
+cpp = arch + '-g++'
+strip = arch + '-strip'
+pkgconfig = arch + '-pkg-config'
+
+[host_machine]
+system = 'linux'
+cpu_family = 'arm'
+cpu = 'armv7l'
+endian = 'little'