1. 28 Jan, 2023 1 commit
    • Jeffrey Lee's avatar
      Add HostApp makefile fragments · 061eac6e
      Jeffrey Lee authored
      The HostApp fragment is designed to be used for building apps/tools for
      running on the build host. It's currently fairly basic (just a
      stripped-down and tweaked version of CApp), but it should be sufficient
      for most purposes. The main advantage of this over HostTools+CApp (as
      used previously) is that HostApp will make sure to use the host's
      version of the CLib stubs, avoiding any incompatibilities between the
      host and target CLib versions.
      
      RISC OS version has been tested with a Disc build (after modifying the
      relevant HostTools-using components), GNU version is untested.
      
      Version 7.81. Tagged as 'BuildSys-7_81'
      061eac6e
  2. 28 Dec, 2022 1 commit
    • ROOL's avatar
      Add Internet 5 variant of rpclib · 03736764
      ROOL authored
      Admin:
        Also keep GNUmakefiles in sync by adding ${XOLIB} variables.
      
      Version 7.80. Tagged as 'BuildSys-7_80'
      03736764
  3. 21 Dec, 2022 2 commits
  4. 03 Dec, 2022 1 commit
    • ROOL's avatar
      Add XOLIB variable to AppLibs & ModuleLibs · 04ef6a31
      ROOL authored
      Detail:
        Also build it for those components which depend on InetRes
      Admin:
        Required by InetRes-5_97 and later.
      
      Version 7.78. Tagged as 'BuildSys-7_78'
      04ef6a31
  5. 29 Oct, 2022 3 commits
  6. 22 Oct, 2022 3 commits
    • Timothy E Baldwin's avatar
      Add ImageLibJPEG to Disc · c7fb2964
      Timothy E Baldwin authored
      Without this ImageLib fails the export libs phase with an error,
      ideally ImageLib needs fixing so it isn't split in this fashion.
      
      No change to build output (the contents of HardDisc4).
      
      Version 7.76. Tagged as 'BuildSys-7_76'
      c7fb2964
    • ROOL's avatar
      Remove unneeded components · ceb74171
      ROOL authored
      Detail:
        Remove NVRAM/PortManager from builds where unused.
        Remove MakePSFont/PDumperDM/DDT from ROM builds.
        For ROMs where some install a component and others only export it, settle
        on a common place to put the component in the list from a majority vote.
      Admin:
        Based on a submission from Timothy E Baldwin
        BCM2835/BonusBin/BuildEnv/Disc/IOMD32/OMAP3/4/5/PineA64/PlingSystem/Titanium
        Tungten/iMx6 builds checked.
        Unmaintained S3C2440/6410/BCM2835Pico not checked.
      ceb74171
    • ROOL's avatar
      Movements to make Components files easier to compare · 83892419
      ROOL authored
      Detail:
        Move Portable export up in IOMD32 to match Tungsten/S3C2440/S3C6410.
        Move SCSIFS/PCI to equivalent place in the exports at the top of file.
        Remove some extra # in separator blocks for Titanium.
      Admin:
        Based on a submission from Timothy E Baldwin
      83892419
  7. 19 Oct, 2022 4 commits
    • Jeffrey Lee's avatar
      Attempt to document the different defines · f82a7093
      Jeffrey Lee authored
      There are a number of different defines/variables which the makefile
      fragments pass into the compiler/assembler when building code. Add a new
      document (Makefile.Docs.Defines) which attempts to document them and
      their intended use.
      
      Version 7.75. Tagged as 'BuildSys-7_75'
      f82a7093
    • Jeffrey Lee's avatar
      Add RISCOS_MODULE defines · 351c84a1
      Jeffrey Lee authored
      These go hand-in-hand with the RISCOS_HAL and RISCOS_KERNEL defines, to
      allow code to identify when it's being built for inclusion in a module.
      351c84a1
    • Jeffrey Lee's avatar
      Add RISCOS_ZM assembler variable · 82636e39
      Jeffrey Lee authored
      This is intended to act as a replacement for the zM variable, which is
      hard to search for.
      
      zM will be removed in 2024.
      82636e39
    • Jeffrey Lee's avatar
      Add initial support for HAL & kernel library builds · 12bfbd27
      Jeffrey Lee authored
      Extend the CLibrary shared makefile to add support for building HAL and
      kernel versions of libraries, with 'h' and 'k' suffixes respectively.
      These are built with stack limit checking & frame pointers disabled, and
      with RISCOS_HAL and RISCOS_KERNEL defines enabled as appropriate.
      
      Note that currently there's nothing done to protect the SB register in
      HAL builds of libraries, or to deal with references to data sections.
      12bfbd27
  8. 10 Oct, 2022 2 commits
  9. 21 May, 2022 2 commits
  10. 14 Feb, 2022 2 commits
  11. 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
  12. 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
  13. 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
  14. 28 Jan, 2022 1 commit
  15. 05 Jan, 2022 1 commit
  16. 15 Dec, 2021 1 commit
  17. 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
  18. 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
  19. 04 Sep, 2021 1 commit
  20. 26 Jun, 2021 1 commit
  21. 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
  22. 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
  23. 15 May, 2021 1 commit
    • Ben Avison's avatar
      Support links for extension-less files in subdirectories · 9b0aed8c
      Ben Avison authored
      This only applies to cross-compilation builds. The `make links` rules don't
      know a pre-determined list of subdirectories that need to be converted into
      filename extensions. Instead, files that should have no filename extension
      are usually simply identified by the absence of a `/` in their specification
      in `SOURCES_TO_SYMLINK`. However, this is insufficient to handle some rarer
      cases, such as a `Makefile` within a `Test` subdirectory.
      
      To handle this, we introduce explicit support for specifying such files in
      `SOURCES_TO_SYMLINK`, using a double slash where there would otherwise be a
      filetype subdirectory name, such as `Test//Makefile`. (Conveniently, this is
      also valid Posix filename syntax anyway.) The way this is achieved is to
      tweak the regular expressions to require the directory and leafnames between
      slashes to be at least one character long.
      
      Version 7.58. Tagged as 'BuildSys-7_58'
      9b0aed8c