# 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 C and C++ modules

INCLUDED_CMODULE = YES

#
# $Id$
#
# This makefile provides the following phony targets:
#
#    all 
#    export  export_hdrs  export_libs
#    resources
#    rom  rom_link
#    standalone  install
#    debug  gpa_debug
#    prepro
#    clean
#
#
# This fragment uses the following macros set by the master makefile.
#
#
# COMPONENT          (the name of the component)
# TARGET       (opt) (the leafname of the module - otherwise ${COMPONENT})
# ROM_TARGET   (opt) (partially linked module leafname - otherwise ${TARGET} in aof)
# LNK_TARGET   (opt) (fixed-position module leafname - otherwise ${TARGET} in linked)
# SA_TARGET    (opt) (standalone module leafname - otherwise ${TARGET} in rm)
# DBG_TARGET   (opt) (debug module leafname - otherwise ${TARGET}D in rm)
# AIF_TARGET   (opt) (GPA-intermediate leafname - otherwise ${TARGET} in aif)
# GPA_TARGET   (opt) (GPA debug leafname - otherwise ${TARGET} in gpa)
# INSTDIR      (opt) (the target directory - otherwise <Install$Dir>)
# C_EXP_HDR    (opt) (C header target directory - otherwise <cexport$dir>.Interface.h)
# EXP_HDR      (opt) (assembly header target directory - otherwise <export$dir>
# DIRS         (opt) (stamp object for directory creation - otherwise o._dirs)
# HDRS         (opt) (C header files to export, no h. prefix - otherwise ${TARGET})
# ASMHDRS      (opt) (assembly header files to export, no Hdr. prefix - otherwise none)
# ASMCHDRS     (opt) (C-from-assembly auto-generated header files to export, no Hdr. prefix - otherwise none)
# INSTRES_FILES   (opt) (extra resource files in addition to Messages - use InstRes specification rules)
# INSTRAM_FILES   (opt) (RAM build specific resources - otherwise ${INSTRES_FILES})
# INSTROM_FILES   (opt) (ROM build specific resources - otherwise ${INSTRES_FILES})
# INSTR??_DEPENDS (opt) (any extra dependency to assert on INSTRES/INSTRAM/INSTROM_FILES)
# MERGEDRDIR      (r/o) (directory for generating exported resources, for information only)
# MERGEDMSGS      (r/o) (leafname of generated Messages file, for compatibility with AAsmModule)
# RESFSDIR        (opt) (actual directory to export resources to - otherwise ${RESDIR}.${TARGET})
# RES_AREA        (opt) (area name to use for embedded messages in standalone build - otherwise Resources)
# RES_OBJ         (opt) (object file for embedded messages in standalone build, no o.prefix - otherwise ${TARGET}Msgs)
# RES_PATH        (opt) (path relative to ResourceFS root to be suffixed by ${TARGET} - otherwise Resources)
# CMHGFILE     (opt) (name of CMHG source file, no cmhg. prefix - otherwise ${TARGET}Hdr)
# CMHGAUTOHDR  (opt) (header file, if any, from HDRS or ASMCHDRS, to which to append the SWI defines from CMHG)
# CMHGFILE_SWIPREFIX (opt) (name of SWI prefix used in CMHG file - otherwise ${TARGET})
# OBJS         (opt) (object files, no o. prefixes - otherwise ${TARGET} ${CMHGFILE})
# ROM_OBJS     (opt) (ROM build objects - otherwise ${OBJS})
# SA_OBJS      (opt) (standalone build objects - otherwise ${OBJS})
# DBG_OBJS     (opt) (debug build object files, no prefixes - otherwise ${OBJS})
# LIBS         (opt) (extra libraries; ${CLIB} is always used)
# ROM_LIBS     (opt) (libraries to link for ROM targets - otherwise ${LIBS})
# SA_LIBS      (opt) (libraries to link for standalone targets - otherwise ${LIBS})
# DBG_LIBS     (opt) (extra debug libraries in addition to SA_LIBS and DEBUGLIBS)
# ROM_DEPEND   (opt) (any extra dependency to assert on ROM_TARGET)
# SA_DEPEND    (opt) (any extra dependency to assert on SA_TARGET and DBG_TARGET)
# TOKHELPDEPENDS (opt) (set to any source files which need to include any autogenerated tokenised help file - otherwise ${OBJS})
# TOKHELPSRC   (opt) (set equal to ${TOKENSOURCE} to indicate that the binary depends on autogenerated tokenised help source file of that name)
# HELPSRC      (opt) (set to filename containing untokenised help messages if ${TOKHELPSRC} = ${TOKENSOURCE})
# TOKENS       (opt) (set to filename containing help message tokens - otherwise Hdr:Tokens)
# CUSTOMEXP    (opt) (set to "custom" to override the export rules)
# CUSTOMRES    (opt) (set to "custom" to override the resources rules, or "no" for no resources)
# CUSTOMROM    (opt) (set to "custom" to override the rom rules)
# CUSTOMSA     (opt) (set to "custom" to override the standalone rules)
# CUSTOMDBG    (opt) (set to "custom" to override the debug rules)
# CUSTOMGPA    (opt) (set to "custom" to override the GPA rules)
# RAMCDEFINES  (opt) (additions to CDEFINES for RAM builds - requires ModStdRule to be included later)
# ROMCDEFINES  (opt) (additions to CDEFINES for ROM builds - requires ModStdRule to be included later)
# RAMASMDEFINES (opt) (additions to ASMDEFINES for RAM builds - requires ModStdRule to be included later)
# ROMASMDEFINES (opt) (additions to ASMDEFINES for ROM builds - requires ModStdRule to be included later)
# CMHGDEPENDS  (opt) (source files which need to include the .h file autogenerated from the CMHG file)
# ASM2TXT      (opt) (source file to be autogenerated using objasm as a text generator; second word if present is "extension" subdirectory to place output into)
# ASM2TXT_SUBDIR (opt) (non-"extension" subdirectory to place ASM2TXT file into)
# MODULEWRAP   (opt) (set to "yes" to build and link with the modulewrap veneer from RISC_OSLib)
#
#
# It relies on the following from the build system:
#
#
# PHASE            (export phase discriminator)
# CMDHELP          (whether star command help/syntax strings are included)
# RESDIR           (installation directory for resources - cf. RESFSDIR)
# FORCEROMLINK     (set to force a relink of the ROM target, used in BBE)
# LINKDIR          (installation directory for LNK_TARGET)
# ADDRESS          (base address for LNK_TARGET)
# INSERTVERSION    (awk script to substitute from VersionNum)
#
#
# It relies on the following generic tool macros from the StdTools makefile
#
#
# C + CFLAGS       (C compiler; CDFLAGS also used in debug builds; -g implicit)
# CP + CPFLAGS     (copy, cp etc.)
# WIPE + WFLAGS    (recursive delete)
# RM               (non-recursive delete)
# AS + ASFLAGS     (assembler)
# LD + LDFLAGS     (linker; LDDFLAGS also used in debug builds; -d implicit)
# LDRAMFLAGS       (more linker flags)
# LDROMFLAGS       (more linker flags)
# LDLINKFLAGS      (flags for the rom_link phase)
# MODSQZ + MODSQZFLAGS (module binary compressor)
# CHMOD
# MKDIR            (cdir/mkdir -p)
# ECHO
# TOUCH            (create/touch)
# TOKENCHECK
# RESGEN
# TOGPA
#
#
# It relies on the following from the StdRules makefile
#
#
# .c.o  .c++.o  .cpp.o  .s.o
#
#
# It relies on the following from the ModStdRule makefile
#
#
# .cmhg.h  .cmhg.o
#
#
# It relies on the following from the DbgRules makefile
#
#
# CDFLAGS  C++DFLAGS  ASDFLAGS  LDDFLAGS
# .c.od  .c++.od  .cpp.od  .s.od
#
#

