#
# Makefile to build the Polo library
#

# Main target
#   polo:        creates a jar containing the protocol (default)
#   poloJava:    compiles the java sources
#   proto:       compiles the protocol buffers

.PHONY: proto polo poloJava clean cleanProto default

default: polo

###############
# DEFINITIONS #
###############
# Sources top directory
JAVA_SRC_TOP := src

# Package name
PACKAGE_NAME := com/google/polo

# Complete path to sources
JAVA_SRC_DIR := $(JAVA_SRC_TOP)/$(PACKAGE_NAME)

JAVA_SRC := $(shell find $(JAVA_SRC_DIR) -name '*.java')

# .class targets
JAVA_SRC_CLASSES = $(patsubst %.java,%.class,$(JAVA_SRC))

# Classpath 
JAVA_CLASSPATH := $(subst jar ,jar:,$(strip "bin:$(wildcard jar/*.jar)"))

# Location to put the generated .class
JAVA_OUT := bin

# Name for the jar that will be created
JAR_NAME := polo.jar

####################
# PROTOCOL BUFFERS #
####################
# Sources directory for protocols buffers
PROTO_SRC_DIR := ../proto

# Location for the java files generated by the proto compiler
PROTO_JAVA_OUT := proto_out

# Creates the needed directories
$(PROTO_JAVA_OUT) $(JAVA_OUT):
	-mkdir -p $@

# Definition of the .proto and the corresponding java generated files.
$(PROTO_JAVA_OUT)/$(PACKAGE_NAME)/wire/protobuf/PoloProto.java: $(PROTO_SRC_DIR)/polo.proto
	$(genproto)

# All java files generated from proto.
ALL_GENPROTOS := \
	$(PROTO_JAVA_OUT)/$(PACKAGE_NAME)/wire/protobuf/PoloProto.java

# Rule to build a .proto in the proto/ directory
define genproto
	protoc \
	  --java_out=$(PROTO_JAVA_OUT) \
	  -I $(PROTO_SRC_DIR) \
	  $<
endef

# Compiles the proto
proto: $(PROTO_JAVA_OUT) $(ALL_GENPROTOS)

#################
# JAVA COMPILER #
#################
# compiles a java source
%.class: %.java
	javac \
	  -sourcepath "$(JAVA_SRC_TOP):$(PROTO_JAVA_OUT)" \
	  -classpath $(JAVA_CLASSPATH) \
	  -d $(JAVA_OUT)/ \
	  $?

#################
# PROJECT RULES #
#################
# Compiles the java sources for the project
poloJava: $(JAVA_OUT) proto $(JAVA_SRC_CLASSES)

# Cleans the generated protocol buffers
cleanProto:
	-rm -rf $(PROTO_JAVA_OUT)

# Cleans the project
clean: cleanProto
	-rm -rf $(JAVA_OUT)
	-rm $(JAR_NAME)

# Complete and clean build of the project returns a jar.
polo: clean poloJava
	jar cf $(JAR_NAME) -C $(JAVA_OUT) $(shell ls $(JAVA_OUT))
