- 15 May, 2021 9 commits
-
-
Timothy E Baldwin authored
This allows makefiles to refer to the parent directory in an OS-neutral way.
-
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
-
Ben Avison authored
-
Ben Avison authored
-
Ben Avison authored
Use `${TBOXINC}` instead.
-
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.
-
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.
-
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.
-
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.
-
- 24 Feb, 2021 1 commit
-
-
ROOL authored
-
- 28 Oct, 2020 1 commit
-
-
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'
-
- 10 Sep, 2020 2 commits
-
-
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'
-
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.
-
- 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.
-
- 27 Jun, 2020 4 commits
-
-
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
-
Ben Avison authored
GNU make doesn't need this extra hint. Version 7.47. Tagged as 'BuildSys-7_47'
-
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.
-
Ben Avison authored
-
- 24 May, 2019 1 commit
-
-
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'
-
- 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.
-
- 28 Dec, 2018 1 commit
-
-
ROOL authored
Version 7.31. Tagged as 'BuildSys-7_31'
-
- 12 May, 2018 1 commit
-
-
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'
-
- 15 Apr, 2018 1 commit
-
-
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'
-
- 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 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'
-
- 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...
-
- 27 Sep, 2017 1 commit
-
-
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'
-
- 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'
-
- 02 Aug, 2015 2 commits
-
-
Robert Sprowson authored
Tagged as BuildSys-6_70.
-
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'
-
- 01 Aug, 2015 1 commit
-
-
Robert Sprowson authored
Previously there was a quirky requirement to set RES_OBJ to an empty string to get this to work, now, we only require CUSTOMRES=no like AAsmModule does. Not tagged, part of a 2 part update.
-
- 10 Jan, 2015 1 commit
-
-
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'
-
- 13 Dec, 2014 1 commit
-
-
Robert Sprowson authored
Version 6.61. Not tagged
-
- 25 Nov, 2014 1 commit
-
-
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'
-
- 24 Oct, 2014 1 commit
-
-
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'
-
- 19 Oct, 2014 1 commit
-
-
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'
-
- 18 Oct, 2014 1 commit
-
-
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'
-
- 12 Oct, 2014 1 commit
-
-
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'
-
- 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.
-