INSTALLDIR    = <Install$Dir>
EXPDIR        = <export$dir>
CEXPDIR       = <cexport$dir>

TARGET       ?= ${COMPONENT}
ROM_TARGET   ?= ${TARGET}
LNK_TARGET   ?= ${TARGET}
SA_TARGET    ?= ${TARGET}
DBG_TARGET   ?= ${TARGET}D
AIF_TARGET   ?= ${TARGET}
GPA_TARGET   ?= ${TARGET}
INSTDIR      ?= ${INSTALLDIR}
C_EXP_HDR    ?= ${CEXPDIR}.Interface.h
EXP_HDR      ?= ${EXPDIR}
DIRS         ?= o._dirs
HDRS         ?= ${TARGET}
ASMHDRS      ?= 
ASMCHDRS     ?= 
INSTRAM_FILES   ?= ${INSTRES_FILES}
INSTRAM_DEPENDS ?= ${INSTRES_DEPENDS}
INSTROM_FILES   ?= ${INSTRES_FILES}
INSTROM_DEPENDS ?= ${INSTRES_DEPENDS}
MERGEDRDIR   ?= o._ResData_
MERGEDMSGS   ?= ${MERGEDRDIR}.${TARGET}.Messages
RES_AREA     ?= Resources
RES_OBJ      ?= ${TARGET}Msgs
RES_PATH     ?= Resources
RESFSDIR     ?= ${RESDIR}.${TARGET}
CMHGFILE     ?= ${TARGET}Hdr
CMHGFILE_SWIPREFIX ?= ${TARGET}
OBJS         ?= ${TARGET}
ifeq ("${MODULEWRAP}","yes")
OBJS         += modulewrap
endif
ROM_OBJS     ?= ${OBJS}
SA_OBJS      ?= ${OBJS}
DBG_OBJS     ?= ${OBJS}
ROM_OBJS     += ${CMHGFILE}
SA_OBJS      += ${CMHGFILE}
DBG_OBJS     += ${CMHGFILE}
ifeq ($(filter no custom,${CUSTOMRES}),)
RESDIR       ?= ${MERGEDRDIR}  # Place to internally collect up contents of RES_OBJ
SA_OBJS      += ${RES_OBJ}
DBG_OBJS     += ${RES_OBJ}
endif
TOKHELPDEPENDS ?= ${OBJS}
ROM_LIBS     ?= ${LIBS}
SA_LIBS      ?= ${LIBS}
ROM_LIBS     += ${ROMCSTUBS}
ROM_SYMS     ?= ${C_ABSSYM}
SA_LIBS      += ${CLIB}
DBG_LIBS     += ${DEBUGLIBS}

