#
# Copyright (c) 2015-2017 the Civetweb developers
#
# License http://opensource.org/licenses/mit-license.php MIT License
#

ifndef WITH_DUKTAPE
  $(error WITH_DUKTAPE is not defined)
endif

# Duktape default version is 1.5.2 (105)
WITH_DUKTAPE_VERSION ?= 105
DUKTAPE_VERSION_KNOWN = 0

# Select src and header according to the Duktape version
ifeq ($(WITH_DUKTAPE_VERSION), 105)
  $(info Duktape: Using version 1.5.2)
  DUKTAPE_DIR = src/third_party/duktape-1.5.2/src
  DUKTAPE_SHARED_LIB_FLAG = -lduktape1.5
  DUKTAPE_CFLAGS = -DDUKTAPE_VERSION_MAKEFILE=105
  DUKTAPE_VERSION_KNOWN = 1
endif

ifeq ($(WITH_DUKTAPE_VERSION), 108)
  $(info Duktape: Using version 1.8.0)
  DUKTAPE_DIR = src/third_party/duktape-1.8.0/src
  DUKTAPE_SHARED_LIB_FLAG = -lduktape1.8
  DUKTAPE_CFLAGS = -DDUKTAPE_VERSION_MAKEFILE=108
  DUKTAPE_VERSION_KNOWN = 1
endif

ifeq ($(WITH_DUKTAPE_VERSION), 201)
  $(info Duktape: Using version 2.1.1)
  DUKTAPE_DIR = src/third_party/duktape-2.1.1/src
  DUKTAPE_SHARED_LIB_FLAG = -lduktape2.1
  DUKTAPE_CFLAGS = -DDUKTAPE_VERSION_MAKEFILE=201
  DUKTAPE_VERSION_KNOWN = 1
endif

ifneq ($(DUKTAPE_VERSION_KNOWN), 1)
  $(error Duktape: Unknwon version - $(WITH_DUKTAPE_VERSION))
endif


# Add flags for all Duktape versions
DUKTAPE_CFLAGS += -I$(DUKTAPE_DIR) -DUSE_DUKTAPE

ifneq ($(TARGET_OS),WIN32)
#  DUKTAPE_CFLAGS += 
endif

ifdef WITH_DUKTAPE_SHARED

  DUKTAPE_SOURCE_FILES =

  $(info Duktape: using dynamic linking)

else

  DUKTAPE_SOURCE_FILES = duktape.c

ifeq ($(WITH_DUKTAPE_VERSION), 104)
#    DUKTAPE_SOURCE_FILES += ... TODO ...
endif

  $(info Duktape: using static library)

endif

DUKTAPE_SOURCES = $(addprefix $(DUKTAPE_DIR)/, $(DUKTAPE_SOURCE_FILES))
DUKTAPE_OBJECTS = $(DUKTAPE_SOURCES:.c=.o)

OBJECTS += $(DUKTAPE_OBJECTS)
CFLAGS += $(DUKTAPE_CFLAGS)
SOURCE_DIRS = $(DUKTAPE_DIR)
BUILD_DIRS += $(BUILD_DIR)/$(DUKTAPE_DIR)

