##
##  Makefile -- Build procedure for ngx_mruby for nginx module
##	  MATSUMOTO, Ryosuke
##

MAKE=make -j $(NUM_THREADS)
RAKE=rake -j $(NUM_THREADS)

NGX_MRUBY_ROOT=$(shell pwd)
NGX_SRC_ROOT=@NGX_SRC_ROOT@
NGX_CONFIG_OPT=@NGX_CONFIG_OPT@
ifeq ($(wildcard $(NGX_SRC_ROOT)/auto/configure),)
  NGX_CONFIGURE = ./configure
else
  # development branch does not have configure script in top of directory.
  NGX_CONFIGURE = ./auto/configure
endif

MRUBY_ROOT=@MRUBY_ROOT@
NDK_ROOT=@NDK_ROOT@

#   suport mrbgems
MRUBY_MAK_FILE := $(MRUBY_ROOT)/build/host/lib/libmruby.flags.mak
ifeq ($(wildcard $(MRUBY_MAK_FILE)),)
  MRUBY_CFLAGS =
  MRUBY_LDFLAGS =
  MRUBY_LIBS =
  MRUBY_LDFLAGS_BEFORE_LIBS =
else
  include $(MRUBY_MAK_FILE)
endif

#   flags
CFLAGS = $(MRUBY_CFLAGS) -I/usr/local/include
LDFLAGS = $(MRUBY_LDFLAGS) -L/usr/local/lib
LIBS = $(MRUBY_LIBS) $(MRUBY_LDFLAGS_BEFORE_LIBS) $(MRUBY_ROOT)/build/host/lib/libmruby.a

#   the default target
all: ngx_mruby

#   install
install:
	cd $(NGX_SRC_ROOT) && $(MAKE) install

#   cleanup
clean:
	-rm -rf mrbgems_config

#   clobber
clobber: clean_mruby clean
	-rm -rf tmp autom4te.cache config.status config.log build

#   build mruby
build_mruby:
	cp build_config.rb $(MRUBY_ROOT)/build_config.rb && cd $(MRUBY_ROOT) && $(RAKE) && cd $(MRUBY_ROOT) && git checkout build_config.rb

#   clean mruby
clean_mruby:
	cd $(MRUBY_ROOT) && $(RAKE) deep_clean && rm -rf build


#   nginx
make_ngx_mruby:
	cd $(NGX_SRC_ROOT) && $(MAKE)

ngx_mruby: generate_gems_config
	cd $(NGX_SRC_ROOT) && $(NGX_CONFIGURE) --add-module=$(NGX_MRUBY_ROOT) --add-module=$(NDK_ROOT) $(NGX_CONFIG_OPT) && $(MAKE)

#   create mrbgems config
generate_gems_config:
	@echo CORE_LIBS=\"\$$CORE_LIBS $(LDFLAGS) $(LIBS)\" > ./mrbgems_config
	@echo CORE_INCS=\"\$$CORE_INCS $(CFLAGS)\" >> ./mrbgems_config

.PHONY: install