1. 15 May, 2021 1 commit
  2. 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
  3. 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
  4. 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
  5. 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
        GNUma...
      5e83cb7e
  6. 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
  7. 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
  8. 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
  9. 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
  10. 24 Sep, 2014 2 commits
    • Robert Sprowson's avatar
      Make debug builds a bit simpler · a4135210
      Robert Sprowson authored
      AAsmModule:
       Remove SA_DEBUG override, instead use ASDFLAGS like CModule does.
      CModule:
       If the target is 'debug' allow CMHGDFLAGS to pass extra defines into CMHG, this avoids the common problem of having to have 2 CMHG files and select between them.
      
      Other - sync the messages token check/copying, use ${NOP} and ${FAPPEND} and ${DO}, and od.${RES_OBJ} isn't dependent on ${DIRS} since it already has that when creating o.${RES_OBJ}.
      
      Version 6.50. Tagged as 'BuildSys-6_50'
      a4135210
    • Ben Avison's avatar
      Improvements to AAsmModule shared makefile · 71f9f9e9
      Ben Avison authored
      Detail:
        * Corrected and added documentation at head of file
        * Now defines an "all" target
        * DIRS now has a default value (i.e. behaviour now matches the other shared
          makefiles) freeing the master makefile from needing to specify platform-
          specific paths
        * Added cross-compilation version
      Admin:
        Tested by cross-compiling the BASIC module
      
      
      Version 6.49. Tagged as 'BuildSys-6_49'
      71f9f9e9
  11. 18 Sep, 2014 1 commit
    • Robert Sprowson's avatar
      Improvements to resources phase rules · cfc0ecf2
      Robert Sprowson authored
      AAsmModule:
      The preferred override is now 'CUSTOMRES' to match CModule, though the former 'RESOURCES' is still accepted as a transitional step.
      The internal phoney targets (like resources-None) can no longer be augmented with :: since that doesn't make sense.
      Copied some block comments from CModule so they're easier to compare.
      Fixed the resourcesno/resourcesNo never appearing, this is because when CUSTOMRES=no you end up with two rules called resourcesno and no rule called resources.
      CModule:
      Added resources_res and resources_messages and resources_templates as well as RESOURCEEXTRA support (from AAsmModule).
      Copied some block comments from AAsmModule so they're easier to compare.
      
      Tested in an IOMD ROM resources phase.
      
      Version 6.48. Tagged as 'BuildSys-6_48'
      cfc0ecf2
  12. 28 Jun, 2014 1 commit
    • Robert Sprowson's avatar
      Revise BBE target · 38ce575e
      Robert Sprowson authored
      BootCommands 1.39 and later allow 1k command lines with *DO so there's no need to override the definition of ${PERL} any more.
      Also, add comments to AAsmModule about the various CUSTOM overrides possible.
      
      Version 6.45. Tagged as 'BuildSys-6_45'
      38ce575e
  13. 09 Nov, 2013 1 commit
  14. 15 Jul, 2013 1 commit
    • Robert Sprowson's avatar
      Shared makefile enhancements · 6b4a70b4
      Robert Sprowson authored
      AAsmModule:
       Comments sync'd with implementation
      ModuleLibs/AppLibs:
       Add the RMVersion library
      CApp:
       Now APP_OBJS and APP_DBG_OBJS don't need the '.o' suffix in common with OBJS and DBG_OBJS
       Changed insertion of version numbers to be common for Messages/Obey/Desc files through new 'INSTAPP_VERSION' dummy rule
       INSTALLAPP_DEPEND renamed to INSTAPP_DEPENDS to match other INSTAPP_stuff
      CUtil:
       Use addprefix'd APP_OBJS
      StdTools:
       Default SQUISHFLAGS now set
       Added INSERTVERSION
      
      
      Version 6.20. Tagged as 'BuildSys-6_20'
      6b4a70b4
  15. 01 Sep, 2012 1 commit
    • Jeffrey Lee's avatar
      Modify makefile fragments to generate GPA & symbol files when building ROM... · 278ac74a
      Jeffrey Lee authored
      Modify makefile fragments to generate GPA & symbol files when building ROM modules. Add HangWatch to ModuleDB.
      
      Detail:
        Makefiles/AAsmModule, Makefiles/CModule - Modified to generate GPA (for assembler) and symbols (for C) files when building ROM modules. These files are copied into the install folder, allowing them to easily be picked up by debugging tools.
        ModuleDB - Added entry for HangWatch module
      Admin:
        Makefile changes tested with BCM2835, OMAP3, and Disc builds
      
      
      Version 5.87. Tagged as 'BuildSys-5_87'
      278ac74a
  16. 11 Aug, 2012 1 commit
  17. 05 Feb, 2012 1 commit
  18. 12 Jan, 2012 1 commit
    • Robert Sprowson's avatar
      Various changes · 3728b452
      Robert Sprowson authored
      * Added components file to generate a !System
      * Binaries/Browse/BuildEnv/Disc/IOMD32/OMAP4/Printers/Tungsten add heading blocks and line stuff up
      * OMAP3 remove unused switch from FPEmulator
      * SysMap add mapping from Sovereign to 'V'
      * CTools extra qualifiers on some modules to get help right for modules in the 310 directory
      * AAsmModule when CMDHELP=None is in force you can infer that no international help is desired, therefore pass this as a switch to the module to allow it to remove the tokens from its help table (based on how the 'standalone' switch is done)
      
      Version 5.35. Tagged as 'BuildSys-5_35'
      3728b452
  19. 19 Dec, 2011 1 commit
    • Jeffrey Lee's avatar
      Add CLEAN_DEPEND support to AAsmModule makefile fragment. Disable VFP/NEON... · 480298f2
      Jeffrey Lee authored
      Add CLEAN_DEPEND support to AAsmModule makefile fragment. Disable VFP/NEON assembler for Tungsten ROM versions of BASIC.
      
      Detail:
        Makefiles/AAsmModule - Added ${CLEAN_DEPEND} as a dependency to the 'clean' rule, to allow components to extend the default rule. This is the same functionality that the CApp fragment offers.
        Components/ROOL/Tungsten - Disable VFP/NEON support in the BASIC assembler, due to lack of ROM space.
      Admin:
        Required changes for BASIC 1.49
      
      
      Version 5.33. Tagged as 'BuildSys-5_33'
      480298f2
  20. 31 Mar, 2011 1 commit
    • Ben Avison's avatar
      Improvements to shared makefiles · 684d01e3
      Ben Avison authored
      Detail:
        * Some subtle bugs can be caused by including shared makefiles in the
          wrong order. To try to prevent further problems, and simplify main
          makefiles at the same time, CApp, CLibrary and CModule now include the
          makefiles they depend upon themselves, in the correct order: generally
          speaking, all macro (re)definitions should be before rule definitions.
        * Added sentry macro definitions to each makefile. These can be used to
          avoid repeated inclusion of makefiles - particularly important now that
          CApp, CLibrary and CModule do additional includes. This removes the
          majority of cases where amu produced warnings about multiple inclusion;
          a few components remain where this is still the case, but these
          warnings are harmless. If they bother you, simply remove the
          now-superfluous include statements from the relevant main makefile.
        * Created a CUtil shared makefile, for building transient utilities. The
          'C' in the name is more for c...
      684d01e3
  21. 14 Oct, 2008 1 commit