ROM_OBJS_     = $(addprefix o.,${ROM_OBJS})
SA_OBJS_      = $(addprefix o.,${SA_OBJS})
DBG_OBJS_     = $(addprefix od.,${DBG_OBJS})
PP_OBJS_      = $(addprefix i.,$(filter-out ${CMHGFILE} ${RES_OBJ},${DBG_OBJS}))
EXPORTING_HDRS     = $(addprefix exphdr.,${HDRS})
EXPORTING_ASMHDRS  = $(addprefix expasm.,${ASMHDRS})
EXPORTING_ASMCHDRS = $(addprefix expasmc.,${ASMCHDRS})

ifeq ($(filter rom%,${MAKECMDGOALS}),)
CDEFINES     += ${RAMCDEFINES}
ASMDEFINES   += ${RAMASMDEFINES}
RES_FILES_    = ${INSTRAM_FILES}
RES_DEPENDS_  = ${INSTRAM_DEPENDS}
else
CDEFINES     += ${ROMCDEFINES}
ASMDEFINES   += ${ROMASMDEFINES}
RES_FILES_    = ${INSTROM_FILES}
RES_DEPENDS_  = ${INSTROM_DEPENDS}
endif

ifneq ($(filter debug%,${MAKECMDGOALS}),)
CMHGFLAGS    += ${CMHGDFLAGS}  # Affects both object and header generation 
endif

TOKENS       ?= Hdr:Tokens
# Unlike with AAsmModule, we enforce this filename, to prevent any cross-compilation issues being introduced
TOKENSOURCE  := s.TokHelpSrc

ASM2TXT_BASE := $(word 1,${ASM2TXT})
ASM2TXT_EXT  := $(word 2,${ASM2TXT})
ifneq ("${ASM2TXT_EXT}","")
ASM2TXT_EXT  := ${ASM2TXT_EXT}.
endif

ifeq ("${INCLUDED_STDTOOLS}","")
include StdTools
endif
ifeq ("${INCLUDED_MODULELIBS}","")
include ModuleLibs
endif

CFLAGS       := -zM -zps1 ${CFLAGS}

