# Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
#
#
#  Redistribution and use in source and binary forms, with or without
#  modification, are permitted provided that the following conditions
#  are met:
#
#    Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#
#    Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the
#    distribution.
#
#    Neither the name of Texas Instruments Incorporated nor the names of
#    its contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
#  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
#  "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
#  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
#  A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
#  OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
#  SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
#  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
#  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
#  THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
#  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
#  OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

ifndef MPMDAEMON_BIN
$(error MPMDAEMON_BIN variable not defined)
endif

MPMSRV_OBJS = mpminit.o mpmssm.o mpmdlif.o mpmsrv.o mpmcoredump.o mpmservice.o
UTILS_OBJS = uioutils.o

SOCKUTILS_OBJ =  sockutils.o
SOCKUTILS_DIR =  $(MPM_COMMON)

cJSON_DIR = cJSON
cJSON_OBJ = $(cJSON_DIR)/cJSON.o

RIDL_DIR := ridl
RIDL_OBJS_DIR:=$(RIDL_DIR)/GCC_LNX
RIDL_OBJS_NAMES:=ArrayList.obj \
			c60_reloc.obj \
			dload.obj \
			c60_dynamic.obj \
			dlmodules.obj \
			dload_endian.obj \
			elf32.obj \
			ridl_client.obj \
			symtab.obj

RIDL_INC:=-I$(RIDL_DIR)/DLOAD \
			-I$(RIDL_DIR)/DLOAD_API \
			-I$(RIDL_DIR)/C60_DLOAD_DYN \
			-I$(RIDL_DIR)/C60_DLOAD_REL \
			-I$(RIDL_DIR)/DLWRAPPER

RIDL_OBJS:=$(addprefix $(RIDL_OBJS_DIR)/, $(RIDL_OBJS_NAMES))

LDFLAGS += -lm -ldaemon -lpthread -lmpmtransport

MPMSRV_INC = -I. -Iinternal -I$(MPM_COMMON)
MPMSRV_INC +=  $(RIDL_INC)

all: $(MPMDAEMON_BIN)

.PHONY: all build clean distclean

$(MPMDAEMON_BIN): $(MPMSRV_OBJS) $(cJSON_OBJ) $(RIDL_OBJS) $(UTILS_OBJS)
	make -C $(SOCKUTILS_DIR) $(SOCKUTILS_OBJ)
	$(CC) -Wl,--start-group $^ $(SOCKUTILS_DIR)/$(SOCKUTILS_OBJ) -Wl,--end-group -o $@ $(LDFLAGS)

$(RIDL_OBJS_DIR)/%.obj:
	make -C $(RIDL_DIR) GCC_LNX/$(notdir $@)

jtest: $(cJSON_DIR)/cJSON.c $(cJSON_DIR)/test.c
	$(CC) -lm -o $@ $^

%.o: %.c
	$(CC) $(MPMSRV_INC) -c -o $@ $<

clean: 
	make -C $(RIDL_DIR) clean
	make -C $(SOCKUTILS_DIR) clean
	rm -rf $(MPMSRV_OBJS) $(MPMSRV_BIN)
	rm -rf $(cJSON_OBJ) $(UTILS_OBJS)

distclean: clean
	rm -rf jtest
