# ----------------------------------------------------
# Copyright (C) 1997, Ericsson Telecommunications
# Author: Lars Thorsen
# ----------------------------------------------------

AUTOCONF := $(ERL_TOP)/erts/autoconf
TARGET := $(shell $(AUTOCONF)/config.guess)

ifeq ($(TYPE),debug)
ERL_COMPILE_FLAGS += -Ddebug -W
endif

include $(ERL_TOP)/internal_tools/make/$(TARGET)/otp.mk

# ----------------------------------------------------
# Application version
# ----------------------------------------------------
include ../vsn.mk
VSN=$(IC_VSN)

# ----------------------------------------------------
# Release directory specification
# ----------------------------------------------------
RELEASE_PATH= ../../release/$(TARGET)
RELSYSDIR = $(RELEASE_PATH)/lib/ic-$(VSN)

# ----------------------------------------------------
# Target Specs
# ----------------------------------------------------

MODULES= \
	ic \
	ic_erlbe \
	ic_cbe \
	icgen \
	icscan \
	icparse \
	iceval \
	ictype \
	ictk \
	icstruct \
	icenum \
	icpreproc \
	ic_pp \
	ic_pragma \
	ic_noc \
	ic_plainbe \
	ic_cserver \
	ic_fetch \
	ict


CCL_EX_FILES = \
	../examples/c-client/ReadMe \
	../examples/c-client/Makefile \
	../examples/c-client/client.c \
	../examples/c-client/random.idl \
	../examples/c-client/rmod_random_impl.erl \
        ../examples/c-client/test.erl

CSRV_EX_FILES = \
	../examples/c-server/ReadMe \
	../examples/c-server/Makefile \
	../examples/c-server/client.c \
	../examples/c-server/server.c \
	../examples/c-server/callbacks.c \
	../examples/c-server/random.idl        

EPL_EX_FILES = \
	../examples/erl-plain/ReadMe \
	../examples/erl-plain/rmod_random_impl.erl \
	../examples/erl-plain/random.idl


ESRV_EX_FILES = \
	../examples/erl-genserv/ReadMe \
	../examples/erl-genserv/rmod_random_impl.erl \
	../examples/erl-genserv/random.idl


EXTERNAL_HRL_FILES= 

INTERNAL_HRL_FILES = \
	icyeccpre.hrl \
	ic.hrl \
	icforms.hrl

ERL_FILES= $(MODULES:%=%.erl)	

TARGET_FILES = $(MODULES:%=$(EBIN)/%.$(EMULATOR))

YRL_FILE = icparse.yrl

GEN_FILES = icparse.erl

APP_FILE = ic.app
APP_SRC = $(APP_FILE).src
APP_TARGET = $(EBIN)/$(APP_FILE)

# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
ERL_FLAGS += 
# The -pa option is just used temporary until erlc can handle 
# includes from other directories than ../include .
ERL_COMPILE_FLAGS += 
YRL_FLAGS = -Iicyeccpre.hrl

# ----------------------------------------------------
# Targets
# ----------------------------------------------------
debug:
	@${MAKE} TYPE=debug opt

opt: $(TARGET_FILES) $(APP_TARGET)

clean:
	rm -f $(TARGET_FILES) $(GEN_FILES) $(APP_TARGET)
	rm -f errs core *~

$(APP_TARGET): $(APP_SRC)
	sed -e 's;%VSN%;$(VSN);' $(APP_SRC) > $(APP_TARGET)

docs:

# ----------------------------------------------------
# Special Build Targets
# ----------------------------------------------------
../ebin/icparse.jam ../ebin/icparse.beam: icparse.erl
	$(ERLC) -b$(EMULATOR) -o$(EBIN) +pj $<

icparse.erl: icparse.yrl icyeccpre.hrl

###	$(ERLC) $(YRL_FLAGS) $<

# ----------------------------------------------------
# Release Target
# ---------------------------------------------------- 
include $(ERL_TOP)/internal_tools/make/otp_release_targets.mk


release_spec: opt
	$(INSTALL_DIR) $(RELSYSDIR)/ebin
	$(INSTALL_DATA) $(TARGET_FILES) $(APP_TARGET) $(RELSYSDIR)/ebin
	$(INSTALL_DIR) $(RELSYSDIR)/src
	$(INSTALL_DATA) $(ERL_FILES) $(YRL_FILE) $(INTERNAL_HRL_FILES) $(RELSYSDIR)/src
	$(INSTALL_DIR) $(RELSYSDIR)/examples
	$(INSTALL_DIR) $(RELSYSDIR)/examples/c-client
	$(INSTALL_DATA) $(CCL_EX_FILES) $(RELSYSDIR)/examples/c-client	
	$(INSTALL_DIR) $(RELSYSDIR)/examples/c-server
	$(INSTALL_DATA) $(CSRV_EX_FILES) $(RELSYSDIR)/examples/c-server	
	$(INSTALL_DIR) $(RELSYSDIR)/examples/erl-plain
	$(INSTALL_DATA) $(EPL_EX_FILES) $(RELSYSDIR)/examples/erl-plain
	$(INSTALL_DIR) $(RELSYSDIR)/examples/erl-genserv
	$(INSTALL_DATA) $(ESRV_EX_FILES) $(RELSYSDIR)/examples/erl-genserv	

release_docs_spec:

release_src_spec: 
	$(INSTALL_DIR) $(RELSYSDIR)/ebin
	$(INSTALL_DIR) $(RELSYSDIR)/src
	$(INSTALL_DATA) $(ERL_FILES) $(YRL_FILE) $(INTERNAL_HRL_FILES) $(RELSYSDIR)/src
	$(INSTALL_DIR) $(RELSYSDIR)/examples
	$(INSTALL_DIR) $(RELSYSDIR)/examples/c-client
	$(INSTALL_DATA) $(CCL_EX_FILES) $(RELSYSDIR)/examples/c-client	
	$(INSTALL_DIR) $(RELSYSDIR)/examples/c-server
	$(INSTALL_DATA) $(CSRV_EX_FILES) $(RELSYSDIR)/examples/c-server	
	$(INSTALL_DIR) $(RELSYSDIR)/examples/erl-plain
	$(INSTALL_DATA) $(EPL_EX_FILES) $(RELSYSDIR)/examples/erl-plain
	$(INSTALL_DIR) $(RELSYSDIR)/examples/erl-genserv
	$(INSTALL_DATA) $(ESRV_EX_FILES) $(RELSYSDIR)/examples/erl-genserv	
	$(INSTALL_DATA) Makefile $(RELSYSDIR)/src
	$(INSTALL_DATA) ../Makefile $(RELSYSDIR)
	$(INSTALL_DATA) ../vsn.mk $(RELSYSDIR)
	$(INSTALL_DATA) ic.app.src $(RELSYSDIR)/src
