#programs and dirs
ec=EMODULES:oomodules/oodoc/scripts/compile
docs=EMODULES:oomodules/oodoc/scripts/gendoc

# objects to compile
OBJECTX=char
OBJECT2=int
OBJECT3=long
OBJECT4=list
OBJECT5=string
OBJECT6=pchar
OBJECT7=pint
OBJECT8=plong
OBJECT9=plist
OBJECT10=pstring
OBJECT11=float
OBJECT12=pfloat
OBJECT13=association


ALLOBJECTS=char.m int.m float.m long.m list.m string.m pchar.m pint.m plist.m plong.m pstring.m pfloat.m association.m

TESTS=testpint testpfloat testpstring testfloat testlist teststring

#dependencies
DEPS=/object.m /primitive.m

#compiler options: don't use cache and BE QUIET!
OPTS=IGNORECACHE QUIET

objects: $(ALLOBJECTS)

all:
	build binaries NOHEAD
	build doc NOHEAD

binaries:
	build objects NOHEAD
	build test NOHEAD

#build the documentation
doc:
	$(docs)


$(OBJECTX).m: $(OBJECTX).e $(DEPS)
  $(ec) $(OBJECTX).e $(target) $(OPTS)

$(OBJECT2).m: $(OBJECT2).e $(DEPS)
  $(ec) $(OBJECT2).e $(target) $(OPTS)

$(OBJECT3).m: $(OBJECT3).e $(DEPS)
  $(ec) $(OBJECT3).e $(target) $(OPTS)

$(OBJECT4).m: $(OBJECT4).e $(DEPS)
  $(ec) $(OBJECT4).e $(target) $(OPTS)

$(OBJECT5).m: $(OBJECT5).e $(DEPS)
  $(ec) $(OBJECT5).e $(target) $(OPTS)

$(OBJECT6).m: $(OBJECT6).e $(DEPS)
  $(ec) $(OBJECT6).e $(target) $(OPTS)

$(OBJECT7).m: $(OBJECT7).e $(DEPS)
  $(ec) $(OBJECT7).e $(target) $(OPTS)

$(OBJECT8).m: $(OBJECT8).e $(DEPS)
  $(ec) $(OBJECT8).e $(target) $(OPTS)

$(OBJECT9).m: $(OBJECT9).e $(DEPS)
  $(ec) $(OBJECT9).e $(target) $(OPTS)

$(OBJECT10).m: $(OBJECT10).e $(DEPS)
  $(ec) $(OBJECT10).e $(target) $(OPTS)

$(OBJECT11).m: $(OBJECT11).e $(DEPS)
  $(ec) $(OBJECT11).e $(target) $(OPTS)

$(OBJECT12).m: $(OBJECT12).e $(DEPS)
  $(ec) $(OBJECT12).e $(target) $(OPTS)

$(OBJECT13).m: $(OBJECT13).e $(DEPS)
  $(ec) $(OBJECT13).e $(target) $(OPTS)


#build the test programs
test: $(TESTS)
  Echo "Compiled test programs."

test$(OBJECT7): test$(OBJECT7).e $(OBJECT7).m
  $(ec) test$(OBJECT7).e $(target) $(OPTS)

test$(OBJECT11): test$(OBJECT11).e $(OBJECT11).m
  $(ec) test$(OBJECT11).e $(target) $(OPTS)

test$(OBJECT12): test$(OBJECT12).e $(OBJECT12).m
  $(ec) test$(OBJECT12).e $(target) $(OPTS)

test$(OBJECT10): test$(OBJECT10).e $(OBJECT10).m
  $(ec) test$(OBJECT10).e $(target) $(OPTS)

test$(OBJECT4): test$(OBJECT4).e $(OBJECT4).m
  $(ec) test$(OBJECT4).e $(target) $(OPTS)

test$(OBJECT5): test$(OBJECT5).e $(OBJECT5).m
  $(ec) test$(OBJECT5).e $(target) $(OPTS)