ifeq ("${INCLUDED_MODSTDRULE}","")
include ModStdRule
endif
ifeq ("${INCLUDED_DBGRULES}","")
include DbgRules
endif

ifneq ("${ASM2TXT}","")
ifneq ($(findstring ${ASM2TXT_BASE},${ASMHDRS}),)
expasm.${ASM2TXT_BASE}: hdr.${ASM2TXT_BASE}
        ${CP} hdr.${ASM2TXT_BASE} ${EXP_HDR}.${ASM2TXT_BASE} ${CPFLAGS}
endif
ifneq ($(findstring ${ASM2TXT_BASE},${HDRS}),)
exphdr.${ASM2TXT_BASE}: h.${ASM2TXT_BASE}
        ${CP} h.${ASM2TXT_BASE} ${C_EXP_HDR}.${ASM2TXT_BASE} ${CPFLAGS}
endif
${ASM2TXT_SUBDIR}${ASM2TXT_EXT}${ASM2TXT_BASE}: o.${ASM2TXT_BASE} ${DIRS}
        ${LD} -bin -o $@ o.${ASM2TXT_BASE}
        ${SETTYPE} $@ Text
endif

#
# General rules
#
all: aof.${ROM_TARGET} rm.${SA_TARGET} rm.${DBG_TARGET}
        @${ECHO} ${COMPONENT}: all built

${DIRS} ::
        ${MKDIR} aif
        ${MKDIR} aof
        ${MKDIR} i
        ${MKDIR} linked
        ${MKDIR} gpa
        ${MKDIR} o
        ${MKDIR} od
        ${MKDIR} rm
        ${TOUCH} $@

#
# Clean the module
#
clean ::
        @IfThere aif    Then ${ECHO} ${WIPE} aif ${WFLAGS}
        @IfThere aif    Then ${WIPE} aif ${WFLAGS}
        @IfThere aof    Then ${ECHO} ${WIPE} aof ${WFLAGS}
        @IfThere aof    Then ${WIPE} aof ${WFLAGS}
        @IfThere i      Then ${ECHO} ${WIPE} i ${WFLAGS}
        @IfThere i      Then ${WIPE} i ${WFLAGS}
        @IfThere linked Then ${ECHO} ${WIPE} linked ${WFLAGS}
        @IfThere linked Then ${WIPE} linked ${WFLAGS}
        @IfThere gpa    Then ${ECHO} ${WIPE} gpa ${WFLAGS}
        @IfThere gpa    Then ${WIPE} gpa ${WFLAGS}
        @IfThere o      Then ${ECHO} ${WIPE} o ${WFLAGS}
        @IfThere o      Then ${WIPE} o ${WFLAGS}
        @IfThere od     Then ${ECHO} ${WIPE} od ${WFLAGS}
        @IfThere od     Then ${WIPE} od ${WFLAGS}
        @IfThere rm     Then ${ECHO} ${WIPE} rm ${WFLAGS}
        @IfThere rm     Then ${WIPE} rm ${WFLAGS}
        @IfThere h.${CMHGFILE} Then ${ECHO} ${RM} h.${CMHGFILE}
        @IfThere h.${CMHGFILE} Then ${RM} h.${CMHGFILE}
        @-${RM} ${TOKENSOURCE}
ifneq ("${ASM2TXT}","")
        @-${RM} ${ASM2TXT_SUBDIR}${ASM2TXT_EXT}${ASM2TXT_BASE}
endif
ifeq ("${MODULEWRAP}","yes")
        @-${RM} s.modulewrap
endif
        @${ECHO} ${COMPONENT}: cleaned

#
# Export phases
#
export${CUSTOMEXP}: export_${PHASE}
        @${NOP}

export_: export_libs export_hdrs
        @${NOP}

create_exp_hdr_dirs:
        ${MKDIR} ${C_EXP_HDR}
        ${MKDIR} ${EXP_HDR}

ifneq (${CMHGFILE},)
o._h_${CMHGAUTOHDR}: h.${CMHGFILE} ${DIRS}
        ${DO} ${AWK} -- "/.ifndef ${CMHGFILE_SWIPREFIX}/,/endif/" h.${CMHGFILE} > o._h_${CMHGAUTOHDR}
endif

