1. 15 May, 2021 4 commits
    • Ben Avison's avatar
      Support links for extension-less files in subdirectories · 9b0aed8c
      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'
      9b0aed8c
    • Ben Avison's avatar
      Always implicitly include StdTools when cross-compiling · b1e26d51
      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.
      b1e26d51
    • Ben Avison's avatar
      Permit makefiles using CLibrary to cross-compile `export` target · 6ffb78b8
      Ben Avison authored
      This brings it into line with AAsmModule and CModule shared makefiles
      6ffb78b8
    • Ben Avison's avatar
      Allow components using CLibrary shared Makefile to specify additional exports · 51f761a1
      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.
      51f761a1
  2. 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
        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'
      5e83cb7e
  3. 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.50)
        * Add CPVFLAGS (see BuildSys 6.53) although it can't achieve anything as a suffix to the command
        * Add shell implementation of EraseCVS (see BuildSys 6.53)
        * Add InstViaRG tool (see BuildSys 6.70)
      
      
      Version 7.21. Tagged as 'BuildSys-7_21'
      d8eeed92
  4. 11 Nov, 2013 1 commit
    • Ben Avison's avatar
      Changes to keep GNUmakefiles and Makefiles compatible · 3542e171
      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'
      3542e171
  5. 05 Feb, 2012 1 commit
  6. 12 Sep, 2011 1 commit
    • Ben Avison's avatar
      Fixes to shared makefiles · 70323f40
      Ben Avison authored
      Detail:
        The change which permitted top-level makefiles to include only CApp,
        CModule etc accidentally broke makefiles which included HostTools (StdTools
        got included instead and overwrote the HostTools settings). Amazingly, we
        seem to have got away with this so far - but fixed now. Also, brought the
        GNUmakefiles versions in line with updates to the amu Makefiles in this
        and other respects.
      Admin:
        Tested in a RISC OS ROM build, and for building cross-compiling versions
        of the tools.
      
      Version 5.21. Tagged as 'BuildSys-5_21'
      70323f40
  7. 19 May, 2010 1 commit
    • Ben Avison's avatar
      Changes to facilitate platform independence. · 4477e695
      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'
      4477e695