# -------------------- #
# -- Label Makefile -- #
# -------------------- #

# Copyright (c) 2008-2008 Lionel Lacassagne
# with a little help of Stephane Piskorski and Joel Falcou

# -- Lile list ----------
FILE_ECC = ecc_common.c ecc_features.c ecc_generation.c ecc_lsl.c 

FILE_ECC_ALGO  = ecc_grana.c ecc_hcs.c  ecc_hcs2.c  ecc_minmax.c ecc_mpar32.c ecc_rcm.c ecc_rosenfeld.c ecc_selkow.c ecc_suzuki.c 
FILE_ECCX_ALGO = eccx_grana.c eccx_hcs2.c eccx_mpar32.c eccx_rem.c eccx_rosenfeld.c eccx_selkow.c eccx_suzuki.c 
FILE_ECCP_ALGO = eccp_grana.c eccp_hcs.c eccp_hcs2.c eccp_rcm.c eccp_rosenfeld.c eccp_suzuki.c
FILE_LSL = lsl.c lsl32.c lsl32_par.c lsl32_par1.c lsl32_par2.c
#FILE_REGION = region32.c region32_algo.c region32_par1.c region32_par2.c region32_par_features.c region32_rosenfeld.c
FILE_REGION = region32_par1.c region32_par2.c region32_par_features.c region32_rosenfeld.c region32.c region32_algo.c 
FILE_MISC = bmpNR.c histogramNR.c lutNR.c mt19937.c palette.c util.c str_ext.c
FILE_TEST = ecc_features_test.c ecc_test.c ecc_test_cabaret.c lsl32_test.c region32_test.c
FILE_MAIN = ecc_main.c

FILE =  $(FILE_ECC) $(FILE_ECC_ALGO) $(FILE_ECCX_ALGO) $(FILE_ECCP_ALGO) $(FILE_LSL) $(FILE_REGION) $(FILE_MISC) $(FILE_TEST) $(FILE_MAIN)

# -- Paths ----------
SRC_PATH = src
OBJ_PATH = obj
EXE_PATH = exe
INC_PATH = include

#Home
LIB_LIB_PATH = -L/Users/lacas/Code/NRC2/lib
LIB_INC_PATH = -I/Users/lacas/Code/NRC2/include


# -- OS ----------
#OS = MACH_OSX
#OS = POSIX6
OS = INTEL_CYCLE

# -- Macros ----------
CC = gcc
CC = icc
AR = ar -rc

# -- Flags ----------
# -fast: uniquement GCC-Apple
C_DEBUG_FLAGS = -O0
C_OPTIMISATION_FLAGS = -O3 -fstrict-aliasing -ipo # ipo ralenti
C_OPTIMISATION_FLAGS = -std=c99 -O3 -fstrict-aliasing
#C_OPTIMISATION_FLAGS = -fstrict-aliasing
# -fprefetch-loop-arrays pas avec ICC
C_ARCH_FLAGS = -xSSE4.2 -vec_report0 -openmp -openmp-report2
C_ARCH_FLAGS = 
C_OS_FLAGS = -D$(OS)
C_CONFIG_FLAGS = -D$(CONFIG)
C_INC_FLAGS = -I$(INC_PATH)

CFLAGS = $(C_DEBUG_FLAGS) $(C_ARCH_FLAGS) $(C_OS_FLAGS) $(C_CONFIG_FLAGS) $(C_INC_FLAGS) $(LIB_INC_PATH) 
CFLAGS = $(C_OPTIMISATION_FLAGS) $(C_ARCH_FLAGS) $(C_OS_FLAGS) $(C_CONFIG_FLAGS) $(C_INC_FLAGS) $(LIB_INC_PATH)

LDFLAGS = $(C_DEBUG_FLAGS) $(C_ARCH_FLAGS) $(C_OS_FLAGS) $(C_CONFIG_FLAGS)$(C_INC_FLAGS) $(LIB_LIB_PATH)
LDFLAGS = $(C_OPTIMISATION_FLAGS) $(C_ARCH_FLAGS) $(C_OS_FLAGS) $(C_CONFIG_FLAGS)$(C_INC_FLAGS) $(LIB_LIB_PATH)

# -- Config ----------
# if CONFIG = CLI  (Command Line Interface, no Apple Framework)

CONFIG = CLI

# -- Final product ----------
PRODUCT   = labeling.exe

# -- src and obj List ----------
SRC = $(addprefix ${SRC_PATH}/, $(FILE))
OBJ = $(addprefix ${OBJ_PATH}/, $(addsuffix .o, $(basename $(FILE))))

# -- Base rules ----------
$(OBJ_PATH)/%.o : $(SRC_PATH)/%.c
	$(CC) $(CFLAGS) -c $< -o $@
   
#-----Main rule ----------
$(EXE_PATH)/$(PRODUCT): $(OBJ)
	$(CC) -o $@ $^ $(LDFLAGS) $(INC) $(LIB_LIB_PATH) -lnrc2x -lm

# -- Other stuff ----------
depend:
	makedepend $(CFLAGS) -Y $(SRC)

clean:
	rm -f $(OBJ)
	#rm -f ${LIB_PATH}/${PRODUCT}

tar:
	tar -cvf labeling.tar Makefile src include
	gzip -9 labeling.tar