summaryrefslogtreecommitdiff
path: root/pcr/neo6502/PKGBUILD
blob: 34005354b5f0c80ab7dfc2cff5142fb044e0a2e6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
# Maintainer: bill-auger <bill-auger@programmer.net>


pkgbase=neo6502
pkgname=(neo6502-docs neo6502-emulator neo6502-firmware)
_upstream_name=neo6502-firmware
pkgver=0.16.3
_pico_sdk_ver=1.5.1
_tinyusb_ver=0.16.0
_picodvi_rev=a248d72b8cc95a08b43ef4307cd954eb801272b2 # no stable release available
_pico_fatfs_ver=1.0.8
pkgrel=1
pkgdesc="Emulator and firmware for the Neo6502 Retro-computer"
arch=(armv7h i686 x86_64)
license=(custom:MIT)
url=http://www.neo6502.com/

depends=()
makedepends=(64tass arm-none-eabi-gcc arm-none-eabi-newlib cmake
             python-gitpython python-pillow sdl2 zip)
makedepends+=(pandoc texlive-latex texlive-latexextra texlive-latexrecommended)
source=(neo6502-firmware-${pkgver}.tar.gz::https://github.com/paulscottrobson/${_upstream_name}/archive/refs/tags/v${pkgver}.tar.gz
        pico-sdk-${_pico_sdk_ver}.tar.gz::https://github.com/raspberrypi/pico-sdk/archive/refs/tags/${_pico_sdk_ver}.tar.gz
        tinyusb-${_tinyusb_ver}.tar.gz::https://github.com/hathach/tinyusb/archive/refs/tags/${_tinyusb_ver}.tar.gz
        PicoDVI-${_picodvi_rev}.tar.gz::https://github.com/Wren6991/PicoDVI/archive/${_picodvi_rev}.tar.gz
        pico_fatfs-${_pico_fatfs_ver}.tar.gz::https://github.com/carlk3/no-OS-FatFS-SD-SPI-RPi-Pico/archive/refs/tags/v${_pico_fatfs_ver}.tar.gz)
source+=(build_offline.patch)
sha256sums=('a935688087259743f98fb707cfcde39e9d2bf2192a77e550a71e325a43dc9c80'
            '95f5e522be3919e36a47975ffd3b208c38880c14468bd489ac672cfe3cec803c'
            '5b24ed6d7732d07bb25a2013b3ad65fdb8752da3e9faac6372ff0574b26a0447'
            'efd85ffe21335004f8ebfe6d07c2a6482c4dd96bc6f0132fa4adb21464845a88'
            '68ffa9f157b94df969d3bc34f32acb4d4fdf2bdf5391952cf242fec20f53b0b8')
sha256sums+=(SKIP)


prepare()
{
  cd "${srcdir}"/pico-sdk-${_pico_sdk_ver}

  sed -i 's|ARM_TOOLCHAIN_COMMON_FLAGS "|& -march=armv6-m -mtune=cortex-m0plus -fcf-protection=none -fstack-check=generic -fno-stack-clash-protection |' cmake/preload/toolchains/pico_arm_gcc.cmake


  cd "${srcdir}"/${_upstream_name}-${pkgver}

  # avoid downloading sources at build-time
  patch -Np1 < "${srcdir}"/build_offline.patch

  # avoid building the windows emulator
  sed -i 's|emulator release|emulator clean\n\t$(MAKE) -B -C emulator elinux|' Makefile
  sed -i '/neo.exe/d'                                                          release/Makefile

  sed -i 's|STORAGE = USBKEY|STORAGE = NO|' firmware/Makefile
  # prevent exit failure when sourcing cvimg.py
  sed -i 's|sys\.exit(1)|sys.exit(0)|' basic/images/cvimg.py
}

build()
{
  cd "${srcdir}"/${_upstream_name}-${pkgver}

  # avoid downloading sources at build-time
  export PICO_SDK_FETCH_FROM_GIT=off
  export PICO_SDK_PATH="${srcdir}"/pico-sdk-${_pico_sdk_ver}
  export PICO_TINYUSB_PATH="${srcdir}"/tinyusb-${_tinyusb_ver}
  export PICO_DVI_PATH="${srcdir}"/PicoDVI-${_picodvi_rev}
  export PICO_FATFS_PATH="${srcdir}"/no-OS-FatFS-SD-SPI-RPi-Pico-${_pico_fatfs_ver}

  make
}

package_neo6502-docs()
{
  cd "${srcdir}"/${_upstream_name}-${pkgver}

  install -Dm644 documents/release/*.odt -t "${pkgdir}"/usr/share/doc/${pkgbase}/
  install -Dm644 documents/release/*.pdf -t "${pkgdir}"/usr/share/doc/${pkgbase}/
  install -Dm644 documents/*.pdf         -t "${pkgdir}"/usr/share/doc/${pkgbase}/
}

package_neo6502-emulator()
{
  optdepends=("neo6502-docs: Neo6502 documentation")

  cd "${srcdir}"/${_upstream_name}-${pkgver}

  install -Dm755 bin/neo      "${pkgdir}"/usr/bin/neo
  install -d                  "${pkgdir}"/usr/share/${pkgbase}/examples/
  cp -a          examples/    "${pkgdir}"/usr/share/${pkgbase}/examples/
  chmod -R 644                "${pkgdir}"/usr/share/${pkgbase}/examples/
  install -Dm644 bin/*.zip -t "${pkgdir}"/usr/share/${pkgbase}/utils/
  install -Dm644 LICENSE   -t "${pkgdir}"/usr/share/licenses/${pkgbase}/
}

package_neo6502-firmware()
{
  optdepends=("neo6502-docs: Neo6502 documentation")

  cd "${srcdir}"/${_upstream_name}-${pkgver}

  install -Dm644 bin/*.bin -t "${pkgdir}"/usr/share/${pkgbase}/firmware/
  install -Dm644 LICENSE   -t "${pkgdir}"/usr/share/licenses/${pkgbase}/
}