#  Le Makefile de fabrication des diffe'rents syste`mes 
#######################################################
# les variables systemes de ce makefile
SYSTEM= sony
COMMON=commonsony
MAKE=make
SHELL=/bin/sh
BIG=
CODE=1024
CAMLISP=camlisp$(BIG)

################################################
LELISP=lelisp
################################################
# Les tailles par de'faut des zones de donne'es
################################################

# tailles des flottants pour les xxxx31bin
SIZEF31= -float 0

# tailles des flottants pour les xxxxbin
# par defaut: les flottants sont sur 31 bits
SIZEF= $(SIZEF31)


# normal avec plutot des CONS ~= 1,3M octets
SZCONS=  -stack 24 -code $(CODE) -heap 1000 -number 0 \
        -vector 30 -string 40 -symbol 6 -cons 15 $(SIZEF)

# Taille la + courante
SIZE=$(SZCONS)

# Pour les includes qui doivent trouver les *.h:
# de la forme: $(XINCLUDE)/X/*.h
XINCLUDE=/usr/include

##########################################################
# Les entre'es classiques
##########################################################
# Standard.
# % make camlisp -f Makefile
# Plus de code (image-memoire differente)
# % make BIG=big CODE=<NNNN> camlispbig -f Makefile
all:	camlisp

# Pour nettoyer tout ce qui est fabrique' par ce makefile: Les binaires, 
#  les commandes standard, les fichiers de configurations standard fabrique's.
# % make clean
clean:
	rm -f *bin 
	rm -f camlisp camlispbig
	rm -f o/*.o
	rm -f conf/camlispconf.ll

### camlisp
$(CAMLISP): conf/camlispconf.ll  camlispbin
	./config $(CAMLISP) camlispbin camlispconf.ll $(SIZE)


############################################################################
# Les options de'pendant du syste`me
############################################################################
#
# LOCALVARS = -x par defaut, pas de symboles locaux.
#           = -X pour aider au debug  (toutes les variables 
#             locales sont conserve'es dans la table des symboles).
LOCALVARS=-x

# Les flags pour le link
LDFLAGS= -z $(LOCALVARS)

# Les librairies du linker
LDLIBS= -lm -lc

#######################################
# Les options de compilation :

# pour les includes C propres a Le-Lisp:
LLINCLUDE=-I../$(COMMON)

# Pour avoir des messages en breton ou non:
FOREIGN=-DFOREIGN
#FOREIGN=

# Pour les cores executables:
#EXECORE=-DEXECORE
EXECORE=

# Le fichier initial au lancement d'un lelispbin sans argument
FILEINI=-DFILEINI=\"/usr/local/caml/V2-6.1/camlisp/llib/startup.ll\"

# - il faut laisser -DINRIA pour les 4.2 sans les bogues de kernel vax4.2
LLFLAGS=-DNBSYST=40 -DBSD4x -DBSD42 -DTIMEUNIT=60. -DINRIA -DSONY \
	$(FOREIGN) $(FILEINI) $(EXECORE) \
	$(LLINCLUDE) 
CFLAGS= -O $(LLFLAGS)

cobj=	o/llmain.o o/caml.o o/camlstdio.o o/llfloat.o

#########################################################################
# Comment refaire les binaires standard
# Le(s) binaire(s) standard
camlispbin: $(cobj) lefpu31bin.o
	cc $(CFLAGS) $(LDFLAGS) $(cobj) lefpu31bin.o \
	$(LDLIBS) -o camlispbin

#########################################################################
# Les fichiers .c

LINTFLAGS=-nchxa
lint:
	mv $(cobj) .
	$(MAKE) CC=/bin/lint \
		CFLAGS="$(LINTFLAGS) $(LLFLAGS) $(FOREIGN) $(FILEINI) \
			$(EXECORE) -I$(LLINCLUDE) -U$(XINCLUDE)" \
		$(cobj) 

o/llmain.o: ../$(COMMON)/llmain.c
	$(CC) $(CFLAGS) -c ../$(COMMON)/llmain.c
	mv llmain.o o

o/caml.o: ../$(COMMON)/caml.c
	$(CC) $(CFLAGS) -c ../$(COMMON)/caml.c
	mv caml.o o/caml.o

o/camlstdio.o: ../$(COMMON)/llstdio.c
	$(CC) $(CFLAGS) -DMAXCHAR=1024 -c ../$(COMMON)/llstdio.c
	mv llstdio.o o/camlstdio.o

o/llfloat.o: ../$(COMMON)/llfloat.c
	$(CC) $(CFLAGS) -c ../$(COMMON)/llfloat.c
	mv llfloat.o o


