1. 15 May, 2021 9 commits
    • Timothy E Baldwin's avatar
      Define PARENT · 4f35a3e7
      Timothy E Baldwin authored
      This allows makefiles to refer to the parent directory in an OS-neutral way.
      4f35a3e7
    • Ben Avison's avatar
      Add tokenised help file functionality to `CModule` · ee10b29f
      Ben Avison authored
      `TOKHELPSRC`, `HELPSRC` and `TOKENS` have the same meaning as in `AAsmModule`.
      Because `CModule`, unlike `AAsmModule`, can build a binary from multiple
      linked object files, it is also necessary to specify which object file(s)
      depend on the autogenerated source file. This is achieved with the new input
      variable `TOKHELPDEPENDS`. This defaults to `OBJS` which in turn defaults to
      `TARGET`, which should mean that any components converted from `AAsmModule`
      will not require any such line to be specified in their master makefile.
      
      Requires RiscOS/Sources/Programmer/Debugger!4
      ee10b29f
    • Ben Avison's avatar
    • Ben Avison's avatar
    • Ben Avison's avatar
      Define cross-platform specifier for -Itbox: · 1e58a98d
      Ben Avison authored
      Use `${TBOXINC}` instead.
      1e58a98d
    • Ben Avison's avatar
      Define cross-platform specifier for -ITCPIPLibs: · def85aec
      Ben Avison authored
      Use `${TCPIPINC}` instead. Although there is only a single directory
      on TCPIPLibs$Path, all ported BSD sockets code assumes their headers are
      already directly on the include path.
      def85aec
    • Ben Avison's avatar
      Support application and module targets with differing compiler flags · a7947759
      Ben Avison authored
      Typically useful for libraries where you have both types of target, and you
      want the application build to contain function names (for meaningful
      backtraces) but the module build not to (to save ROM space). This is
      achieved as follows:
      
      * CAPPFLAGS and CMODFLAGS contain additional flags to be passed to application
        and module builds, respectively
      
      * C_FNAMES is initialised to a compiler-agnostic build switch to enable
        function names in the binary
      
      Therefore a master makefile will often use the line
      CAPPFLAGS = ${C_FNAMES}
      although CAPPFLAGS and CMODFLAGS are not limited to this usage.
      a7947759
    • Ben Avison's avatar
      Allow components using CLibrary shared Makefile to specify additional exports · 51f761a1
      Ben Avison authored
      Occasionally, a library needs to export additional files that don't live in
      either an h or hdr directory and (when cross compiling) shouldn't have a
      .h suffix added to their exported version. A typical example would be where
      the licence conditions of the library require a licence header to be attached
      to all copies. To achieve this, CLibrary now uses EXPORTS in a similar manner
      to how AAsmModule does, simply as a dependency of export_hdrs, which can
      expand to any additional targets you need to define. By default, it overrides
      the internal targets EXPORTING_HDRS and EXPORTING_ASMHDRS (derived from
      HDRS and ASMHDRS supplied by the master makefile), but you can always include
      them in your definition of EXPORTS if desired.
      51f761a1
    • Ben Avison's avatar
      Split library include paths into separate included Makefile · bc6cf22d
      Ben Avison authored
      This de-duplicates some of the information from AppLibs and ModuleLibs,
      which now include the new Makefile fragment in order to ensure compatibility.
      It also means that the definitions can be used for building other library
      components, which by definition do not perform a link step, without having
      to choose either AppLibs or ModuleLibs when most of either one is unused for
      a library build.
      bc6cf22d
  2. 24 Feb, 2021 1 commit
  3. 28 Oct, 2020 1 commit
    • Robert Sprowson's avatar
      Fix to module-wrapped LIBS SYMS · b1350268
      Robert Sprowson authored
      Exercising the new library/symbols selector on a more complex case (Help2) showed that the selection never triggered, because where it is placed ${RLIB} is unset.
      Move the test to after ModuleLibs/AppLibs are set, and invert the sense (it should have been ifneq).
      
      Version 7.52. Tagged as 'BuildSys-7_52'
      b1350268
  4. 10 Sep, 2020 2 commits
    • Ben Avison's avatar
      Define toolchain-agnostic warning suppression flags · a11503f7
      Ben Avison authored
      C_NOWARN_ASSIGNMENT_AS_CONDITION to suppress warnings about assignments within
      condition tests in `if` statements
      
      C_NOWARN_NON_ANSI_INCLUDES to suppress warnings about use of angle brackets
      for #include headers not defined by ISO/ANSI
      
      Version 7.50. Tagged as 'BuildSys-7_50'
      a11503f7
    • Ben Avison's avatar
      Extend `CApp` to support module-wrapped applications · 02c570ff
      Ben Avison authored
      This involves grafting in the `resources`, `rom` and `rom_link` rules from
      `CModule` (support for `CmdHelp` files is not copied across, because no
      module-wrapped application can provide star commands). Module-wrapped
      applications typically want to support `install INSTTYPE=app` in the same way
      as other applications, to permit a non-wrapped version to be built (for
      example, for debugging purposes).
      
      Because this feature is typically used with applications that use RISC_OSLib,
      the rules have been made slightly more sophisticated than those in CModule,
      in the sense that if `LIBS` contains `${RLIB}`, it automatically selects the
      larger ROM stubs and symbols files that include the RISC_OSLib library chunk,
      so there is no need to override these from the calling makefile.
      
      Compared to the `install` phase, where all resource files go into the
      application directory, for ROM builds, only a subset of files go there,
      the remainder being placed under `Resources:$.Resources`, and some of the
      files differ in contents from the `install` versions. The application
      directory resources in the ROM build case are (in a change from previous
      behaviour) all now registered with ResourceFS by the module-wrapped
      application rather than by the Messages module, and they are packaged using
      the `ResGen` tool. This means that you can kill (or unplug) the module and
      teh application will disappear from `Resources:$.Apps`.
      
      The resource files are categorised using the separate macros `INSTAPP_FILES`,
      `RES_FILES` and `RESAPP_FILES`.
      
      Requires RISC_OSLib-6_08.
      02c570ff
  5. 20 Jul, 2020 1 commit
    • Ben Avison's avatar
      Enable rom_link target for AAsmModule components · f9c01ed0
      Ben Avison authored
      The ModuleDB classifies modules as being of type either `ASM` or `C`. The
      primary consumer of this information is `srcbuild`. The difference between
      them, as far as `srcbuild` is concerned, is only that in the `install_rom`
      phase, it builds the `rom_link` phony target in `C` components' makefiles,
      instead of the `install_rom` phony target.
      
      These phony targets differ slightly in requirements: `install_rom` uses
      `INSTDIR` where `rom_link` uses `LINKDIR`, but more significantly, `rom_link`
      is passed parameter `ADDRESS` to state where in the ROM the module resides.
      This addesss is not known at the time the `rom` phony target is made, so `C`
      components only produce a partially-linked binary at that stage, where `ASM`
      components have already produced a complete binary. (The reason for this
      difference is that while hand-written assembly modules use position-
      independent code, the output of the Norcroft compiler normally relies on
      run-time code modification to relocate absolute addresses - something that is
      not possible when running from ROM.)
      
      There are implementations of the `install_rom` and `rom_link` rules in the
      `AAsmModule` and `CModule` shared makefiles respectively, so `AAsmModule` is
      currently only used for `ASM` components and `CModule` is only used for `C`
      components. However, occasionally we have reason to change a component from
      using `AAsmModule` to `CModule`, usually for reasons unrelated to the use of
      absolute address relocations, because `CModule` is more flexible than
      `AAsmModule` in various other ways.
      
      This poses a problem for keeping `BuildSys` in step with the component in
      question, because whenever we change the shared makefile type in the
      component's makefile, we have to update the `ModuleDB` in lock step.
      
      The solution presented here is to ensure that at least one shared makefile
      supports both phony targets, so any component using it no longer cares how it
      is recorded in the `ModuleDB`. Adding `install_rom` to `CModule` was rejected,
      on the grounds that it would be too easy to accidentally build a ROM using it
      where the necessary relocations had been skipped at ROM link time. However,
      there are no drawbacks to adding `rom_link` to AAsmModule, because linking
      an object that has no relocations at any base address will always result in
      an identical binary that is safe to execute.
      
      Though the module itself requires no relocations, the symbols file
      traditionally output by `CModule` does contain absolute addresses which are
      useful for debugging, so a new link command is executed during `AAsmModule`'s
      `rom_link` rule in order to ensure this is kept up-to-date, even though the
      binary could otherwise have been re-used from the one generated in the `rom`
      rule.
      f9c01ed0
  6. 27 Jun, 2020 4 commits
    • Ben Avison's avatar
      Assistance for cross-compilable makefiles · 1f71f8f1
      Ben Avison authored
      StdTools: new symbol SUFFIX_HEADER: '.h' for GNU make, undefined for amu; useful for generating filenames of generated headers
      StdTools: new symbol EXT: filename extension separator character
      CModule: ROM_SYMS: now defined conditionally, permitting it to be overridden higher up the master makefile, to match SA_LIBS and ROM_LIBS
      
      Version 7.47. Not tagged
      1f71f8f1
    • Ben Avison's avatar
      Add extra rules to help amu deduce prerequisites of ASM2TXT header exports · d9c576a6
      Ben Avison authored
      GNU make doesn't need this extra hint.
      
      Version 7.47. Tagged as 'BuildSys-7_47'
      d9c576a6
    • Ben Avison's avatar
      Standardise autogeneration of source files using objasm within CModule clients · 3d3228a9
      Ben Avison authored
      Various components use objasm for its general macro abilities in order to
      generate intermediate source or header files. To date, this has required
      writing of custom rules, which then need separate implementations for
      cross-compilation use.
      
      There is no standardisation of destination directory (it may be generating
      source or header files in any arbitrary language) so the solution here is to
      specify each target using a subdirectory, basename and extension, and leave
      CModule to deal with whether or not the extension should be in prefix or
      suffix position, depending on the host OS. Only one such autogenerated file
      is currently supported per makefile:
      
      ```
      ASM2TXT = <basename> <optional extension>
      ASM2TXT_SUBDIR = <optional subdirectory, each element followed by ${SEP}>
      ```
      
      The source file passed to objasm is derived from `<basename>`, prefixed by
      `s.` or suffixed by `.s` as appropriate.
      3d3228a9
    • Ben Avison's avatar
  7. 24 May, 2019 1 commit
    • Robert Sprowson's avatar
      Build fix · 4022e43f
      Robert Sprowson authored
      Don't try and be clever using Build$Path, just refer to touch directly (since uses of it elsewhere don't have *Run).
      
      Version 7.39. Tagged as 'BuildSys-7_39'
      4022e43f
  8. 20 May, 2019 1 commit
    • Robert Sprowson's avatar
      Preserve the timestamp when INSERTVERSION operates on Messages · d3b77865
      Robert Sprowson authored
      Those RAM loading modules which pick from VersionNum and insert into their Messages would create a new Messages file with a new date every time they are built. Because the tools to put these in ResourceFS also capture the file's datestamp (via :FLOAD: :FEXEC: in objasm, or via resgen for C modules), you don't create binary identical copies on two successive builds despite the same input source.
      Add a ${TOUCH} step to copy the reference time stamp to the generated Messages file.
      
      Requires Library-1_96 or later for Touch.
      d3b77865
  9. 28 Dec, 2018 1 commit
  10. 12 May, 2018 1 commit
    • ROOL's avatar
      Component, Makefile, ModuleDB updates · 300a68d2
      ROOL authored
      Detail:
        Disc - add AcornHTTP and URL modules, force en-gb CmdHelp for RouteD in 310 directory.
        OMAP5 - add ADFS/SATADriver/ATAPI, change default CMOS to select FileSystem=ADFS
        Libs makefiles - add path to ZLIB
        ModuleDB - Relocate OMAP5 HAL to mixed/
      
      Version 7.27. Tagged as 'BuildSys-7_27'
      300a68d2
  11. 15 Apr, 2018 1 commit
    • Ben Avison's avatar
      Fix definition of INCLUDE_OSLIB · 8198f31f
      Ben Avison authored
      Detail:
        Somehow the leading minus signs went missing - this broke ColourPicker,
        which was the only component that relied on it.
      
      Version 7.26. Tagged as 'BuildSys-7_26'
      8198f31f
  12. 14 Apr, 2018 1 commit
    • Ben Avison's avatar
      Makefile bugfixes · 53b25b7a
      Ben Avison authored
      Detail:
        Makefiles/AAsmModule:
        * This was the odd-one out amongst top-level shared makefiles in that it
          still required the master makefile to include StdTools explicitly - even
          the GNU version of this makefile did so. Now changed for consistency.
        GNUmakefiles/AAsmModule:
        * Fixed typo in renaming of MERGEDMDIR to MERGEDRDIR.
      Admin:
        Fixes build error in latest FPEmulator
      
      
      Version 7.25. Tagged as 'BuildSys-7_25'
      53b25b7a
  13. 11 Apr, 2018 1 commit
    • Ben Avison's avatar
      Incremental step in cross-compilation support · 5e83cb7e
      Ben Avison authored
      Detail:
        ModuleDB:
        * Correct capitalisation of resgen's TARGET to match its main source file
        GNUmakefiles/AAsmModule:
        * Targets now given ,ffa filetype suffix
        * Support source directory layouts s/<subdir>/<leaf> as used by the
          kernel and printer drivers - define SYMLINK_EXT_FIRST to enable
        * Prevent relinking when running make on an up-to-date component due to
          a difference between amu and GNU make's handling of double-colon rules
        * Support linking with GNU toolchain
        * Fix installation rule (mixup between MERGEDMDIR and MERGEDRDIR)
        * Support up to 16 assembler and 8 C-from-assembler headers, up from 3
          of each (here's looking at you, kernel) - long-term, it might be worth
          changing this to a scheme like that used by CModule to remove any
          limits
        * Fix C-from-assembler exports to have .h suffix
        GNUmakefiles/AppLibs:
        * Define INCLUDE_OSLIB to permit OSLib header search paths to be
          specified in an OS-agnostic way
        GNUmakefiles/CApp:
        * Prevent relinking when running make on an up-to-date component due to
          a difference between amu and GNU make's handling of double-colon rules
        GNUmakefiles/CLibrary:
        * Prevent rearchiving when running make on an up-to-date component due
          to a difference between amu and GNU make's handling of double-colon
          rules
        * Don't use .hdr suffix on exported assembler header files
        * Correct order of dependencies for export_libs phony target
        GNUmakefiles/StdTools:
        * Definition for the module filetype suffix
        * Add LDBIN tool for GNU/Norcroft-agnostic binary link, useful for
          linking position-independent binary code, such as relocatable modules
          (i.e. ones that don't require the linker to create a __RelocCode
          function)
        * FAPPEND function now works if the same file is used for the
          destination as for one of the sources (this is used by CModule)
        GNUmakefiles/CModule, ModStdRule, ModuleLibs:
        * Finally created cross-compilation versions of the last major shared
          makefiles! Warning: these have received limited testing to date.
        Makefiles/AAsmModule:
        * Support up to 16 assembler and 8 C-from-assembler headers
        Makefiles/AppLibs, ModuleLibs:
        * Define INCLUDE_OSLIB
        Makefiles/StdTools:
        * Add LDBIN tool
      
      
      Version 7.24. Tagged as 'BuildSys-7_24'
      5e83cb7e
  14. 12 Mar, 2018 1 commit
    • Ben Avison's avatar
      Changes to keep GNUmakefiles and Makefiles compatible · d8eeed92
      Ben Avison authored
      Detail:
        GNUmakefiles/AAsmModule:
        * Adopt same extensible syntax for describing resources phase files as CModule (see BuildSys 6.91)
        GNUmakefiles/AppLibs:
        * Don't permit CALLXLIB to be used for application builds (see BuildSys 6.61)
        * Reflect MODMALLOCLIB leafname change (see BuildSys 6.61)
        * Add TBOXINTLIB, TBOXINTDBGLIB, PDEBUGLIB, PRISMLIB, REMOTEDBLIB, TRACELIB, UNICODELIB and include more libs in DEBUGLIBS (see BuildSys 6.63)
        GNUmakefiles/CApp:
        * Add install_debug_app rule for debug app installations (see BuildSys 6.53)
        GNUmakefiles/CLibrary:
        * Allow additional dependencies to be specified using LIB_DEPENDS (see BuildSys 6.63)
        * Gains install target (see BuildSys 7.15)
        GNUmakefiles/StdTools:
        * Add shell implementation of FAppend (see BuildSys 6.45) - compatible except for the fact that the destination is given current timestamp
        * ${NOP} no longer implicitly includes the silent-command prefix character @ (see BuildSys 6.5...
      d8eeed92
  15. 27 Sep, 2017 1 commit
    • Robert Sprowson's avatar
      Add Access+ to the disc image, improve CLibrary makefile · edecae6c
      Robert Sprowson authored
      Add Access+ as a utility, called out by the "Local networks" chapter of the User Guide, and missing since RISC OS 3.70 days (despite ShareFS having the functionality).
      Add an install target to the CLibrary makefile, this allows the library to be installed somewhere other than the exports directory which is useful for the CTools component for example.
      
      Version 7.15. Tagged as 'BuildSys-7_15'
      edecae6c
  16. 29 May, 2016 1 commit
    • Robert Sprowson's avatar
      Use the same optional resources syntax for AAsmModule as for CModule · 6d8a8a45
      Robert Sprowson authored
      Copy over the rules that use platform agnostic InstRes to copy their extra resources (for those modules wanting more than just the default Messages+CmdHelp).
      Copy over the logic that allows INSERTVERSION to be run on Messages files (from CApp shared makefile) so modules which have a front end can get their dates from Messages.
      Add INSERTVERSION facility to CModule too.
      
      Version 6.91. Tagged as 'BuildSys-6_91'
      6d8a8a45
  17. 02 Aug, 2015 2 commits
    • Robert Sprowson's avatar
      Update known tools · 368c3d69
      Robert Sprowson authored
      Tagged as BuildSys-6_70.
      368c3d69
    • Robert Sprowson's avatar
      Extend resources phase to handle more than just Messages · e416ad84
      Robert Sprowson authored
      Using the InstViaRG script CModule will now collate a list of files (using the syntax for the InstRes script employed by the CApp shared makefile) for resources, rather than the previous Messages file only.
      The list is specified in INSTRES_FILES, or if for some reason the standalone and ROM versions need to be different INSTRAM_FILES and INSTROM_FILES (cf. INSTAPP_FILES in CApp).
      Shock new documentation for CModule added.
      
      Version 6.70. Tagged as 'BuildSys-6_70'
      e416ad84
  18. 01 Aug, 2015 1 commit
  19. 10 Jan, 2015 1 commit
    • Robert Sprowson's avatar
      Add ability to specify dependicies for CLibrary · ed7936cd
      Robert Sprowson authored
      New capability for the CLibrary shared makefile to specify arbitrary dependencies (via ${LIBDEPENDS}) required before the main event, this might be used to, for example, run a perl script or something to generate some code or headers.
      Add PDEBUGLIB PRISMLIB REMOTEDBLIB TRACELIB and UNICODELIB to the AppLibs and ModuleLibs.
      Repoint DDTLIB WILDLIB TRACELIB.
      For the PlingSystem build, put TextGadgets in the 350 directory since it currently only supports text areas in dynamic areas.
      
      Version 6.63. Tagged as 'BuildSys-6_63'
      ed7936cd
  20. 13 Dec, 2014 1 commit
  21. 25 Nov, 2014 1 commit
    • Robert Sprowson's avatar
      Repoint CALLXLIB · 12348401
      Robert Sprowson authored
      Tack a 'zm' on the end to match callx-0_09.
      Mark the application version as invalid, since callx can't be used from an application which gets paged out.
      
      Version 6.61. Tagged as 'BuildSys-6_61'
      12348401
  22. 24 Oct, 2014 1 commit
    • Robert Sprowson's avatar
      Do 'rom_link' against the same thing you do 'rom' with · 3b88d112
      Robert Sprowson authored
      During the rom phase, ROM C modules would be linked against ${ROMCSTUBS}, ie. clib.
      During the rom_link phase, they'd be linked against ${ABSSYM}, ie. clib and rlib.
      As RISC_OSLib contains various wimp_ symbol names which clash with ${WIMPLIB} from the Toolbox, so you can't write a ROMmable C module which links against the Toolbox and uses the shared makefiles.
      
      We define a new variable ROM_SYMS which is initialised to ${C_ABSSYM}, ie. just the clib to match the stubs used during the rom phase, and the ${ROMCSTUBS} is now appended to ${ROM_LIBS} so it can be overridden rather than being hardwired into the rule.
      For completeness SA_LIBS can now also be overridden to remove ${CLIB} if desired.
      
      CApp/CLibrary now use ${NOP} silently.
      
      Version 6.60. Tagged as 'BuildSys-6_60'
      3b88d112
  23. 19 Oct, 2014 1 commit
    • Steve Revill's avatar
      CTools build will now export things into an "Exports" directory. · 1638c6ef
      Steve Revill authored
      This replaces the "AcornC/C++.Libraries" directory that we had
      before, which was a random mash-up of bits of a real "Exports"
      directory.
      
      Also reverted the CModule change - leave this job to components
      to deal with in their own makefiles.
      
      Version 6.58. Tagged as 'BuildSys-6_58'
      1638c6ef
  24. 18 Oct, 2014 1 commit
    • Steve Revill's avatar
      Tweak to the ModuleDB to allow builds (e.g. CTools) to include some more of... · 3d0ad197
      Steve Revill authored
      Tweak to the ModuleDB to allow builds (e.g. CTools) to include some more of the common librabries in their install phase. The ones I've added are (almost) all required by shared makefiles - e.g. for debug app builds.
      
      Also a minor fix to CModule shared makefile to cope with certain arrangements
      of source files in a component.
      
      Version 6.57. Tagged as 'BuildSys-6_57'
      3d0ad197
  25. 12 Oct, 2014 1 commit
    • Steve Revill's avatar
      Various updates generally associated with CTools builds. · 5ef9ae4d
      Steve Revill authored
      Components (ROOL CTools):
        * Added new components (ITable, BlendTable, RTC) for exports
        * Switch to using Install: rather than <Install$Dir> to help CLX
        * Replace CToolsCD component with DDE component
      ModuleDB tweaks:
        * Added the (closed source) DDE resources component
        * Added a component for BuildSys itself (so DDE can get the Makefiles)
      Shared makefile tweadded ERASECVS to the standard tools
        * Added a verbose copy flags CPVFLAGS for big copy operations
        * Added "install" rule for debug app builds (amu install INSTTYPE=debug)
      
      Version 6.53. Tagged as 'BuildSys-6_53'
      5ef9ae4d
  26. 01 Oct, 2014 1 commit
    • Jeffrey Lee's avatar
      Fix some Disc build errors · 99d15696
      Jeffrey Lee authored
      Detail:
        Makefiles/AAsmModule - Reintroduce IfThere check of LocalRes:Messages, so that components which don't have any messages file will build correctly once again
        Makefiles/CApp - Ensure ${INSERTVERSION}'d files are writable; fixes errors when performing repeated Disc builds of components which mark their install directory tree as readonly.
      Admin:
        Fixes issue reported on forums with DDEUtils not being present in recent disc images:
        https://www.riscosopen.org/forum/forums/11/topics/2848
      
      
      Version 6.51. Tagged as 'BuildSys-6_51'
      99d15696
  27. 27 Sep, 2014 1 commit
    • Robert Sprowson's avatar
      Change less useful resources_messages for resources_sprites · cb1c7449
      Robert Sprowson authored
      GNU/AAsmModule:
       Swap round ${RESOURCEEXTRA} to come later, since otherwise the ${RESDIR} hasn't been created
      AAsmModule & CModule:
       Recemtly added resources_messages was a bit pointless as resources_common did the same thing, instead add resources_sprites.
      ModuleLibs:
       Debug library for internal Toolbox objects added.
      Retagged as BuildSys-6_50.
      cb1c7449