# $Id: Makefile,v 1.3 2004/08/13 16:35:59 mlogan Exp $
#
include ../build/otp.mk
include ../build/colors.mk
include ../build/buildtargets.mk

# ----------------------------------------------------
# Application version
# ----------------------------------------------------

include ../vsn.mk
APP_NAME=thrift
PFX=thrift
VSN=$(THRIFT_VSN)

# ----------------------------------------------------
# Install directory specification
# WARNING: INSTALL_DIR the command to install a directory.
#          INSTALL_DST is the target directory
# ----------------------------------------------------
INSTALL_DST = $(ERLANG_OTP)/lib/$(APP_NAME)-$(VSN)

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


MODULES = $(shell find . -name \*.erl | sed 's:^\./::' | sed 's/\.erl//')
MODULES_STRING_LIST = $(shell find . -name \*.erl | sed 's:^\./:":' | sed 's/\.erl/",/')

HRL_FILES=
INTERNAL_HRL_FILES= $(APP_NAME).hrl
ERL_FILES= $(MODULES:%=%.erl)
DOC_FILES=$(ERL_FILES)

APP_FILE= $(APP_NAME).app
APPUP_FILE= $(APP_NAME).appup

APP_SRC= $(APP_FILE).src
APPUP_SRC= $(APPUP_FILE).src

APP_TARGET= $(EBIN)/$(APP_FILE)
APPUP_TARGET= $(EBIN)/$(APPUP_FILE)

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

WEB_TARGET=/var/yaws/www/$(APP_NAME)

# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------

ERL_FLAGS +=
ERL_INCLUDE = -I../include -I../../fslib/include -I../../system_status/include
ERL_COMPILE_FLAGS += $(ERL_INCLUDE) +native

# ----------------------------------------------------
# Targets
# ----------------------------------------------------

all debug opt: $(EBIN) $(TARGET_FILES)

#$(EBIN)/rm_logger.beam: $(APP_NAME).hrl
include ../build/docs.mk

# Note: In the open-source build clean must not destroy the preloaded
# beam files.
clean:
	rm -f $(TARGET_FILES)
	rm -f *~
	rm -f core
	rm -rf $(EBIN)
	rm -rf *html

$(EBIN):
	mkdir $(EBIN)

dialyzer: $(TARGET_FILES)
	dialyzer --src -r . $(ERL_INCLUDE)

# ----------------------------------------------------
# Special Build Targets
# ----------------------------------------------------

$(APP_TARGET): $(APP_SRC) ../vsn.mk $(BEAMS)
	sed -e 's;%VSN%;$(VSN);' \
		-e 's;%PFX%;$(PFX);' \
		-e 's;%APP_NAME%;$(APP_NAME);' \
		-e 's;%MODULES%;%MODULES%$(MODULES_STRING_LIST);' \
		$< > $<".tmp"
	sed -e 's/%MODULES%\(.*\),/\1/' \
		$<".tmp" > $@
	rm $<".tmp"

$(APPUP_TARGET): $(APPUP_SRC) ../vsn.mk
	sed -e 's;%VSN%;$(VSN);' $< > $@

$(WEB_TARGET): ../markup/*
	rm -rf $(WEB_TARGET)
	mkdir $(WEB_TARGET)
	cp -r ../markup/ $(WEB_TARGET)
	cp -r ../skins/ $(WEB_TARGET)

# ----------------------------------------------------
# Install Target
# ----------------------------------------------------

install: all $(WEB_TARGET)
#	$(INSTALL_DIR) $(INSTALL_DST)/src
#	$(INSTALL_DATA) $(ERL_FILES) $(INSTALL_DST)/src
#	$(INSTALL_DATA) $(INTERNAL_HRL_FILES) $(INSTALL_DST)/src
#	$(INSTALL_DIR) $(INSTALL_DST)/include
#	$(INSTALL_DATA) $(HRL_FILES) $(INSTALL_DST)/include
#	$(INSTALL_DIR) $(INSTALL_DST)/ebin
#	$(INSTALL_DATA) $(TARGET_FILES) $(INSTALL_DST)/ebin