ifneq ($(findstring ${CMHGAUTOHDR},${HDRS}),)
exphdr.${CMHGAUTOHDR}: h.${CMHGAUTOHDR} o._h_${CMHGAUTOHDR}
        ${FAPPEND} ${C_EXP_HDR}.${CMHGAUTOHDR} h.${CMHGAUTOHDR} o._h_${CMHGAUTOHDR}
endif

ifneq ($(findstring ${CMHGAUTOHDR},${ASMCHDRS}),)
expasmc.${CMHGAUTOHDR}: hdr.${CMHGAUTOHDR} o._h_${CMHGAUTOHDR}
        ${HDR2H} hdr.${CMHGAUTOHDR} ${C_EXP_HDR}.${CMHGAUTOHDR}
        ${FAPPEND} ${C_EXP_HDR}.${CMHGAUTOHDR} ${C_EXP_HDR}.${CMHGAUTOHDR} o._h_${CMHGAUTOHDR}
endif

ifneq (${CMHGDEPENDS},)
CMHGDEPENDS_ = $(addprefix o.,${CMHGDEPENDS}) $(addprefix od.,${CMHGDEPENDS}) $(addprefix i.,${CMHGDEPENDS})
${CMHGDEPENDS_}: h.${CMHGFILE}
endif

ifeq (${TOKHELPSRC},${TOKENSOURCE})
TOKHELPDEPENDS_ = $(addprefix o.,${TOKHELPDEPENDS}) $(addprefix od.,${TOKHELPDEPENDS})
${TOKHELPDEPENDS_}: ${TOKHELPSRC}
endif

${TOKENSOURCE}: ${HELPSRC} ${TOKENS}
        ${TOKENISE} ${TOKENS} ${HELPSRC} $@

ifeq ("${MODULEWRAP}","yes")
s.modulewrap: RISCOSLIB:s.modulewrap
        ${CP} RISCOSLIB:s.modulewrap $@ ${CPFLAGS}

o.modulewrap od.modulewrap: s.modulewrap
        ${AS} ${ASFLAGS} -o $@ s.modulewrap
endif

.SUFFIXES: .exphdr .expasm .expasmc .h .hdr
.h.exphdr:;    @${ECHO} ${CP} $< ${C_EXP_HDR}.$(subst h.,,$<) ${CPFLAGS} ; ${CP} $< ${C_EXP_HDR}.$(subst h.,,$<) ${CPFLAGS} 
.hdr.expasm:;  @${ECHO} ${CP} $< ${EXP_HDR}.$(subst hdr.,,$<) ${CPFLAGS} ; ${CP} $< ${EXP_HDR}.$(subst hdr.,,$<) ${CPFLAGS} 
.hdr.expasmc:; @${ECHO} ${HDR2H} $< ${C_EXP_HDR}.$(subst hdr.,,$<)       ; ${HDR2H} $< ${C_EXP_HDR}.$(subst hdr.,,$<)

export_hdrs${CUSTOMEXP}: ${EXPORTING_ASMCHDRS} ${EXPORTING_ASMHDRS} ${EXPORTING_HDRS} ${DIRS} create_exp_hdr_dirs
        @${ECHO} ${COMPONENT}: header export complete

export_libs${CUSTOMEXP}:
        @${ECHO} ${COMPONENT}: no exported libraries

#
# Resources rules
#
resources${CUSTOMRES}:: resources-${CMDHELP}
        @${ECHO} ${COMPONENT}: resources copied to Messages module

ifeq (${CUSTOMRES},no)
resources:
        @${ECHO} ${COMPONENT}: no resources to export
endif        

resources_extra: ${RES_DEPENDS_}
ifneq (${RES_FILES_},)
        ${INSTRES} -I Resources.${USERIF}.${LOCALE},Resources.${USERIF}.UK,Resources.${LOCALE},Resources.UK,Resources ${RESFSDIR} ${RES_FILES_}
endif
ifneq (,$(filter Messages,${INSTRES_VERSION}))
        ${INSERTVERSION} ${RESFSDIR}.Messages > ${RESFSDIR}._Awk_
        ${CP} ${RESFSDIR}._Awk_ ${RESFSDIR}.Messages ${CPFLAGS}
        ${RM} ${RESFSDIR}._Awk_
        ${TOUCH} -r LocalRes:Messages ${RESFSDIR}.Messages
