# ===========================================================================
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this file,
# You can obtain one at http://mozilla.org/MPL/2.0/.
#
# Copyright (c) 2015-2016, Marvell International Ltd.
#
# Alternatively, this software may be distributed under the terms of the GNU
# General Public License Version 2, and any use shall comply with the terms and
# conditions of the GPL.  A copy of the GPL is available at
# http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
#
# THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE
# IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE
# ARE EXPRESSLY DISCLAIMED.  The GPL license provides additional details about
# this warranty disclaimer.
# ================================================================================

# This makefile assumes GNU make features
#
# machine based sysroot directory

# sample app sources
JPEG_COMPRESS     = ./sample/jpeg_compress.c
JPEG_DECOMPRESS   = ./sample/jpeg_decompress.c
JPEG_COMMON       = ./sample/jpeg_common.c
JPEG_COMMON      += ./sample/jpeg_huff_tables.c
JPEG_COMMON      += ./sample/jpeg_quantization_table.c

ifeq ($(TEST),1)
# test app sources
TEST_COVERAGE  = ./test/test_coverage.c
TEST_STRESS    = ./test/test_stress.c
TEST_SPEED     = ./test/test_speed.c
endif

# adaptor sources
ADAPTOR = ./adaptor/jpeg_page_adaptor.c
ADAPTOR += ./adaptor/jpeg_strip_adaptor.c

JPEG_ALL       = $(JPEG_COMPRESS) $(JPEG_DECOMPRESS)
ifeq ($(TEST),1)
JPEG_ALL      += $(TEST_COVERAGE) $(TEST_STRESS) $(TEST_SPEED)
endif

# library sources
SOURCES = ./src/jpeghw_lib.c
SOURCES += ./src/jpeghw_compress.c
SOURCES += ./src/jpeghw_decompress.c

# hw core library files
SOURCES += ./hw/src/jhw_dev.c
SOURCES += ./hw/src/jhw_uio.c
SOURCES += ./hw/src/jhwc_api.c
SOURCES += ./hw/src/jhwc_core.c
SOURCES += ./hw/src/jhwc_idma.c
SOURCES += ./hw/src/jhwc_odma.c
SOURCES += ./hw/src/jhwd_core.c
SOURCES += ./hw/src/jhwd_api.c
SOURCES += ./hw/src/jhwd_idma.c
SOURCES += ./hw/src/jhwd_odma.c
SOURCES += ./hw/src/jhw_default_tables.c

CFLAGS = -Wall -fPIC
ifeq ($(DEBUG),1)
CFLAGS += -ggdb3 -DDEBUG
endif

ifeq ($(PRODUCT), jpeg64)
CFLAGS += -DASIC_JPEG64 -I./hw/include/asic/jpeg64
else
# default to jpeg32
CFLAGS += -DASIC_JPEG32 -I./hw/include/asic/jpeg32
endif
 
CFLAGS += -I../ "-I=/usr/include" "-I=/usr/include/dmaalloc-app" -I$(USR_SRC)/kernel/include # -I../jpegd-mod
CFLAGS += -I. -I./include -I./src/include -I./hw/include -I./src -I./test -I./adaptor -I./sample
CFLAGS += $(INLINE_CFLAGS)

LIB_OBJECTS=$(SOURCES:.c=.o)

all:  $(JPEG_ALL) $(SOURCES) mklib
	$(CC) $(CFLAGS) $(JPEG_COMPRESS) $(JPEG_COMMON) $(ADAPTOR) $(SOURCES) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -o jpeg_compress
	$(CC) $(CFLAGS) $(JPEG_DECOMPRESS) $(JPEG_COMMON) $(ADAPTOR) $(SOURCES) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -o jpeg_decompress
ifeq ($(TEST),1)
	$(CC) $(CFLAGS) $(TEST_COVERAGE) $(JPEG_COMMON) $(TEST_COMMON) $(ADAPTOR) $(SOURCES) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -o test_coverage
	$(CC) $(CFLAGS) $(TEST_STRESS) $(JPEG_COMMON) $(TEST_COMMON) $(ADAPTOR) $(SOURCES) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -o test_stress
	$(CC) $(CFLAGS) $(TEST_SPEED) $(JPEG_COMMON) $(TEST_COMMON) $(ADAPTOR) $(SOURCES) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -o test_speed
endif

mklib: $(LIB_OBJECTS)
	$(AR) -r libjpeghw.a $(LIB_OBJECTS)
	$(CC) $(CFLAGS) $(LDFLAGS) $(LIB_OBJECTS) -lpthread -lrt -shared -Wl,-soname,libjpeghw.so.1 -o libjpeghw.so.1.0

solink:  $(JPEG_ALL) $(SOURCES)
	$(CC)  $(CFLAGS) $(JPEG_COMPRESS)  $(JPEG_COMMON) $(ADAPTOR) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -ljpeghw -o jpeg_compress_lib
	$(CC)  $(CFLAGS) $(JPEG_DECOMPRESS) $(JPEG_COMMON) $(ADAPTOR) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -ljpeghw -o jpeg_decompress_lib
ifeq ($(TEST),1)
	$(CC)  $(CFLAGS) $(TEST_COVERAGE) $(JPEG_COMMON) $(ADAPTOR) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -ljpeghw -o test_coverage_lib
	$(CC)  $(CFLAGS) $(TEST_STRESS) $(JPEG_COMMON) $(ADAPTOR) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -ljpeghw -o test_stress_lib
	$(CC)  $(CFLAGS) $(TEST_SPEED) $(JPEG_COMMON) $(ADAPTOR) -L$(LIBPATH) -lpthread -lrt -lm -ldmaalloc -ljpeghw -o test_speed_lib
endif

clean:
	@$(RM) libjpeghw.a libjpeghw.so.1.0
	@$(RM) jpeg_compress jpeg_decompress jpeg_compress_lib jpeg_decompress_lib
ifeq ($(TEST),1)
	@$(RM) test_coverage test_stress test_speed test_stress_lib test_speed_lib test_coverage_lib
endif
	@$(RM) $(LIB_OBJECTS)

