- 09 Oct, 2021 1 commit
-
-
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.
-
- 18 Sep, 2021 1 commit
-
-
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'
-
- 04 Sep, 2021 1 commit
-
-
ROOL authored
Version 7.62. Tagged as 'BuildSys-7_62'
-
- 26 Jun, 2021 1 commit
-
-
Ben Avison authored
These make it possible to build softload versions of several extra modules. Requires Products/Disc!8 Version 7.61. Tagged as 'BuildSys-7_61'
-
- 23 Jun, 2021 1 commit
-
-
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'
-
- 12 Jun, 2021 5 commits
-
-
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'
-
Ben Avison authored
-
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.
-
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).
-
Ben Avison authored
-
- 15 May, 2021 24 commits
-
-
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'
-
Ben Avison authored
With GNU `make` unlike with `amu`, it is considered an error to make a target for which no rule is defined. Therefore we need an explicit no-op `export` rule in the cross-compiling `CApp` makefile.
-
Ben Avison authored
`AAsmModule`, `CApp`, `CLibrary` and `CModule` implicitly include various other shared makefile fragments to permit simpler master makefiles. However, when cross-compiling, they were only included when invoked from within the `objs` subdirectory, which in particular meant you couldn't rely on any of the definitions from `StdTools` when extending the `clean` rule unless you explicitly included it from the master makefile, thereby defeating the purpose of the implicit inclusion. Change them so that `StdTools` is included for all rules.
-
Ben Avison authored
This tells it to use gcc for preprocessing the CMHG file (if enabled) and asasm for the backend (which means the object file is an ELF file, required in order to link with GCC objects).
-
Ben Avison authored
Occasionally, it is useful to be able to set C++FLAGS from the calling environment, for example when building a 32-bit x86 target from a 64-bit x86-64 host. This works fine for CFLAGS and LDFLAGS, but C++FLAGS is not a valid Posix environment variable name. Import setting from CXXFLAGS instead when cross-compiling.
-
Ben Avison authored
-
Ben Avison authored
-
Ben Avison authored
When executing the makefile from within the `objs` directory, this now includes an implicit `-C..` option. This makes it simpler to write agnostic makefiles. For example, ${MAKE} -f other${EXT}mk other_target rather than ifeq (,${MAKE_VERSION}) ${MAKE} -f other/mk other_target else ${MAKE} -f ../other.mk other_target endif
-
Ben Avison authored
Earlier versions couldn't cope with RES_OBJ being set to an empty string.
-
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
This allows Perl files with filetype 102 to be referenced identically whether native or cross-compiling (it expands to an empty string when used natively).
-
Ben Avison authored
This brings it into line with AAsmModule and CModule shared makefiles
-
Ben Avison authored
There are at least 19 components that use this tool to autogenerate a source file. Needs initial capitalisation on case-sensitive filesystems.
-
Ben Avison authored
-
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.
-
Ben Avison authored
-
- 19 Apr, 2021 5 commits
-
-
ROOL authored
For iMx6, remove DDEUtils to match the other ROMs (it's in the HardDisc4 image). Version 7.57. Tagged as 'BuildSys-7_57'
-
ROOL authored
-
ROOL authored
-
Robert Sprowson authored
Requires Env-1_46
-
ROOL authored
-
- 24 Feb, 2021 1 commit
-
-
ROOL authored
Version 7.56. Tagged as 'BuildSys-7_56'
-