endif
        @${NOP}

resources_common:
        ${MKDIR} ${RESFSDIR}
        ${TOKENCHECK} LocalRes:Messages
        ${CP} LocalRes:Messages ${RESFSDIR}.Messages ${CPFLAGS}

resources_cmdhelp:
        IfThere LocalRes:CmdHelp Then ${TOKENCHECK} LocalRes:CmdHelp
        IfThere LocalRes:CmdHelp Then ${FAPPEND} ${RESFSDIR}.Messages LocalRes:Messages LocalRes:CmdHelp

resources-None: resources_extra resources_common 
        @${NOP}

resources-: resources_extra resources_cmdhelp resources_common
        @${NOP}

o.${RES_OBJ}: resources-${CMDHELP} ${DIRS}
        ${INSTVIARG} ${MERGEDRDIR} ${RES_PATH} o._ResGen_
        ${RESGEN} ${RES_AREA} $@ -via o._ResGen_

od.${RES_OBJ}: o.${RES_OBJ}
        ${CP} o.${RES_OBJ} $@ ${CPFLAGS}

#
# ROM build rules
#
rom${CUSTOMROM}: aof.${ROM_TARGET}
        @${ECHO} ${COMPONENT}: rom module built

rom_link${CUSTOMROM}: linked.${LNK_TARGET}
        ${CP} linked.${LNK_TARGET} ${LINKDIR}.${TARGET} ${CPFLAGS}
        ${CP} linked.${LNK_TARGET}_sym ${LINKDIR}.${TARGET}_sym ${CPFLAGS}
        @${ECHO} ${COMPONENT}: rom_link complete

aof.${ROM_TARGET}: ${ROM_OBJS_} ${ROM_LIBS} ${DIRS} ${ROM_DEPEND}
        ${LD} -o $@ -aof ${ROM_OBJS_} ${ROM_LIBS}

linked.${LNK_TARGET}: aof.${ROM_TARGET} ${ROM_SYMS} ${FORCEROMLINK}
        ${LD} ${LDFLAGS} ${LDLINKFLAGS} -o $@ -rmf -base ${ADDRESS} aof.${ROM_TARGET} ${ROM_SYMS} -Symbols linked.${LNK_TARGET}_sym

#
# Standalone rules
#
install${CUSTOMSA}: rm.${SA_TARGET}
        ${MKDIR} ${INSTDIR}
        ${CP} rm.${SA_TARGET} ${INSTDIR}.${TARGET} ${CPFLAGS}
        @${ECHO} ${COMPONENT}: ram module installed

standalone${CUSTOMSA}: rm.${SA_TARGET}
        @${ECHO} ${COMPONENT}: ram module built

debug${CUSTOMDBG}: rm.${DBG_TARGET}
        @${ECHO} ${COMPONENT}: debug module built

gpa_debug${CUSTOMGPA}: gpa.${GPA_TARGET}
        @${ECHO} ${COMPONENT}: GPA debug built

prepro: ${PP_OBJS_} ${DIRS}
        @${ECHO} ${COMPONENT}: sources preprocessed

rm.${SA_TARGET}: ${SA_OBJS_} ${SA_LIBS} ${DIRS} ${SA_DEPEND}
        ${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${SA_OBJS_} ${SA_LIBS}
        ${MODSQZ} ${MODSQZFLAGS} $@
        ${CHMOD} -R a+rx rm

rm.${DBG_TARGET}: ${DBG_OBJS_} ${DBG_LIBS} ${SA_LIBS} ${DIRS} ${SA_DEPEND}
        ${LD} ${LDFLAGS} ${LDRAMFLAGS} -o $@ -rmf ${DBG_OBJS_} ${DBG_LIBS} ${SA_LIBS}
        ${CHMOD} -R a+rx rm

gpa.${GPA_TARGET}: aif.${AIF_TARGET}
        ${TOGPA} -s aif.${AIF_TARGET} $@

aif.${AIF_TARGET}: rm.${DBG_TARGET}
        ${LD} -aif -bin -d -o aif.${AIF_TARGET} ${DBG_OBJS_} ${DBG_LIBS} ${SA_LIBS}

# EOF