- 11 Dec, 2020 1 commit
-
-
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.
-
- 10 Sep, 2020 1 commit
-
-
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'
-
- 27 Jun, 2020 1 commit
-
-
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
-
- 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.
-
- 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'
-
- 02 Aug, 2015 1 commit
-
-
Robert Sprowson authored
Tagged as BuildSys-6_70.
-
- 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'
-
- 24 Sep, 2014 1 commit
-
-
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'
-
- 19 Jul, 2014 1 commit
-
-
Robert Sprowson authored
Drop 2 tools tlink - a long since abandoned special tool used to link the toolbox modules against TinyStubs around RISC OS 3.50 era, no 32 bit version has ever been made, so by implication it's not being used aasm - the sources were lost some time in the 1990's, and hasn't been supplied as part of the DDE for over a decade Documentation updated to reflect current tools. Version 6.46. Tagged as 'BuildSys-6_46'
-
- 29 Jun, 2014 1 commit
-
-
Robert Sprowson authored
-
- 11 Nov, 2013 1 commit
-
-
Ben Avison authored
Detail: Makefiles/CApp: * Naming of object file variables rationalised in line with CModule * Noted that INSTAPP_VERSION files must also be present in INSTAPP_FILES for compatibility with GNUmakefiles - requires changes to individual top-level makefiles, but not BuildSys Makefiles/CLibrary: * Naming of object file variables rationalised in line with CModule Makefiles/CModule: * Removed unused variable OBJS_ Makefiles/StdTools: * Retired TIDYDESC GNUmakefiles/AppLibs: * Add CONLIB, RMVSN, SYNCLIB GNUmakefiles/CApp: * Default definition of INSTAPP * Naming of object file variables rationalised in line with CModule * CLEAN_DEPEND removed, clean made a double-colon rule (it's worth noting that such additional clean rules are now only executed from the component's top-level directory: this was not true for the old extra_clean rules that this replaces, in the GNUmakefiles case) * Rename of INSTALLAPPFILES to INSTAPP_FILES * Rename of INSTALLAPP_DEPEND to INSTAPP_DEPENDS * Insertion of component version into Desc files now done using AwkVers script rather than the C preprocessor (note, will require editing of Desc files to comply). Also supports versions in Messages and !Run files, controlled by new variable INSTAPP_VERSION GNUmakefiles/CLibrary: * Naming of object file variables rationalised in line with CModule * clean rules now only executed from the component's top-level directory, as with CApp GNUmakefiles/StdTools: * Added INSERTVERSION (AwkVers), retired TIDYDESC * Perl scripts now explicitly passed to perl - no need to chmod +x the scripts in RiscOS/Library * asasm/objasm include paths and APCS/Machine/UserIF predefines set to match Makefiles Admin: Tested in a CTools build Version 6.32. Tagged as 'BuildSys-6_32'
-
- 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'
-
- 27 May, 2013 1 commit
-
-
Robert Sprowson authored
Not tagged.
-
- 27 Nov, 2012 1 commit
-
-
Steve Revill authored
I'm hoping to get to the bottom of the (very tricky to reproduce in a sensible amount of time) crashes during Disc and DiscDev builds. Version 6.04. Not tagged
-
- 26 Oct, 2012 1 commit
-
-
Robert Sprowson authored
Version 6.03. Tagged as 'BuildSys-6_03'
-
- 16 Jan, 2012 1 commit
-
-
Steve Revill authored
WIPE is now the same as XWIPE, rather than the annoying "-wipe". Version 5.36. Tagged as 'BuildSys-5_36'
-
- 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 consistency with CApp/CLibrary/CModule than anything to do with the 'C' language, since all of these makefiles work equally well for assembler and 'C' - the 'C' is for historic reasons. * Tweaked the debug rules in CApp to avoid harmless but annoying linker warnings about stubs being included twice. * Added several new default switches to ASFLAGS. These enable us to start making assembler source files work under a cross-assembler, because statements like GET Hdr:Macros GET Hdr:Machine.<Machine> are not portable, and tweaking the cross-assembler to understand these types of constructs would not be pretty. Instead, with the extra command line switches now introduced, you can use GET Macros GET Machine/$Machine Admin: Tested in a ROM build Version 5.12. Tagged as 'BuildSys-5_12'
-
- 19 May, 2010 1 commit
-
-
Ben Avison authored
Detail: CApp: * New variable CLEAN_DEPEND is now the preferred way to specify additional clean actions because GNU make doesn't have an equivalent to amu's :: rules * Can now indicate preference to use C++ linker options using LINK_TYPE * Gains install phase support: + INSTALLAPPFILES lists the files to be copied, effectively specified relative to LocalRes$Path + Adopted INSTTYPE concept from DDE makefiles for cases where executable and support files need to be installed to different locations + Unusual cases can override this implementation using CUSTOMINSTALLAPP and/or CUSTOMINSTALLTOOL CLibrary: * New variable CLEAN_DEPEND is now the preferred way to specify additional clean actions because GNU make doesn't have an equivalent to amu's :: rules * -o is no longer a mandatory argument to libfile - now in ARFLAGS rather than used explicitly DbgRules / StdRules: * Macroised some Norcroft-specific features HostTools: * Clean phase support was incomplete StdTools: * A few additional tool definitions * Added macro definitions for common C options * C's enable-warnings and suppress-function-name-embedding options now on by default because they're usually (maybe even universally?) used - it won't hurt if they're specified again by existing makefiles * C++ now has equivalent INCLUDES and DEFINES variables, and the standard C++ headers are on the default include path * SEP is defined as the directory separator character and can be used from top-level makefiles in a platform-independent way Functionally equivalent versions of the following makefile fragments have been developed so far for executing on a Posix build host: AppLibs, CApp, CLibrary, DbgRules, HostTools, StdRules, StdTools These suport native compilers (when APCS=Host) and cross-compilers, and GCC (when TOOLCHAIN=GNU) and Norcroft toolchains - typically these environment variables would be selected by running an Env file. Admin: Tested by building as many as possible of the DDE components on RISC OS and on Linux, using native and cross compilers, and using Norcroft and GNU toolchains. Version 5.01. Tagged as 'BuildSys-5_01'
-
- 19 Jul, 2009 1 commit
-
-
ROOL authored
Fixed to point at the (new) location of the zip tool and added some useful parameters - this is safe because nothing in the build tree was using this definition of ZIP anyway. Version 4.81. Tagged as 'BuildSys-4_81'
-
- 07 Jun, 2009 1 commit
-
-
Ben Avison authored
Detail: Some users reported problems building the sources if they had other installations of perl on their build machine. The build system was using a mixture of "perl" and "<Perl$Dir>.perl" to invoke the interpreter, and sometimes but not always using "do" to expand system variables on the command line. This has now been standardised to use "do <Perl$Dir>.perl in all cases, and where possible, to use the makefile macro ${PERL}. Admin: Checked that a Tungsten build still works on a build machine with no other perl installation. "perl" was aliased to an error to ensure it wasn't used. Version 4.73. Tagged as 'BuildSys-4_73'
-
- 14 Oct, 2008 1 commit
-
-
Ben Avison authored
This represents the version released in the Batch 4 "bbe" tarfiles. Tagged as 'Batch4'
-