• 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 c...
    684d01e3
ROMModule 2 KB
# Copyright 2008 Castle Technology Ltd
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Makefile fragment for assembler modules targetted at ROMming, built using objasm

INCLUDED_ROMMODULE = YES

#
# $Id$
#
# This makefile provides the following phony targets:
#
#    all     install_ram
#
#
# This fragment uses the following macros set by the master makefile.
#
#
# COMPONENT        (the name of the component)
# TARGET           (leafname of component being built)
# ROM_MODULE       (output filename of module)
# ROM_OBJS         (component's object files for romming)
# ROM_LIBS         (libraries to link again ROM_OBJS to generate ROM_MODULE)
# DIRS     (opt)   (magic target to ensure object directories are present)
#
#
# It relies on the following from the build system:
#
#
# INSTDIR          (installation directory for ROM_MODULE)
#
#
# It relies on the following generic tool macros from the Tools makefile
#
# CP + CPFLAGS     (copy, cp etc.)
# MKDIR            (cdir/mkdir -p)
# ECHO
# LD + LDFLAGS     (linker)
# LDROMFLAGS       (more linker flags)

#
# RISC OS ROM build rules:
#
rom: ${ROM_MODULE}
        @${ECHO} ${COMPONENT}: rom module built

install_rom: ${ROM_MODULE}
        ${CP} ${ROM_MODULE} ${INSTDIR}.${TARGET} ${CPFLAGS}
        @${ECHO} ${COMPONENT}: rom module installed

#
# Actually make the linked ROM target 
#
${ROM_MODULE}: ${ROM_OBJS} ${ROM_LIBS} ${DIRS}
        ${MKDIR} rm
        ${LD} ${LDFLAGS} ${LDROMFLAGS} -o $@ -rmf ${ROM_OBJS} ${ROM_LIBS}
        ${CHMOD} -R a+rx rm

EOFSTDMAKEFILE=$Id$
# EOF