#
#************************************************************************\
#*                                                                      *
#* Copyright 2003-2004 Stretch, Inc. All rights reserved.               *
#*                                                                      *
#* THIS SOFTWARE CONTAINS CONFIDENTIAL INFORMATION AND TRADE SECRETS OF *
#* STRETCH, INC. USE, DISCLOSURE, OR REPRODUCTION IS PROHIBITED WITHOUT *
#* THE PRIOR EXPRESS WRITTEN PERMISSION OF STRETCH, INC.                *
#*                                                                      *
#************************************************************************/
#

OUT_DIR = .

ifndef VER
VER = b
endif

ifdef OPT
O = -O3
else
O = -O0
endif


ifndef TARGET

X 	= -ms5-native
E 	= -NATIVE

else	#ifndef TARGET

ifeq ($(TARGET),NATIVE)
X       = -ms5-native
E       = -NATIVE
endif

ifeq ($(TARGET),ISS)
X       = -ms5-iss
E       = -S5ISS
RUN     = st-run 
PROF    = st-gprof
LDFLAGS = -mlsp=sim
endif

ifeq ($(TARGET),S5610)
X       = -ms5610
E       = -S5610
LDFLAGS = -mlsp=s56db-ddr
endif

ifeq ($(TARGET),S5530)
X       = -ms5530
E       = -S5530
LDFLAGS = -mlsp=s55db-ddr
endif

endif  #ifndef TARGET



CFLAGS = -g $(O) $(X)

default:
	@echo "usage: make [VER=a|b] [OPT] [TARGET=NATIVE|ISS|S5610|S5530] [build|run|profile]"

build: rgb2ycc_$(VER)$(O)$(E).exe

ifeq ($(TARGET),S5610)
RUNTARGET = NORUN
else
ifeq ($(TARGET),S5530)
RUNTARGET = NORUN
else
RUNTARGET = YESRUN
endif
endif

YESRUN:	rgb2ycc_$(VER)$(O)$(E).exe
	$(RUN) $(OUT_DIR)/$^

NORUN:
	@echo "Please use IDE or st-debug for remote debugging $(TARGET)"

run:	$(RUNTARGET)


ifeq ($(TARGET),ISS)
profile: rgb2ycc_$(VER)$(O)$(E).exe
	$(RUN) --mem_model --profile=gmon.out $(OUT_DIR)/$^
	$(PROF) $(OUT_DIR)/$^ > $^.prof
else
profile:
	@echo "Profiling not supported for this target"  
endif



rgb2ycc_a$(O)$(E).exe: rgb2ycc_a.c data.h
	scc $(LDFLAGS) $(CFLAGS) -o $(OUT_DIR)/rgb2ycc_a$(O)$(E).exe rgb2ycc_a.c

rgb2ycc_b$(O)$(E).exe: rgb2ycc_b$(O)$(E).o 
	scc $(LDFLAGS) $(CFLAGS) -o $(OUT_DIR)/rgb2ycc_b$(O)$(E).exe -Irgb2ycc_b$(E) rgb2ycc_b$(O)$(E).o  rgb2ycc.a

rgb2ycc_b$(O)$(E).o: rgb2ycc_b$(E)/rgb2ycc.h rgb2ycc_b.c data.h
	scc $(LDFLAGS) $(CFLAGS) -c -o rgb2ycc_b$(O)$(E).o -I./rgb2ycc_b$(E) rgb2ycc_b.c

rgb2ycc_b$(E)/rgb2ycc.h: rgb2ycc.xc rgb2ycc_b$(E)
	scc $(CFLAGS) -stretch-h rgb2ycc_b$(E)/rgb2ycc.h -o rgb2ycc.a rgb2ycc.xc

rgb2ycc_b$(E):
	mkdir rgb2ycc_b$(E)

clean_native:
ifeq ($(OS),Windows_NT) 
	if EXIST rgb2ycc_b-NATIVE. (rmdir /s /q rgb2ycc_b-NATIVE.)
else
	if [ -d "rgb2ycc_b-NATIVE" ]; then	\
	rm -Rf rgb2ycc_b-NATIVE;		\
	fi;
endif

clean_iss:
ifeq ($(OS),Windows_NT) 
	if EXIST rgb2ycc_b-S5ISS. (rmdir /s /q rgb2ycc_b-S5ISS.)
else
	if [ -d "rgb2ycc_b-S5ISS" ]; then	\
	rm -Rf rgb2ycc_b-S5ISS;			\
	fi;
endif

clean_s5610:
ifeq ($(OS),Windows_NT) 
	if EXIST rgb2ycc_b-S5610. (rmdir /s /q rgb2ycc_b-S5610.)
else
	if [ -d "rgb2ycc_b-S5610" ]; then	\
	rm -Rf rgb2ycc_b-S5610;			\
	fi;
endif

clean_s5530:
ifeq ($(OS),Windows_NT) 
	if EXIST rgb2ycc_b-S5530. (rmdir /s /q rgb2ycc_b-S5530.)
else
	if [ -d "rgb2ycc_b-S5530" ]; then	\
	rm -Rf rgb2ycc_b-S5530;			\
	fi;
endif

clean_other:
	$(RM) *.exe *.xr *.o *.a rgb2ycc.h
ifeq ($(OS),Windows_NT) 
	if EXIST stretch-tdk. (rmdir /s /q stretch-tdk.)
else
	if [ -d "stretch-tdk" ]; then	\
	rm -Rf stretch-tdk;		\
	fi;
endif

clean: clean_native clean_iss clean_s5610 clean_other

distclean: clean
	$(RM) profiles rgb2ycc.a rgb2ycc.h *.xo *.xr stretch-tdk
