Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BUILDER / makefile / private / cuda / makeCudaVisual.mk
diff --git a/WCudaMSE/BUILDER/makefile/private/cuda/makeCudaVisual.mk b/WCudaMSE/BUILDER/makefile/private/cuda/makeCudaVisual.mk
new file mode 100755 (executable)
index 0000000..d2127ee
--- /dev/null
@@ -0,0 +1,676 @@
+# Version      : 0.0.8\r
+# Date         : 01.08.2014\r
+# Author       : Cedric.Bilat@he-arc.ch\r
+#\r
+# See          : OptionCompilateur.txt\r
+#\r
+# Hyp          : Application that must be in path\r
+#                              nvcc\r
+#                              mingw32-make\r
+#                              cl\r
+#\r
+#                      :  Environement Variables must be set\r
+#\r
+#                              ARCHI_32_64                     :       32 or 64\r
+\r
+ifndef __MAKE_VISUAL_CUDA_MK__\r
+__MAKE_VISUAL_CUDA_MK__=true\r
+\r
+\r
+##############################################\r
+#                       Variables                               #\r
+##############################################\r
+\r
+########\r
+# Path #\r
+########\r
+\r
+SRC_ROOT   :=src\r
+TARGET_OBJ:=${TARGET_PATH}/obj\r
+TARGET_BIN:= ${TARGET_PATH}/bin\r
+TARGET_CUBIN:=${TARGET_PATH}/cubin\r
+\r
+#synonime ameliorer\r
+TARGET_BIN_PATH:=${TARGET_BIN}\r
+TARGET_OBJ_PATH:=${TARGET_OBJ}\r
+\r
+#TARGET_DEPLOY_PATH_BIN=${TARGET_DEPLOY_PATH}/bin\r
+TARGET_DEPLOY_PATH_DOC=${TARGET_DEPLOY_PATH}/doc\r
+\r
+########\r
+# cpp #\r
+########\r
+\r
+CXX=cl\r
+\r
+########\r
+# Cuda #\r
+########\r
+\r
+NVCC := nvcc\r
+PTXAS_FLAGS := -fastimul\r
+OBJ_EXTENSION:=obj\r
+OPTION_SEPARATOR:=-#attention, end without space\r
+LINK_FLAG_DLL:=-shared#attention,end without space\r
+\r
+########\r
+#32/64 #\r
+########\r
+\r
+#plus necessaire\r
+#ifeq ($(ARCHI_32_64),64)\r
+       # override NVCCFLAGS+= -m64#default -m64 #dans public\r
+       #override CXXLDFLAGS+= /MACHINE:X64 #Deprecated!        #En plus posait probl�me de guillement (� la d�finition de CXXLDFLAGS)\r
+#endif\r
+\r
+TARGET_NAME:=$(TARGET_NAME)_$(ARCHI_32_64)\r
+\r
+\r
+#############\r
+# Extension  #\r
+#############\r
+\r
+EXTENSION_OBJ:=obj#\r
+EXTENSION_LIB:=lib#\r
+EXTENSION_DLL:=dll#\r
+EXTENSION_EXE:=exe#\r
+# Note enstension sans le .\r
+\r
+##########\r
+# TARGET #\r
+##########\r
+\r
+LIB_PREFIXE:=#rien\r
+\r
+TARGET_NAME_EXE:=$(TARGET_NAME).${EXTENSION_EXE}\r
+TARGET_NAME_DLL:=${LIB_PREFIXE}$(TARGET_NAME).$(EXTENSION_DLL)\r
+TARGET_NAME_LIB:=${LIB_PREFIXE}$(TARGET_NAME).${EXTENSION_LIB}\r
+\r
+TARGET_EXE:=${TARGET_BIN_PATH}/$(TARGET_NAME_EXE)\r
+TARGET_DLL:=${TARGET_BIN_PATH}/$(TARGET_NAME_DLL)\r
+TARGET_LIB:=${TARGET_BIN_PATH}/$(TARGET_NAME_LIB)\r
+#TARGET_OBJ:=$(addprefix $(TARGET_OBJ_PATH)/,$(notdir $(OBJ_FILES)))\r
+\r
+#Selection de la target en fonction TARGET_MODE\r
+ifeq ($(TARGET_MODE),EXE)\r
+       TARGET:=${TARGET_EXE}\r
+       TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_EXE)\r
+endif\r
+\r
+ifeq ($(TARGET_MODE),SHARED_LIB)\r
+       TARGET:=${TARGET_DLL}\r
+       TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_DLL)\r
+       \r
+       override NVCCLDFLAGS += $(LINK_FLAG_DLL)\r
+endif\r
+\r
+ifeq ($(TARGET_MODE),STATIC_LIB)\r
+       TARGET:=${TARGET_LIB}\r
+       TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_LIB)\r
+endif\r
+\r
+###########\r
+#Extension#\r
+###########\r
+\r
+#ifeq ($(TARGET_MODE),SHARED_LIB)\r
+#      override NVCCLDFLAGS+= $(LINK_FLAG_DLL) \r
+#      TARGET_NAME_FULL=$(TARGET_NAME).dll\r
+#endif\r
+\r
+#ifeq ($(TARGET_MODE),EXE)\r
+#      TARGET_NAME_FULL=$(TARGET_NAME).exe\r
+#endif\r
+\r
+#TARGET:=$(TARGET_BIN)/$(TARGET_NAME_FULL)\r
+#TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_FULL)\r
+\r
+##########\r
+#ARCHIVEUR#\r
+###########\r
+\r
+AR:=lib\r
+ARFLAGS=# pas= car valeur vaut rv avant sous windows ???\r
+AR_OUT_FLAG:=/OUT:#Sans espace\r
+\r
+############\r
+# Params   #\r
+############\r
+\r
+#ameliorer deja avant mais sans .\r
+EXTENSION_LIB:=.lib\r
+EXTENSION_DLL:=.dll\r
+#LIB_PREFIX:=#pas de prefixe\r
+\r
+############\r
+#Set files #\r
+############\r
+\r
+#Hyp : Shell sh\r
+SRC_PATH:=$(shell find $(SRC_ROOT) -type d)    \r
+ifdef SRC_AUX\r
+       SRC_PATH_AUX:=$(shell find $(SRC_AUX) -type d)\r
+else\r
+       SRC_PATH_AUX:=\r
+endif\r
+\r
+SRC_PATH_ALL:=$(SRC_PATH) $(SRC_PATH_AUX)\r
+\r
+SRC_CPP_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cpp)) \r
+SRC_C_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.c)) \r
+SRC_CU_FILES  := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cu)) \r
+SRC_LIB_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.lib)) $(ADD_LIBRARY_FILES)\r
+\r
+#################\r
+# PREPARE FLAGS #\r
+#################\r
+\r
+#ifneq (, $(findstring openmp,$(CXXFLAGS)))#findstring return vide si openmp pas trouver!\r
+#      ADD_LIBRARY_FILES+=libiomp5md.lib \r
+\r
+#Delete extension .lib\r
+SRC_LIB_FILES:= $(SRC_LIB_FILES:$(EXTENSION_LIB)=)\r
+\r
+SRC_LIB_FILES_l:= $(addprefix $(OPTION_SEPARATOR)l,$(notdir $(SRC_LIB_FILES))) \r
+#ALL_LIB_FILES_l:= $(CUDA_LIB_FILES_l) $(CULA_LIB_FILES_l) $(SRC_LIB_FILES_l)\r
+ALL_LIB_FILES_l:= $(SRC_LIB_FILES_l)\r
+\r
+LIB_PATH:=$(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.lib)))#dir extract directory of file,  $(wildcard $(dir)/*.h)=> take file.h if exist\r
+override LIB_PATH:=$(call uniq,${LIB_PATH})\r
+#SRC_LIB_L:=$(addprefix $(OPTION_SEPARATOR)L,$(SRC_PATH_ALL))#old\r
+SRC_LIB_L:=$(addprefix $(OPTION_SEPARATOR)L,$(LIB_PATH))\r
+\r
+#ALL_LIB_L:=$(SRC_LIB_L) $(CUDA_LIB_L) $(CULA_LIB_L)\r
+ALL_LIB_L:=$(SRC_LIB_L)\r
+\r
+\r
+override INC_PATH:=${INC_PATH} $(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.h)))#dir extract directory of file,  $(wildcard $(dir)/*.h)=> take file.h if exist\r
+override INC_PATH:=$(call uniq,${INC_PATH})\r
+#${info "INC_PATH= "${INC_PATH}}#print immediately\r
+#SRC_HEADER_I := $(addprefix  $(OPTION_SEPARATOR)I,$(SRC_PATH_ALL))#old\r
+SRC_HEADER_I := $(addprefix  $(OPTION_SEPARATOR)I,$(INC_PATH))\r
+#ALL_HEADERS_I:= $(SRC_HEADER_I)#old \r
+\r
+OBJ_FILES_CPP:= $(SRC_CPP_FILES:.cpp=.$(OBJ_EXTENSION))\r
+OBJ_FILES_C:= $(SRC_C_FILES:.c=.$(OBJ_EXTENSION))\r
+OBJ_FILES:= ${OBJ_FILES_CPP} ${OBJ_FILES_C}\r
+OBJ_FILES:= $(addprefix $(TARGET_OBJ)/,$(notdir $(OBJ_FILES)))\r
+\r
+CU_FILES := $(SRC_CU_FILES:.cu=.$(OBJ_EXTENSION))\r
+CU_FILES := $(addprefix $(TARGET_OBJ)/,$(notdir $(CU_FILES))) \r
+\r
+OBJ_CU_FILES:=$(OBJ_FILES) $(CU_FILES)\r
+\r
+#Injection variable in .cpp code (VAR1 VAR2 -> -DVAR1 -DVAR2)\r
+CODE_DEFINE_VARIABLES_D:= $(addprefix  -D,$(CODE_DEFINE_VARIABLES))\r
+\r
+#override NVCCFLAGS   += $(ALL_HEADERS_I)#old \r
+override NVCCFLAGS   += $(SRC_HEADER_I) \r
+override NVCCLDFLAGS += $(ALL_LIB_L) $(ALL_LIB_FILES_l)\r
+override CXXFLAGS += $(CODE_DEFINE_VARIABLES_D)\r
+\r
+ifneq (, $(findstring /MD,$(CXXFLAGS)))#findstring return vide si /MD pas trouver!\r
+       override CXXLDFLAGS+= /NODEFAULTLIB:LIBCMT\r
+endif\r
+\r
+#Adding " " around CXXFLAGS and CXXLDFLAGS, otherwise we can't specifie more than one options !\r
+#override CXXFLAGS:=" $(CXXFLAGS) " \r
+#override CXXLDFLAGS:=" $(CXXLDFLAGS) "\r
+#plus tard apres optimisation\r
+\r
+##########\r
+# securite #\r
+##########\r
+\r
+#Directory search path(use implicit in rules)\r
+VPATH := $(SRC_PATH_ALL)\r
+\r
+########\r
+#Optimisation #\r
+########\r
+\r
+include ${ROOT_MAKEFILE_PRIVATE_CUDA}/optimisation.mk\r
+\r
+##########\r
+# exclude #\r
+##########\r
+\r
+override NVCCFLAGS:=$(filter-out $(NVCCFLAGS_EXCLUDE),$(NVCCFLAGS))\r
+override CXXFLAGS:=$(filter-out $(CXXFLAGS_EXCLUDE),$(CXXFLAGS))\r
+\r
+#https://www.gnu.org/software/make/manual/make.html#Functions\r
+\r
+##########\r
+# runtime #\r
+##########\r
+\r
+space:= #ne suufit pas ajoutre espaca, mais += le fait!\r
+space+=#\r
+\r
+ifeq (${OS},Win)\r
+       separateurPath:=;#      \r
+else\r
+       separateurPath:=:#\r
+endif\r
+\r
+API_BIN_FORMATTER:=$(subst ${space},${separateurPath},${API_BIN})\r
+\r
+ifeq (${OS},Win)\r
+       override PATH:=${PATH}${separateurPath}${API_BIN_FORMATTER}#\r
+       export ${PATH}#\r
+else\r
+       override LD_LIBRARY_PATH:=${LD_LIBRARY_PATH}${separateurPath}${API_BIN_FORMATTER}#\r
+       export ${LD_LIBRARY_PATH}#fixme semble pas marcher\r
+endif\r
+\r
+##########\r
+# unicitye #\r
+##########\r
+\r
+UNICITY=true\r
+\r
+ifdef UNICITY\r
+\r
+       override CXXFLAGS:=$(call uniq,${CXXFLAGS})\r
+       override CXXLDFLAGS:=$(call uniq,${CXXLDFLAGS})\r
+       #override NVCCFLAGS:=$(call uniq,${NVCCFLAGS}) pas possible car enleve -gencode\r
+       override NVCCLDFLAGS:=$(call uniq,${NVCCLDFLAGS})\r
+       override ARFLAGS:=$(call uniq,${ARFLAGS})\r
+       #override AR_OUT_FLAG:=$(call uniq,${AR_OUT_FLAG})#met espace apres /out, pas pour visual/intel\r
+\r
+#debug\r
+#${info "CXXFLAGS= "${CXXFLAGS}}#print immediately\r
+#${info "CXXLDFLAGS"= ${CXXLDFLAGS}}#print immediatel\r
+#${info "NVCCFLAGS= "${NVCCFLAGS}}#print immediatel\r
+#${info "NVCCLDFLAGS= "${NVCCLDFLAGS}}#print immediatel\r
+#${info "ARFLAGS= "${ARFLAGS}}#print immediatel\r
+#${info "AR_OUT_FLAG= "${AR_OUT_FLAG}}#print immediatel\r
+\r
+endif#UNICITY\r
+\r
+##########\r
+# remove space #\r
+##########\r
+\r
+#let a minimum of one space\r
+REMOVE_SPACE=true\r
+\r
+ifdef REMOVE_SPACE\r
+\r
+       override CXXFLAGS:=$(strip ${CXXFLAGS})\r
+       override CXXLDFLAGS:=$(strip ${CXXLDFLAGS})\r
+       override NVCCLDFLAGS:=$(strip ${NVCCLDFLAGS})\r
+       override NVCCFLAGS:=$(strip ${NVCCFLAGS})\r
+       override ARFLAGS:=$(strip ${ARFLAGS})\r
+       #override AR_OUT_FLAG:=$(strip ${AR_OUT_FLAG}) #pas pour mingw car enleve espace apres -r\r
+\r
+       #override CXXFLAGS:=$(subst $(space),,$(CXXFLAGS))\r
+\r
+endif#REMOVE_SPACE\r
+\r
+##########\r
+# bug #\r
+##########\r
+\r
+#Adding " " around CXXFLAGS and CXXLDFLAGS, otherwise we can't specifie more than one options !\r
+override CXXFLAGS:=" $(CXXFLAGS) " \r
+override CXXLDFLAGS:=" $(CXXLDFLAGS) "\r
+\r
+###########\r
+# chrono  #\r
+###########\r
+\r
+override TIME_START:=$(shell date +%T)\r
+TIME_CURRENT=$(shell date +%T)\r
+#TIME_DELTA:=$(shell echo $(TIME_CURRENT) - $(TIME_START) | bc) #marche pas\r
+\r
+######################\r
+#        Rules       #\r
+######################\r
+\r
+TITLE:=$(TARGET_NAME)\r
+\r
+################\r
+#.o->.exe,.dll #\r
+################\r
+\r
+$(TARGET) : $(OBJ_CU_FILES)\r
+#@echo "$(NVCC) $(NVCCLDFLAGS)  -Xlinker $(CXXLDFLAGS)  $^ -o $(TARGET)"\r
+       @echo ""\r
+       @echo "[CBI] -> Linking to   : "$(TARGET)\r
+       @echo ""\r
+       @echo "[CBI] -> Library Link :"\r
+       @echo "[CBI] ->"  \r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(call containing,-l,$(NVCCLDFLAGS)))\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(call containing,-l,$(CXXLDFLAGS)))\r
+       @echo "" \r
+       @$(NVCC) $(NVCCLDFLAGS) -Xlinker  $(CXXLDFLAGS)  $^ -o $(TARGET)\r
+       @echo ""\r
+       @echo "=================================================================================="\r
+       @echo "[CBI] -> Target Name  : "$(TARGET_NAME)\r
+       @echo "[CBI] -> Location     : "$(TARGET)\r
+       @echo "[CBI] -> Deploy    : "$(TARGET_DEPLOY_PATH_BIN)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Type              : "$(TARGET_MODE)\r
+       @echo "[CBI] -> Arch              : "$(ARCHI_32_64)\r
+       @echo "[CBI] -> OS                    : "$(OS)\r
+       @echo "[CBI] -> User              : "$(USER)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Compilateur  : VISUAL (${CXX}) && NVIDIA (${NVCC})"\r
+       @echo "[CBI] -> Task              : End Compiling-Linking !" \r
+       @echo "[CBI] -> Time          : "${TIME_CURRENT} \r
+       @echo "=================================================================================="\r
+       @echo ""  \r
+       \r
+# -o =outfile\r
+# tabulation obligatoire before @\r
+\r
+################\r
+#  .o->.lib    #\r
+################\r
+\r
+${TARGET_LIB}:$(OBJ_CU_FILES)\r
+#@echo "${AR} ${AR_OUT_FLAG}${TARGET_LIB} ${ARFLAGS} $^"\r
+       @echo ""\r
+       @${AR} ${AR_OUT_FLAG}${TARGET_LIB} ${ARFLAGS} $^\r
+       @echo ""\r
+       @echo "=================================================================================="\r
+       @echo "[CBI] -> Target Name  : "$(TARGET_NAME)\r
+       @echo "[CBI] -> Location     : "$(TARGET)\r
+       @echo "[CBI] -> Deploy    : "$(TARGET_DEPLOY_PATH_BIN)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Type              : "$(TARGET_MODE)\r
+       @echo "[CBI] -> Arch              : "$(ARCHI_32_64)\r
+       @echo "[CBI] -> OS                        : "$(OS)\r
+       @echo "[CBI] -> User              : "$(USER)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Compilateur  : VISUAL (${CXX}) && NVIDIA (${NVCC})"\r
+       @echo "[CBI] -> Task          : End Compiling-Archive !" \r
+       @echo "[CBI] -> Time              : "${TIME_CURRENT} \r
+       @echo "=================================================================================="\r
+       @echo ""\r
+\r
+################\r
+#   .cpp->.o   #\r
+################\r
+\r
+$(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cpp\r
+#@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"\r
+#@echo "[${TITLE}] -> ${CXX} compiling .cpp : "$<\r
+       @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS)  $@ -c $<\r
+\r
+# -c = compilation\r
+# -o =outfile\r
+\r
+################\r
+#   .c->.o   #\r
+################\r
+\r
+$(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.c\r
+#@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"\r
+#@echo "[${TITLE}] -> ${CXX} compiling .c   : "$<\r
+       @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS)  $@ -c $<\r
+\r
+# -c = compilation\r
+# -o =outfile\r
+\r
+################\r
+#   .cu->.o   #\r
+################\r
+\r
+$(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cu\r
+#@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@"\r
+#@echo "[${TITLE}] -> ${NVCC} compiling .cu : "$<\r
+       @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@\r
+#cuda6: Il ne faut pas utiliser le flag �std=c++0x lorsque l�on compile un fichier .cu !\r
+#cuda6.5: devrait etre ok\r
+##Adding "" "" around final CXXFLAGS, to keep one " " around final CXXFLAGS , in order to can specifie more than one options !\r
+#$(filter-out pas necesaire with visual&intel windows\r
+\r
+# -c = compilation\r
+# -o =outfile\r
+\r
+##############################################\r
+#                                TARGET                                     #\r
+##############################################\r
+\r
+#all: version help\r
+#all: echoing $(TARGET) deploy \r
+all: echoing init $(TARGET) deploy cleanTempCudaFile \r
+       @echo ""\r
+       @echo "[CBI] -> "$(TITLE)"   : End ALL!"\r
+\r
+.PHONY: version\r
+version:\r
+       @echo ""\r
+       @nvcc --version\r
+       @echo ""\r
+       @cl \r
+\r
+.PHONY: help\r
+help:\r
+       @echo ""\r
+       @nvcc --help\r
+       \r
+##########\r
+# deploy #\r
+##########\r
+\r
+.PHONY: deploy\r
+deploy:\r
+ifdef TARGET_DEPLOY_PATH\r
+       @$(shell cp $(TARGET) $(TARGET_DEPLOY))\r
+       @echo ""\r
+       @echo "[CBI] -> Deploying    : "$(TARGET_DEPLOY) \r
+endif\r
+\r
+##########\r
+# run    #\r
+##########\r
+\r
+.PHONY: run\r
+run: printRuntimeInfo\r
+       @echo ""\r
+       @echo "[CBI] -> Running  : "$(TARGET)  $(ARGS)\r
+       @echo ""\r
+       @echo "------------------------------------------------------------------------"\r
+       @echo ""\r
+       @echo ""\r
+       @$(TARGET) $(ARGS)\r
+\r
+.PHONY: runDeploy      \r
+runDeploy: printRuntimeInfo\r
+       @echo ""\r
+       @echo "[CBI] -> Running  : "$(TARGET_DEPLOY)  $(ARGS)\r
+       @echo ""\r
+       @echo "------------------------------------------------------------------------"\r
+       @echo ""\r
+       @echo ""\r
+       @$(TARGET_DEPLOY) $(ARGS)       \r
+\r
+\r
+.PHONY: printRuntimeInfo       \r
+printRuntimeInfo:\r
+       @echo ""\r
+       @echo "[CBI] -> API BIN      :"\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${API_BIN}}     \r
+       @echo ""\r
+       @echo "[CBI] -> ARGS         :"\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${ARGS}}        \r
+\r
+##########\r
+# depends #\r
+##########\r
+       \r
+.PHONY: dependenciesWin\r
+dependenciesWin:       printRuntimeInfo\r
+       @echo ""\r
+       @echo "[CBI] -> Dependencies .dll : "${TARGET}\r
+       @${DEPENDS_EXE} ${TARGET_DEPLOY}\r
+\r
+##########\r
+# contents #\r
+##########\r
+\r
+.PHONY: contententsWin\r
+contententsWin:        printRuntimeInfo\r
+       @echo ""\r
+       @echo "[CBI] -> Dependencies .dll : "${TARGET_NAME_EXE}\r
+       @${DEPENDS_EXE} ${TARGET_DEPLOY}\r
+\r
+##########\r
+# init   #\r
+##########\r
+\r
+.PHONY: init   \r
+init:\r
+#create folder heirerarchy TARGET_BIN_PATH iff don't exist\r
+ifeq (,$(findstring $(TARGET_BIN),$(wildcard $(TARGET_BIN) )))\r
+       @$(shell mkdir -p $(TARGET_BIN))\r
+       @echo "[CBI] -> Create folder  : "$(TARGET_BIN)\r
+endif\r
+#create folder heirerarchy TARGET_BIN_PATH iff don't exist\r
+ifeq (,$(findstring $(TARGET_OBJ),$(wildcard $(TARGET_OBJ) )))\r
+       @$(shell mkdir -p $(TARGET_OBJ))\r
+       @echo "[CBI] -> Create folder  : "$(TARGET_OBJ)\r
+endif\r
+#create folder heirerarchy TARGET_BIN_PATH iff don't exist\r
+ifeq (,$(findstring $(TARGET_CUBIN),$(wildcard $(TARGET_CUBIN) )))\r
+       @$(shell mkdir -p $(TARGET_CUBIN))\r
+       @echo "[CBI] -> Create folder  : "$(TARGET_CUBIN)\r
+endif\r
+ifeq (,$(findstring $(TARGET_DEPLOY_PATH_BIN),$(wildcard $(TARGET_DEPLOY_PATH_BIN) )))\r
+       @$(shell mkdir -p $(TARGET_DEPLOY_PATH_BIN))\r
+       @echo "[CBI] -> Create folder : "$(TARGET_DEPLOY_PATH_BIN)\r
+       @echo ""\r
+endif\r
+       @echo ""\r
+\r
+##########\r
+# doc    #\r
+##########\r
+\r
+include ${ROOT_MAKEFILE_PRIVATE_DOC}/doxyCPP.mk\r
+\r
+\r
+##########\r
+# clean #\r
+##########\r
+\r
+.PHONY: clean  \r
+clean:\r
+       @rm -f $(TARGET_OBJ)/*.o\r
+       @rm -f $(TARGET_OBJ)/*.obj\r
+       @rm -f $(TARGET_BIN)/*.exp\r
+       @rm -f $(TARGET_BIN)/*.lib\r
+       @rm -f $(TARGET)\r
+       @rm -f $(TARGET_DEPLOY)\r
+       @rm -f $(TARGET_CUBIN)/*\r
+       @rm -f $(TARGET_DOC_DEPLOY_FILE)\r
+       @rm -f -r $(TARGET_DOC_PATH)\r
+       @echo ""\r
+       @echo "=================================================================================="\r
+       @echo "[CBI] -> Target            : "$(TARGET_NAME)\r
+       @echo "[CBI] -> Task                         : DELETE"\r
+       @echo "[CBI]"\r
+       @echo "[CBI] -> Delete .obj       : "$(TARGET_OBJ)\r
+       @echo "[CBI] -> Delete .bin       : "$(TARGET_BIN)\r
+       @echo "[CBI] -> Delete .cubin     : "$(TARGET_CUBIN)\r
+       @echo "[CBI] -> Delete doc        : "$(TARGET_DOC_PATH)\r
+       @echo "[CBI]"\r
+       @echo "[CBI] -> Delete deploy     : "$(TARGET_DEPLOY)\r
+       @echo "[CBI] -> Delete deploy doc : "$(TARGET_DOC_DEPLOY_FILE)\r
+       @echo "=================================================================================="\r
+       @echo ""\r
+\r
+.PHONY: cleanTempCudaFile\r
+cleanTempCudaFile:\r
+       @rm -f ${TARGET_CUBIN}/*.c\r
+       @rm -f ${TARGET_CUBIN}/*.cpp\r
+       @rm -f ${TARGET_CUBIN}/*.gpu\r
+       @rm -f ${TARGET_CUBIN}/*.i\r
+       @rm -f ${TARGET_CUBIN}/*.ii\r
+       @rm -f ${TARGET_CUBIN}/*.hash\r
+       @rm -f ${TARGET_CUBIN}/*.ptx\r
+#@echo "[CBI] -> Cleaning     : Cuda temp files, excepted .cubin for JCuda"\r
+#@echo ""\r
+\r
+#rm -r #serait recursif (dangereux!!)\r
+#rm -f #pas d'erreur si file existe pas!\r
+\r
+##########\r
+# echo   #\r
+##########\r
+\r
+.PHONY: echoing\r
+echoing:\r
+       @echo ""\r
+       @echo "=================================================================================="\r
+       @echo "[CBI] -> Target Name  : "$(TARGET_NAME)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Build        : "$(TARGET)\r
+       @echo "[CBI] -> Deploy       : "$(TARGET_DEPLOY_PATH_BIN)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Type          : "$(TARGET_MODE)\r
+       @echo "[CBI] -> Arch          : "$(ARCHI_32_64)\r
+       @echo "[CBI] -> OS                        : "$(OS)\r
+       @echo "[CBI] -> User              : "$(USER)\r
+       @echo "[CBI] ->"\r
+       @echo "[CBI] -> Task              : Compiling-Linking !" \r
+#@echo "[CBI]->Time           : "${TIME_CURRENT} \r
+       @echo "=================================================================================="\r
+       @echo ""\r
+       @echo "[CBI] -> SRC AUX (Recursif) :" \r
+       @echo "[CBI] ->"   \r
+#@echo $(SRC_AUX)      \r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(SRC_AUX)\r
+       @echo "" \r
+       @echo "[CBI] -> CXXFLAGS (Partial) :"\r
+       @echo "[CBI] ->" \r
+#@echo $(CXXFLAGS)     \r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-I,$(CXXFLAGS)) #sort kp, why\r
+       @echo "" \r
+       @echo "[CBI] -> CXXLDFLAGS (Partial) :"\r
+       @echo "[CBI] ->" \r
+#@echo $(CXXLDFLAGS)\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-L, $(call not-containing,-l,$(CXXLDFLAGS)))   #sort ko why?\r
+       @echo "" \r
+       @echo "[CBI] -> NVCCFLAGS (Partial) :"\r
+       @echo "[CBI] ->" \r
+#@echo $(NVCCFLAGS)\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(call not-containing,-I,$(NVCCFLAGS)))\r
+       @echo "" \r
+       @echo "[CBI] -> NVCCLDFLAGS (Partial) :"\r
+       @echo "[CBI] ->"  \r
+#@echo $(NVCCLDFLAGS)\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(call not-containing,-L, $(call not-containing,-l,$(NVCCLDFLAGS))))\r
+       @echo ""  \r
+       @echo "[CBI] -> INC_PATH (auto detect):"\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(INC_PATH))\r
+       @echo "" \r
+       @echo "" \r
+       @echo "[CBI] -> LIB_PATH (auto detect):"\r
+       @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh  $(sort $(LIB_PATH))\r
+       @echo "" \r
+\r
+##############################################\r
+#                               HELP                                #\r
+##############################################\r
+\r
+# target : dependencies\r
+#\r
+# $@ = name of the target\r
+# $^ = all dependencie of a target\r
+# $< =first (unique dependency of a target) (rm, compilation,linking)\r
+#\r
+# @ = diminue verbosit� commande\r
+#\r
+# Attention : tabulation obligatoire avant commande dans rule!!\r
+#\r
+# http://www.gnu.org/software/make/manual/\r
+\r
+#############################################\r
+#                               END                                #\r
+#############################################\r
+\r
+endif#__MAKE_VISUAL_CUDA_MK__\r