# Makefile fragment for defining the various tools and their options INCLUDED_STDTOOLS = YES # # These are the tool definitions for builds using either the Norcroft or GNU toolchain in a POSIX environment, targetting RISC OS. # ifneq (Host,${APCS}) GNUTOOLPREFIX = arm-unknown-riscos- SUFFIX_MODULE = ,ffa SUFFIX_SPRITE = ,ff9 SUFFIX_ABSOLUTE = ,ff8 SUFFIX_OBEY = ,feb SUFFIX_DEBIMAGE = ,fd3 SUFFIX_SQUASH = ,fca endif SUFFIX_PERL = ,102 SUFFIX_HEADER = .h # # Core toolset. # ifeq (GNU,${TOOLCHAIN}) AOFASM = asasm -aof AR = ${GNUTOOLPREFIX}ar AS = asasm CC = ${GNUTOOLPREFIX}gcc C++ = ${GNUTOOLPREFIX}g++ CMHG = cmunge CPREPRO = gcc -E -x c ELF2AIF = elf2aif ifeq (C++,${LINK_TYPE}) LD = ${GNUTOOLPREFIX}g++ else LD = ${GNUTOOLPREFIX}gcc endif LDBIN = ldbin () { arm-unknown-riscos-objcopy -O binary $$2 $$1; }; ldbin ifneq (Host,${APCS}) STRIP = @echo > /dev/null else STRIP = strip endif else AOFASM = armasm AR = armlib AS = armasm CC = armcc C++ = armcpp CMHG = armcmhg CPREPRO = armcc -C++ -E ELF2AIF = @echo > /dev/null ifeq (C++,${LINK_TYPE}) LD = armlink -c++ else LD = armlink endif LDBIN = armlink -bin -o STRIP = @echo > /dev/null endif BINAOF = binaof CAT = cat #DATA2AOF = datatoaof #DEFMOD = defmod DO = ECHO = echo ERASECVS = @erasecvs () { echo EraseCVS $$1; find $$1 -type d -exec rm -rf '{}/CVS' \; -exec rm -f '{}/.cvstag' \; }; erasecvs FAPPEND = @fappend () { echo FAppend $$@; local temp_file=$$(mktemp); local dest=$$1; shift; cat $$@ > $$temp_file; mv $$temp_file $$dest; }; fappend FILTERCOMP = perl ${TOOLSDIR}/Misc/FilterComp,102 FILTERCOMP2 = perl ${TOOLSDIR}/Misc/FilterComp2,102 GETVERSION = perl ${TOOLSDIR}/Misc/GetVersion,102 HDR2H = perl ${TOOLSDIR}/Build/Hdr2H,102 INSERTVERSION = awk -f ${TOOLSDIR}/Build/AwkVers INSTRES = perl ${TOOLSDIR}/Build/InstRes,102 INSTVIARG = perl ${TOOLSDIR}/Build/InstViaRG,102 ifeq (objs,$(notdir ${CURDIR})) MAKE = make -C.. else MAKE = make endif MODGEN = modgen MODSQZ = modsqz NOP = # PERL = perl RESGEN = resgen RM = rm -f #SETTYPE = settype SQUASH = Squash ifneq (Host,${APCS}) SQZ = armsqueeze else SQZ = @echo > /dev/null endif #STRIPDEPEND = stripdepnd #TOGPA = ToGPA #TOKENCHECK = tokencheck TOKENISE = Tokenise TOUCH = touch #TRANSLATE = translate #UNMODSQZ = unmodsqz AWK = awk CD = cd CHMOD = chmod DF = df DIFF = diff EGREP = egrep FIND = find GAWK = gawk #IDENT = GNU.ident LEX = flex LS = ls MKDIR = mkdir -p PWD = pwd RPCGEN = rpcgen SED = sed WC = wc YACC = bison ZIP = zip -9qr UNZIP = unzip # # Standard options. These can be added to or overridden in the # including makefile. # STDTOOLOPTIONS = ${THROWBACK} ASFLAGS += ${STDTOOLOPTIONS} ${ASMDEFINES} ${ASMINCLUDES} ASFLAGS += -I${GLOBALHDRDIR} -I${EXPORTDIR} ASFLAGS += -PD "APCS SETS \"${APCS}\"" -PD "Machine SETS \"${MACHINE}\"" -PD "UserIF SETS \"${USERIF}\"" ifeq (GNU,${TOOLCHAIN}) ifeq (Host,${APCS}) CINCLUDES += -I${LIBDIR}/CLib C++INCLUDES += -I${LIBDIR}/CLib else # GCCSDK seems to use the CLib headers instead of its own ones, which is a bad thing unless/until they gain GCC compatibility endif else CINCLUDES += -I${LIBDIR}/CLib C++INCLUDES += -I${LIBDIR}/CLib endif CINCLUDES += -I${LIBDIR}/RISC_OSLib \ -I${CEXPORTDIR} \ -I${LIBDIR} \ -I. C++INCLUDES += -I${LIBDIR}/RISC_OSLib \ -I${CEXPORTDIR} \ -I${LIBDIR} \ -I. ifeq (GNU,${TOOLCHAIN}) ifeq (Host,${APCS}) C++INCLUDES += -I${LIBDIR}/c++lib else # GCCSDK seems to use the C++Lib headers instead of its own ones, which is a bad thing unless/until they gain GCC compatibility endif else C++INCLUDES += -I${LIBDIR}/c++lib endif CFLAGS += -c ${STDTOOLOPTIONS} ${CDEFINES} ${CINCLUDES} ${C_NO_FNAMES} ${C_WARNINGS} C++FLAGS += -c ${STDTOOLOPTIONS} ${C++DEFINES} ${C++INCLUDES} CMHGFLAGS += -p ${STDTOOLOPTIONS} ${CMHGDEFINES} ${CMHGINCLUDES} ifeq (GNU,${TOOLCHAIN}) ARFLAGS := r ASFLAGS += ${ASASM_TOOLOPTIONS} CFLAGS += ${GCC_TOOLOPTIONS} -O2 -std=c99 C++FLAGS += -O2 CMHGFLAGS += ${CMUNGE_TOOLOPTIONS} C_WARNINGS := -Wall -Wextra C_OPTSIZE := -Os C_OPTSPEED := -O3 C_NO_ZI := -fno-zero-initialized-in-bss ifeq (Host,${APCS}) GCC_TOOLOPTIONS := else C_NO_STKCHK := -mno-apcs-stack-check C_STKCHK := -mapcs-stack-check C_NO_FNAMES := -mno-poke-function-name C_FNAMES := -mpoke-function-name C_MODULE := -mmodule CFLAGS += -mlibscl C++FLAGS += -mlibscl LDFLAGS += -mlibscl endif C_NOWARN_ASSIGNMENT_AS_CONDITION := -Wno-parentheses C_NOWARN_NON_ANSI_INCLUDES := else ARFLAGS := -c -o ASFLAGS += ${OBJASM_TOOLOPTIONS} -Stamp -quit CFLAGS += ${NCC_TOOLOPTIONS} CMHGFLAGS += ${TOOLOPTIONS} C_WARNINGS := -fah C_OPTSIZE := -Ospace C_OPTSPEED := -Otime C_NO_ZI := -zz100000 C_NO_STKCHK := -zps1 C_STKCHK := -zps0 C_NO_FNAMES := -ff C_FNAMES := -fn C_MODULE := -zM C_NOWARN_ASSIGNMENT_AS_CONDITION := -Wa C_NOWARN_NON_ANSI_INCLUDES := -Wp endif # # Recursive forced copying options. # # CPFLAGS go after the arguments # CPPREFLAGS go before the arguments # CPFLAGS = CPVFLAGS = CPPREFLAGS = -afL CP = cp ${CPPREFLAGS} # # Recursive forced deletion with no errors. # # WFLAGS go after the arguments # WPREFLAGS go before the arguments # WFLAGS = WPREFLAGS = -rf WIPE = rm ${WPREFLAGS} # Alternative version (implementation differs on RISC OS). XWIPE = rm ${WPREFLAGS} # Directory separator character SEP = / # Filename extension separator character EXT = . # Parent directory PARENT = .. # EOF