- 15 May, 2021 1 commit
-
-
Ben Avison authored
-
- 20 Jul, 2020 1 commit
-
-
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.
-
- 20 May, 2019 1 commit
-
-
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.
-
- 14 Apr, 2018 1 commit
-
-
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'
-
- 11 Apr, 2018 1 commit
-
-
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...
-
- 12 Mar, 2018 1 commit
-
-
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...
-
- 29 May, 2016 1 commit
-
-
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'
-
- 01 Oct, 2014 1 commit
-
-
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'
-
- 27 Sep, 2014 1 commit
-
-
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.
-
- 24 Sep, 2014 2 commits
-
-
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'
-
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'
-
- 18 Sep, 2014 1 commit
-
-
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'
-
- 28 Jun, 2014 1 commit
-
-
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'
-
- 09 Nov, 2013 1 commit
-
-
Robert Sprowson authored
Revert change to Disc component revision 1.59, there's no point providing just the CLib in 310/Modules since it needs CallASWI and FPEmulator which also aren't here. See Components/PlingSystem and the ReadMe improvement in ABRelease-0_56. Version 6.31. Tagged as 'BuildSys-6_31'
-
- 15 Jul, 2013 1 commit
-
-
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'
-
- 01 Sep, 2012 1 commit
-
-
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'
-
- 11 Aug, 2012 1 commit
-
-
Robert Sprowson authored
Mirrors variables used in CModule. Note ${EXPORT} has changed to $CUSTOMEXP}, but nothing seemed to be using the former anyway. ThemeDefs added to module database. Replace useof ResApp with ThemeDefs in the disc image. Version 5.77. Tagged as 'BuildSys-5_77'
-
- 05 Feb, 2012 1 commit
-
-
Robert Sprowson authored
The CLEAN_DEPEND intermediate was added because GNU make didn't support '::' notation, but GNU nake 3.81 (possibly earlier) does as described at http://www.gnu.org/software/make/manual/make.html#Double_002dColon verified with two test makefiles # This is 'makefile' include ./other.mk clean:: @echo 1 @echo 2 # This is 'other.mk' CLEANALIAS = clean ${CLEANALIAS}:: @echo 3 @echo 4 which did what was required. Version 5.42. Tagged as 'BuildSys-5_42'
-
- 12 Jan, 2012 1 commit
-
-
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'
-
- 19 Dec, 2011 1 commit
-
-
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'
-
- 31 Mar, 2011 1 commit
-
-
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...
-
- 14 Oct, 2008 1 commit
-
-
Ben Avison authored
This represents the version released in the Batch 4 "bbe" tarfiles. Tagged as 'Batch4'
-