1. 15 May, 2021 1 commit
    • Ben Avison's avatar
      Support application and module targets with differing compiler flags · a7947759
      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.
      a7947759
  2. 31 Mar, 2011 1 commit
    • Ben Avison's avatar
      Improvements to shared makefiles · 684d01e3
      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'
      684d01e3
  3. 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
  4. 14 Oct, 2008 1 commit