# ----------------------------------------------------
# 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=$(ORBER_VSN)

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

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

MODULES= \
	orber \
	corba \
	corba_boa \
	corba_object \
	any \
	iop_ior \
	orber_tc \
	orber_typedefs \
	orber_request_number \
	orber_objectkeys \
	orber_initial_references \
	orber_bootstrap \
	cdrlib \
	cdr_encode \
	cdr_decode \
	orber_iiop \
	orber_iiop_net \
	orber_iiop_netsup \
	orber_iiop_bridge \
	orber_new_socket \
	orber_old_socket \
	orber_ifr \
	orber_ifr_aliasdef \
	orber_ifr_arraydef \
	orber_ifr_attributedef \
	orber_ifr_constantdef \
	orber_ifr_contained \
	orber_ifr_container \
	orber_ifr_enumdef \
	orber_ifr_exceptiondef \
	orber_ifr_idltype \
	orber_ifr_interfacedef \
	orber_ifr_irobject \
	orber_ifr_moduledef \
	orber_ifr_operationdef \
	orber_ifr_orb \
	orber_ifr_primitivedef \
	orber_ifr_repository \
	orber_ifr_sequencedef \
	orber_ifr_stringdef \
	orber_ifr_structdef \
	orber_ifr_typecode \
	orber_ifr_typedef \
	orber_ifr_uniondef \
	orber_ifr_utils \
	orber_imr

EXTERNAL_HRL_FILES= ../include/corba.hrl \
	../include/ifr_types.hrl ../include/imr.hrl

INTERNAL_HRL_FILES = \
	orber_debug.hrl \
	orber_iiop.hrl \
	ifr_objects.hrl \
	orber_ifr.hrl

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

GEN_ERL_FILES =  \
	oe_erlang.erl \
	erlang_pid.erl \
	erlang_port.erl \
	erlang_ref.erl

GEN_HRL_FILES = \
	oe_erlang.hrl \
	erlang.hrl

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

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

# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
ERL_FLAGS += -pa $(ERL_TOP)/lib/orber/ebin -pa $(ERL_TOP)/lib/ic/ebin
# The -pa option is just used temporary until erlc can handle 
# includes from other directories than ../include .
ERL_COMPILE_FLAGS += -I$(ERL_TOP)/lib/orber/include \
	+'{parse_transform, sys_pre_attributes}' \
	+'{attribute, insert, vsn, "orber_$(ORBER_VSN)"}' 

# ----------------------------------------------------
# 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
# ----------------------------------------------------
$(GEN_ERL_FILES): ../../ic/include/erlang.idl
	erlc $(ERL_FLAGS) ../../ic/include/erlang.idl



# ----------------------------------------------------
# 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)/include
	$(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(GEN_HRL_FILES) $(RELSYSDIR)/include


release_docs_spec:


release_src_spec: 
	$(INSTALL_DIR) $(RELSYSDIR)/ebin
	$(INSTALL_DIR) $(RELSYSDIR)/src
	$(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(ERL_FILES) $(YRL_FILE) \
		$(INTERNAL_HRL_FILES) $(RELSYSDIR)/src
	$(INSTALL_DIR) $(RELSYSDIR)/include
	$(INSTALL_DATA) $(EXTERNAL_HRL_FILES) $(GEN_HRL_FILES) $(RELSYSDIR)/include	
	$(INSTALL_DATA) ../Makefile ../vsn.mk $(RELSYSDIR)
	$(INSTALL_DATA) Makefile orber.app.src $(RELSYSDIR)/src
