
#
# Erlang Makefile 
#
# Requires gnumake
#
# $Id: Makefile,v 1.59 2004/09/12 09:00:54 geoff Exp $
#
# $Source: /home/cvs/gerl/lib/Makefile,v $
# $Revision: 1.59 $
# $Date: 2004/09/12 09:00:54 $
# $State: Exp $
#
# Author: Geoff Wong
# Copyright(C) 1996, 1998
# geoff@serc.rmit.edu.au
#
#

include ../gerl.mk

#CFLAGS=-fbounds-checking -fstrict-prototypes -ansi -pedantic -g
#CFLAGS=-finline-functions -Wall -g -O3

#CFLAGS=-finline-functions -Wall -g -O2 -fPIC
CFLAGS=-Wall -g -fPIC
ECC=/home/geoff/gerl/bin/ecc

#
# Libs
#

ifeq ($(OS),SunOS)
	LDOPTS=
	ELIB=-L./ -lerl 
else
	LDOPTS=-Wl,-soname,liberl.so.t
	ELIB=-L./ -lerl
endif

LFLAGS=-fPIC

SRC = basic.c typecheck.c tuple.c str.c message.c module.c \
    error.c call.c binary.c esocket.c function.c code.c ehash.c clist.c

ESRC = erlnode.c ehash.c meshash.c 

TSRC = test.c

OBJ := $(SRC:%.c=$(OBJPATH)/%.o)
EOBJ := $(ESRC:%.c=$(OBJPATH)/%.o)
TOBJ := $(TSRC:%.c=$(OBJPATH)/%.o)

HDRS := $(shell echo *.h)

first: .depend .edepend .tdepend
	$(MAKE) all

all: erlib enode

erlib: $(OBJ)
	$(CC) $(CFLAGS) -shared $(LDOPTS) -o liberl.so $(OBJ) $(LIBS) $(MALLOCLIB)
	ar cr liberl.a $(OBJ) $(MALLOCLIB)
	-ln -s liberl.so liberl.so.t

enode : $(EOBJ)
	$(CC) -g -o enode $(EOBJ) $(INCLUDE) $(ELIB) $(LIBS) $(MALLOCLIB)

etest: $(TOBJ) 
	$(CC) -o etest $(TOBJ) $(INCLUDE) $(ELIB) $(LIBS)

bif: 	bif.erl erlang.erl
	-rm bif.so
	-rm erlang.so
	$(ECC) bif.erl
	$(ECC) erlang.erl

cvsadd: 
	cvs add $(SRC) $(ESRC) $(HDRS)

tags: $(SRC)
	ctags $(SRC) 

clean:
	-rm $(OBJ) $(TOBJ)

lint:
	lclint +posixlib $(SRC) > LINT

veryclean:
	-rm $(OBJ) $(TOBJ)
	(cd GC; make clean; cd ..)

#
# Dependency  stuff below (do not change!)
#

.depend: $(SRC) $(HDRS)
	$(CC) -MM $(SRC) > .depend

.tdepend: $(TSRC) $(HDRS)
	$(CC) -MM $(TSRC) > .tdepend

.edepend: $(ESRC) $(HDRS)
	$(CC) -MM $(ESRC) > .edepend

.PHONY: 

-include .depend
-include .tdepend
-include .edepend

