# Alternative GNU Make workspace makefile autogenerated by Premake

ifndef config
  config=debug
endif

ifndef verbose
  SILENT = @
endif

ifeq ($(config),debug)
  lua_config = debug
  mimalloc_config = debug
  moon_config = debug
  sharetable_config = debug
  crypt_config = debug
  pb_config = debug
  lfmt_config = debug
  mongo_config = debug
  lualib_config = debug

else ifeq ($(config),release)
  lua_config = release
  mimalloc_config = release
  moon_config = release
  sharetable_config = release
  crypt_config = release
  pb_config = release
  lfmt_config = release
  mongo_config = release
  lualib_config = release

else
  $(error "invalid configuration $(config)")
endif

PROJECTS := lua mimalloc moon sharetable crypt pb lfmt mongo lualib

.PHONY: all clean help $(PROJECTS) 

all: $(PROJECTS)

lua:
ifneq (,$(lua_config))
	@echo "==== Building lua ($(lua_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/lua -f Makefile config=$(lua_config)
endif

mimalloc:
ifneq (,$(mimalloc_config))
	@echo "==== Building mimalloc ($(mimalloc_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/mimalloc -f Makefile config=$(mimalloc_config)
endif

moon: lua lualib crypt pb sharetable mongo mimalloc lfmt
ifneq (,$(moon_config))
	@echo "==== Building moon ($(moon_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/moon -f Makefile config=$(moon_config)
endif

sharetable:
ifneq (,$(sharetable_config))
	@echo "==== Building sharetable ($(sharetable_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/sharetable -f Makefile config=$(sharetable_config)
endif

crypt:
ifneq (,$(crypt_config))
	@echo "==== Building crypt ($(crypt_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/crypt -f Makefile config=$(crypt_config)
endif

pb:
ifneq (,$(pb_config))
	@echo "==== Building pb ($(pb_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/pb -f Makefile config=$(pb_config)
endif

lfmt:
ifneq (,$(lfmt_config))
	@echo "==== Building lfmt ($(lfmt_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/lfmt -f Makefile config=$(lfmt_config)
endif

mongo:
ifneq (,$(mongo_config))
	@echo "==== Building mongo ($(mongo_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/mongo -f Makefile config=$(mongo_config)
endif

lualib:
ifneq (,$(lualib_config))
	@echo "==== Building lualib ($(lualib_config)) ===="
	@${MAKE} --no-print-directory -C build/projects/lualib -f Makefile config=$(lualib_config)
endif

clean:
	@${MAKE} --no-print-directory -C build/projects/lua -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/mimalloc -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/moon -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/sharetable -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/crypt -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/pb -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/lfmt -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/mongo -f Makefile clean
	@${MAKE} --no-print-directory -C build/projects/lualib -f Makefile clean

help:
	@echo "Usage: make [config=name] [target]"
	@echo ""
	@echo "CONFIGURATIONS:"
	@echo "  debug"
	@echo "  release"
	@echo ""
	@echo "TARGETS:"
	@echo "   all (default)"
	@echo "   clean"
	@echo "   lua"
	@echo "   mimalloc"
	@echo "   moon"
	@echo "   sharetable"
	@echo "   crypt"
	@echo "   pb"
	@echo "   lfmt"
	@echo "   mongo"
	@echo "   lualib"
	@echo ""
	@echo "For more information, see https://github.com/premake/premake-core/wiki"