1. 14 Feb, 2022 2 commits
  2. 05 Feb, 2022 1 commit
    • Ben Avison's avatar
      Add SDIODriver header export to Disc build · f755c8f9
      Ben Avison authored
      This facilitates softloadable modules that interface to the SD subsystem
      (such as pretty much every Linux-derived WiFi driver module since they can't
      be linked into a ROM) and also permits GitLab CI to build soft-loadable
      versions of ROM WiFi drivers or SDFS.
      
      Version 7.70. Tagged as 'BuildSys-7_70'
      f755c8f9
  3. 31 Jan, 2022 1 commit
    • Ben Avison's avatar
      Create shared makefile for building HALs · 44504264
      Ben Avison authored
      This de-duplicates a lot of HAL makefiles, and also allows us to introduce a
      cross-compilation variant for them all at once.
      
      APCS specifiers are deliberately omitted; this is in order to facilitate some
      HALs linking with libraries compiled to the usual APCS variant without
      resulting in link-time warnings.
      
      Version 7.69. Tagged as 'BuildSys-7_69'
      44504264
  4. 29 Jan, 2022 1 commit
    • Ben Avison's avatar
      Add two SDIO-related libraries · 0296d2c6
      Ben Avison authored
      Added to Components files for all ROM builds that could, in theory, have WiFi
      drivers, and to Disc so that softloadable builds are possible.
      
      Version 7.68. Tagged as 'BuildSys-7_68'
      0296d2c6
  5. 28 Jan, 2022 1 commit
  6. 05 Jan, 2022 1 commit
  7. 15 Dec, 2021 1 commit
  8. 09 Oct, 2021 3 commits
    • Robert Sprowson's avatar
      Use same names for CExport$Dir and Export$Dir as GNUmakefiles · 89a54862
      Robert Sprowson authored
      The CEXPDIR and EXPDIR names are the wild so hang around as aliases until those components are visited.
      Purely for symmetry add the same to AAsmModule.
      
      Version 7.64. Tagged as 'BuildSys-7_64'
      89a54862
    • Robert Sprowson's avatar
      Retire old OSINC alias · b8f39d1a
      Robert Sprowson authored
      b8f39d1a
    • Robert Sprowson's avatar
      Simplify debug and CUSTOMSA use · d6ee8ba0
      Robert Sprowson authored
      AppLibs/ModuleLibs:
      DebugLib requires remotedb to link, and both are present, but remotedb requires InetLib and SockLib. Currently client makefiles must specify this, but can't do via DBG_LIBS because of the ordering, so end up having to mess around with LIBS in a conditional.
      Simplify this by providing the libraries in DEBUGLIBS.
      
      CModule:
      Add a new SA_TARGET_RULE variable so that when CUSTOMSA is in use it is still possible to invoke the standalone build without needing to know about the differences between GNU and native makefiles (one uses 'MyModule,ffa' the other 'rm.MyModule').
      This will allow the 5 uses of CModule to be simplified in future, the 5 uses of AAsmModule for CUSTOMSA are just to stop a module being output.
      d6ee8ba0
  9. 18 Sep, 2021 1 commit
    • Robert Sprowson's avatar
      Allow clients of CLibrary to use LibIncludes variables · f33c9046
      Robert Sprowson authored
      The comment in LibIncludes mentions libraries that depend on other libraries may find those path variables useful, but since CLibrary doesn't itself include ModuleLibs or AppLibs, they expand as empty. Add LibIncludes.
      
      Version 7.63. Tagged as 'BuildSys-7_63'
      f33c9046
  10. 04 Sep, 2021 1 commit
  11. 26 Jun, 2021 1 commit
  12. 23 Jun, 2021 1 commit
    • Ben Avison's avatar
      Change detail of `C_EXP_HDR` for CModule clients · 7dca5691
      Ben Avison authored
      This macro is used to define the root directory for exported C header files.
      Previously, when native-compiling, the default setting, if not otherwise
      overridden by the master makefile, was `<cexport$dir>.Interface.h`. This is
      at odds with the cross-compiling case, which defaults to the equivalent
      string, but without the `h` subdirectory, for obvious reasons.
      
      Only one component, DHCP, currently overrides `C_EXP_HDR`, although more will
      be joining it in the near future. The macro is used internally within rules
      defined by `CModule`, but a few components also use it within rules in their
      master makefiles.
      
      We hereby change the default value to omit the `h` subdirectory, and permit
      master makefiles to specify an override value which also omits it (in future
      it wil be deprecated to include it, and its use will be phased out). There
      are two reasons for this:
      
      1) It assists with cross-compilation, since the override can then be
         expressed identically for both native and cross builds.
      
      2) It permits the `.exphdr.h` suffix rule to be re-used when one or more
         headers need to be exported to a subdirectory of `C_EXP_HDR`, so long as
         the headers are present at an equivalent subdirectory in the component
         source tree, and that subdirectory is on `VPATH`. This is because `$<`
         is set up to include the element of `VPATH` that matched the rule - but
         this needs to go before the `.h`, not after it.
      
      To prepare for this MR, the following must all be merged:
      * RiscOS/Sources/FileSys/ADFS/ADFS4!2
      * RiscOS/Sources/HWSupport/ATA/SATADriver!2
      * RiscOS/Sources/HWSupport/SD/SDIODriver!5
      * RiscOS/Sources/HWSupport/SPIDriver!1
      * RiscOS/Sources/HWSupport/USB/USBDriver!9
      
      Version 7.60. Tagged as 'BuildSys-7_60'
      7dca5691
  13. 12 Jun, 2021 5 commits
    • Ben Avison's avatar
      Introduce new shared makefile fragments for BASIC components · 6dc5260c
      Ben Avison authored
      The `BasicApp` fragment is analogous to the `CApp` fragment in that it
      supports both single-file executables and application directories. Rules are
      included for building any such application directories into ROMs, with
      files destined for `Resources:$.Resources` being exported to the Messages
      module during the `resources` phase, and those destinated for
      `Resources:$.Apps` being built into a position-independent module, so that
      when the module is killed or unplugged, those files disappear from ResourceFS.
      
      Because the module is position-independent, the makefile fragment implements
      the `install_rom` rule rather than the `rom_link` rule used by `CApp`. This
      is consistent with how `srcbuild` already installs ROM components listed in
      the ModuleDB as being of type `BAS`.
      
      The other main difference from `CApp` is that there is no compilation or
      linking step. Tokenisation, crunching and squishing of the (untokenised)
      source files are roughly analogous to the compilation steps, except that
      multiple source files are concatenated (if applicable) as the first step.
      There is also no debug build variant, and so no `debug` rule.
      
      Crunching is performed (on native builds) using the `BasCrunch` tool, so if
      you are converting an existing component which includes its own Command
      script to perform tokenisation and crunching, this will no longer be needed.
      
      Cross-"compilation" is fully suported. This uses the new `toffb` tool for
      tokenisation (apologies for the wheel-reinvention, but this was developed in
      ignorance about Steve Fryatt's `Tokenize` tool; `toffb` also does do a more
      faithful job of replicating BASIC's `CRUNCH` options, so is more useful for
      ensuring cross-compilation builds remain identical to the native builds).
      It also uses Matrix Brandy (V1.22.9 or later) to execute Squish (at least
      RiscOS/Tools/Sources/Squish!1).
      
      We pass the new `-nosavepath` option to Squish to ensure that the results are
      identical for cross-compile builds compared to native ones. However, Squish
      ignores unrecognised command-line options, so this does not introduce a
      dependency on a newer Squish tool for native builds.
      
      One subtle enhancement over previous makefiles is that we create dynamic
      dependencies between the crunched-and-squished program and its untokenised
      source files.
      
      Version 7.59. Tagged as 'BuildSys-7_59'
      6dc5260c
    • Ben Avison's avatar
      7bfa5c9f
    • Ben Avison's avatar
      Fix typo · 4e012049
      Ben Avison authored
      Missing `$` character before `{LOCALE}` would have caused UK resources to
      be selected instead of non-UK ones, if anyone were to be doing an
      internationalised cross-compiled build.
      4e012049
    • Ben Avison's avatar
      Define SUFFIX_DATA · c63824df
      Ben Avison authored
      This allows RISC OS abstract data files with filetype ffd to be referenced
      identically whether native or cross-compiling (it expands to an empty string
      when used natively).
      c63824df
    • Ben Avison's avatar
      327b245f
  14. 15 May, 2021 20 commits