view rules.mak @ 2859:3a3cbc11ea9d lwtools-port

Make build fail if first level subdirectory fails The build process was ignoring a failed target and kept on building others. For instance, If NITROS9DIR was not set and there was no $HOME/nitros9 the build would spiral down in infinite make recursion instead of just quit on first failure (at least for some targets). Now all listed subdirectories must build successfully. This change should be generalized to lower level directories as well. Also add some dummy targets where appropriate so that the build does not fail where nothing really should be built.
author Tormod Volden <debian.tormod@gmail.com>
date Sat, 13 Jul 2013 14:59:26 +0200
parents d5220b220313
children 28ed72477814
line wrap: on
line source

# The NitrOS-9 Project
# Project-Wide Rules

# Environment variables are now used to specify any directories other
# than the defaults below:
#
#   NITROS9DIR   - base directory of the NitrOS-9 project on your system
#
# If the defaults below are fine, then there is no need to set any
# environment variables.


# NitrOS-9 version, major and minor release numbers are here
NOS9VER	= 3
NOS9MAJ	= 2
NOS9MIN	= 9

# Set this to 1 to turn on "DEVELOPMENT" message in sysgo
NOS9DBG = 1

#################### DO NOT CHANGE ANYTHING BELOW THIS LINE ####################

CC		= c3

NITROS9VER	= v0$(NOS9VER)0$(NOS9MAJ)0$(NOS9MIN)

ifndef	NITROS9DIR
NITROS9DIR	= $(HOME)/nitros9
endif
ifndef	CLOUD9DIR
CLOUD9DIR	= $(HOME)/cloud9
endif

C9		= $(CLOUD9DIR)
DEFSDIR		= $(NITROS9DIR)/defs
DSKDIR		= $(NITROS9DIR)/dsks


# If we're using the OS-9 emulator and the *real* OS-9 assembler,
# uncomment the following two lines.
#AS		= os9 /mnt2/src/ocem/os9/asm
#ASOUT		= o=

# Use the cross assembler
#AS		= os9asm -i=$(DEFSDIR)
AS		= lwasm --6309 --format=os9 --pragma=pcaspcr,nosymbolcase,condundefzero,undefextern,dollarnotlocal --includedir=. --includedir=$(DEFSDIR)
ASROM		= lwasm --6309 --format=raw --pragma=pcaspcr,nosymbolcase,condundefzero,undefextern,dollarnotlocal --includedir=. --includedir=$(DEFSDIR)
ASBIN		= lwasm --6309 --format=decb --pragma=pcaspcr,nosymbolcase,condundefzero,undefextern,dollarnotlocal --includedir=. --includedir=$(DEFSDIR)
ASOUT		= -o
AFLAGS		= -DNOS9VER=$(NOS9VER) -DNOS9MAJ=$(NOS9MAJ) -DNOS9MIN=$(NOS9MIN) -DNOS9DBG=$(NOS9DBG)
ifdef PORT
AFLAGS		+= -D$(PORT)=1
endif

# RMA/RLINK
ASM		= lwasm --6309 --format=obj --pragma=pcaspcr,condundefzero,undefextern,dollarnotlocal,export --includedir=.
LINKER		= lwlink --format=os9
LWAR		= lwar -c

# Commands
MAKDIR		= os9 makdir
RM		= rm -f
MERGE		= cat
MOVE		= mv
ECHO		= echo
CD		= cd
CP		= cp
OS9COPY		= os9 copy -o=0
CPL		= $(OS9COPY) -l
TAR		= tar
CHMOD		= chmod
IDENT		= os9 ident
IDENT_SHORT	= $(IDENT) -s
#UNIX2OS9	= u2o
#OS92UNIX	= o2u
OS9FORMAT	= os9 format -e
OS9FORMAT_SS35	= os9 format -e -t35 -ss -dd
OS9FORMAT_SS40	= os9 format -e -t40 -ss -dd
OS9FORMAT_SS80	= os9 format -e -t80 -ss -dd
OS9FORMAT_DS40	= os9 format -e -t40 -ds -dd
OS9FORMAT_DS80	= os9 format -e -t80 -ds -dd
OS9FORMAT_DW	= os9 format -t1024 -ss -dd
OS9GEN		= os9 gen
OS9RENAME	= os9 rename
OS9ATTR		= os9 attr -q
OS9ATTR_TEXT	= $(OS9ATTR) -npe -npw -pr -ne -w -r
OS9ATTR_EXEC	= $(OS9ATTR) -pe -npw -pr -e -w -r
PADROM		= os9 padrom
MOUNT		= sudo mount
UMOUNT		= sudo umount
LOREMOVE	= sudo losetup -d
LOSETUP		= sudo losetup
LINK		= ln
SOFTLINK	= $(LINK) -s
ARCHIVE		= zip -D -9 -j
MKDSKINDEX	= $(NITROS9DIR)/3rdparty/utils/aaw/mkdskindex

# Directories
3RDPARTY	= $(NITROS9DIR)/3rdparty
LEVEL1		= $(NITROS9DIR)/level1
LEVEL2		= $(NITROS9DIR)/level2
LEVEL3		= $(NITROS9DIR)/level3
NOSLIB		= $(NITROS9DIR)/lib
CC68L1          = $(LEVEL1)/coco1
CC368L2         = $(LEVEL2)/coco3
CC363L2         = $(LEVEL2)/coco3_6309
CC363L3         = $(LEVEL3)/coco3_6309

# HDD Drive ID's
ID0 = -DITDRV=0
ID1 = -DITDRV=1
ID2 = -DITDRV=2
ID3 = -DITDRV=3
ID4 = -DITDRV=4
ID5 = -DITDRV=5
ID6 = -DITDRV=6
ID7 = -DITDRV=7
SLAVE = -DITDNS=1
MASTER = -DITDNS=0


# C-Cubed Rules
%.o: %.c
	$(CC) $(CFLAGS) $< -r

%.a: %.o
	lwar -c $@ $?

%: %.o
	$(LINKER) $(LFLAGS) $^ -o$@

%: %.a
	$(LINKER) $(LFLAGS) $^ -o$@

%.o: %.as
	$(ASM) $< -o$@

# File managers
%.mn: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# Device drivers
%.dr: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# Device descriptors
%.dd: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# Subroutine modules
%.sb: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# Window device descriptors
%.dw: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# Terminal device descriptors
%.dt: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# I/O subroutines
%.io: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@

# All other modules
%: %.asm
	$(AS) $(AFLAGS) $< $(ASOUT)$@