3 # Author : Cedric.Bilat@he-arc.ch
5 # See : OptionCompilateur.txt
7 # Hyp : Application that must be in path
15 ifndef __MAKE_CUDA_GCC_MK__
16 __MAKE_CUDA_GCC_MK__=true
18 ##############################################
20 ##############################################
24 machine:=${shell uname -m}
25 ifeq (${machine},x86_64)
36 TARGET_OBJ:=${TARGET_PATH}/obj
37 TARGET_BIN:=${TARGET_PATH}/bin
38 TARGET_CUBIN:=${TARGET_PATH}/cubin
41 TARGET_BIN_PATH:=${TARGET_BIN}
42 TARGET_OBJ_PATH:=${TARGET_OBJ}
44 #TARGET_DEPLOY_PATH_BIN=${TARGET_DEPLOY_PATH}/bin
45 TARGET_DEPLOY_PATH_DOC=${TARGET_DEPLOY_PATH}/doc
58 PTXAS_FLAGS := -fastimul
60 OPTION_SEPARATOR:=-#attention, end without space
61 LINK_FLAG_DLL:=-shared #with space ! pour nvcc
64 LIB_PREFIXE:=lib# example : libXXX.a
65 LIB_FLAG_SEPARATOR:=l#attention end without space!
66 LIB_PATH_SEPARATOR:=L#attention end with space!
72 #ifeq ($(ARCHI_32_64),64)
73 #override NVCCFLAGS+= -m64#default -m64! #dans public
74 #override CXXLDFLAGS+=/MACHINE:X64 #Deprecated!
78 TARGET_NAME:=$(TARGET_NAME)_$(ARCHI_32_64)
80 TARGET_NAME:=$(TARGET_NAME)_ARM
91 # Note enstension sans le .
100 TARGET_NAME_EXE:=$(TARGET_NAME).${EXTENSION_EXE}
101 TARGET_NAME_DLL:=${LIB_PREFIXE}$(TARGET_NAME).$(EXTENSION_DLL)
102 TARGET_NAME_LIB:=${LIB_PREFIXE}$(TARGET_NAME).${EXTENSION_LIB}
104 TARGET_EXE:=${TARGET_BIN_PATH}/$(TARGET_NAME_EXE)
105 TARGET_DLL:=${TARGET_BIN_PATH}/$(TARGET_NAME_DLL)
106 TARGET_LIB:=${TARGET_BIN_PATH}/$(TARGET_NAME_LIB)
107 #TARGET_OBJ:=$(addprefix $(TARGET_OBJ_PATH)/,$(notdir $(OBJ_FILES)))
109 #Selection de la target en fonction TARGET_MODE
110 ifeq ($(TARGET_MODE),EXE)
111 TARGET:=${TARGET_EXE}
112 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_EXE)
115 ifeq ($(TARGET_MODE),SHARED_LIB)
116 TARGET:=${TARGET_DLL}
117 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_DLL)
119 override NVCCLDFLAGS += $(LINK_FLAG_DLL)
121 #Attention ARM : doit venir juste après le -Xcompiler!
122 override CXXFLAGS := -fPIC -fvisibility=hidden ${CXXFLAGS}
127 ifeq ($(TARGET_MODE),STATIC_LIB)
128 TARGET:=${TARGET_LIB}
129 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_LIB)
134 #ifeq ($(TARGET_MODE),SHARED_LIB)
135 # override NVCCLDFLAGS+= $(LINK_FLAG_DLL)
136 # override CXXFLAGS += -fPIC -fvisibility=hidden
137 # TARGET_NAME_FULL=lib$(TARGET_NAME).so
140 #ifeq ($(TARGET_MODE),EXE)
141 # TARGET_NAME_FULL=$(TARGET_NAME).run
144 #TARGET:=$(TARGET_BIN)/$(TARGET_NAME_FULL)
145 #TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_FULL)
157 ARFLAGS=# pas= car valeur vaut rv avant sous windows ???
158 AR_OUT_FLAG:=-r #with espace important !
164 #ameliorer deja avant mais sans .
167 #LIB_PREFIX:=#pas de prefixe
173 SRC_PATH:=$(shell find $(SRC_ROOT) -type d)
176 SRC_PATH_AUX:=$(shell find $(SRC_AUX) -type d)
181 SRC_PATH_ALL:=$(SRC_PATH) $(SRC_PATH_AUX)
182 SRC_SO_FILES:=$(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.so))
184 # Libraries au format standard
196 # Les .a prefixe par lib (example libXXX.a) seront donnee a GCC sous la forme -lXXX)
197 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a
199 # Sous linux les .a standards sont libXXX.a
200 # Les YYY.a sont non standards.
202 SRC_A_FILES_STANDART:=$(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/$(LIB_PREFIXE)*$(EXTENSION_LIB)))
203 SRC_A_FILES_STANDART+=$(SRC_SO_FILES)
205 # Libraries au format non standard
210 # All files XXX.a (without libXXX.a)
212 # Les .a prefixer par lib (libXXX.a) seront donnee a GCC sous la forme -lXXX
213 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a avec la path complet (par exemple ../libs/YYY.a)
215 SRC_A_FILES_NOT_STANDARD:=$(foreach dir,$(SRC_PATH_ALL),$(filter-out $(dir)/$(LIB_PREFIXE)%$(EXTENSION_LIB),$(wildcard $(dir)/*$(EXTENSION_LIB))))
217 SRC_CPP_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cpp))
218 SRC_C_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.c))
219 SRC_CU_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cu))
221 OBJ_FILES_CPP:= $(SRC_CPP_FILES:.cpp=.$(OBJ_EXTENSION))
222 OBJ_FILES_C:= $(SRC_C_FILES:.c=.$(OBJ_EXTENSION))
223 OBJ_FILES:= ${OBJ_FILES_CPP} ${OBJ_FILES_C}
224 OBJ_FILES:= $(addprefix $(TARGET_OBJ)/,$(notdir $(OBJ_FILES)))
226 CU_FILES := $(SRC_CU_FILES:.cu=.$(OBJ_EXTENSION))
227 CU_FILES := $(addprefix $(TARGET_OBJ)/,$(notdir $(CU_FILES)))
229 OBJ_CU_FILES:=$(OBJ_FILES) $(CU_FILES)
235 #only fileName (./libs/libXXX.a ./libs/YYY.so -> lixXXX.a YYY.so)
236 LIB_FLAG:=$(notdir $(SRC_A_FILES_STANDART))
238 #removing prefix lib (libXXX.a libYYY.a libZZZ.so -> XXX.a YYY.a ZZZ.so)
239 LIB_FLAG:=$(subst $(LIB_PREFIXE),,$(LIB_FLAG))#remplace lib par rien
241 #Delete extension .a (XXX YYY)
242 LIB_FLAG:=$(LIB_FLAG:$(EXTENSION_LIB)=)
244 #Delete extension .so (AAA.so BBB.so -> AAA BBB)
245 LIB_FLAG:=$(LIB_FLAG:$(EXTENSION_DLL)=)
247 #ADDING user specified lib (GL GLUT gomp ...)
248 LIB_FLAG+=$(ADD_LIBRARY_FILES)
251 # list lib to delete example (AAA ZZZ)
253 # before : LIB_FLAG (XXX YYY ZZZ)
254 # after : LIB_FLAG (XXX YYY) without ZZZ
255 LIB_FLAG:=$(filter-out $(EXCLUDE_LIBRARY_FILES),$(LIB_FLAG))
257 #Adding Lib FLAG separator (XXX YYY -> -lXXX -lYYY)
258 LIB_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_FLAG_SEPARATOR),$(LIB_FLAG))
259 LIB_FLAG+=$(CUDA_LIB_FILES_l) $(CULA_LIB_FILES_l)
261 #Adding Lib path FLAG separator -L (../AAA ./BBB -> -L../AAA _L./BBB)
262 LIB_PATH:=$(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.so)))#dir extract directory of file, $(wildcard $(dir)/*.h)=> take file.h if exist
263 override LIB_PATH:=$(call uniq,${LIB_PATH})
264 #LIB_PATH_FLAG+=$(CUDA_LIB_L) $(CULA_LIB_L)#old
265 #LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(SRC_PATH_ALL))#old
266 LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(LIB_PATH))
268 #Adding Include FLAG separator
269 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
270 override INC_PATH:=$(call uniq,${INC_PATH})
271 #${info "INC_PATH= "${INC_PATH}}#print immediately
272 #SRC_HEADER_I := $(addprefix $(OPTION_SEPARATOR)I,$(SRC_PATH_ALL))#old
273 SRC_HEADER_I := $(addprefix $(OPTION_SEPARATOR)I,$(INC_PATH))
274 #ALL_HEADERS_I:= $(SRC_HEADER_I)#old
277 #Injection variable in .cpp code (VAR1 VAR2 -> -DVAR1 -DVAR2)
278 CODE_DEFINE_VARIABLES_D:= $(addprefix -D,$(CODE_DEFINE_VARIABLES))
280 #override NVCCFLAGS += $(ALL_HEADERS_I)#old
281 override NVCCFLAGS += $(SRC_HEADER_I)
282 override NVCCLDFLAGS += $(LIB_PATH_FLAG) $(LIB_FLAG) $(SRC_A_FILES_NOT_STANDARD)
283 override CXXFLAGS += $(CODE_DEFINE_VARIABLES_D)
289 #Directory search path (use implicit in rules)
290 VPATH := $(SRC_PATH_ALL)
296 space:= #ne suufit pas ajoutre espaca, mais += le fait!
305 API_BIN_FORMATTER:=$(subst ${space},${separateurPath},${API_BIN})
308 override PATH:=${PATH}${separateurPath}${API_BIN_FORMATTER}
311 override LD_LIBRARY_PATH:=${LD_LIBRARY_PATH}${separateurPath}${API_BIN_FORMATTER}
312 export ${LD_LIBRARY_PATH}#fixme semble pas marcher
319 include ${ROOT_MAKEFILE_PRIVATE_CUDA}/optimisation.mk
325 include ${ROOT_MAKEFILE_PRIVATE_CUDA}/cudaGCC_arm.mk
331 override CXXFLAGS:=$(filter-out $(CXXFLAGS_EXCLUDE),$(CXXFLAGS))
332 override NVCCFLAGS:=$(filter-out $(NVCCFLAGS_EXCLUDE),$(NVCCFLAGS))
334 #https://www.gnu.org/software/make/manual/make.html#Functions
345 override CXXFLAGS:=$(call uniq,${CXXFLAGS})
346 override CXXLDFLAGS:=$(call uniq,${CXXLDFLAGS})
347 #override NVCCFLAGS:=$(call uniq,${NVCCFLAGS}) pas possible car enleve -gencode
348 override NVCCLDFLAGS:=$(call uniq,${NVCCLDFLAGS})
349 override ARFLAGS:=$(call uniq,${ARFLAGS})
350 #override AR_OUT_FLAG:=$(call uniq,${AR_OUT_FLAG})
353 #${info "CXXFLAGS= "${CXXFLAGS}}#print immediately
354 #${info "CXXLDFLAGS"= ${CXXLDFLAGS}}#print immediatel
355 #${info "NVCCLDFLAGS= "${NVCCLDFLAGS}}#print immediatel
356 #${info "NVCCFLAGS= "${NVCCFLAGS}}#print immediatel
357 #${info "ARFLAGS= "${ARFLAGS}}#print immediatel
358 #${info "AR_OUT_FLAG= "${AR_OUT_FLAG}}#print immediatel
366 #let a minimum of one space
371 override CXXFLAGS:=$(strip ${CXXFLAGS})
372 override CXXLDFLAGS:=$(strip ${CXXLDFLAGS})
373 override NVCCLDFLAGS:=$(strip ${NVCCLDFLAGS})
374 override NVCCFLAGS:=$(strip ${NVCCFLAGS})
375 override ARFLAGS:=$(strip ${ARFLAGS})
376 #override AR_OUT_FLAG:=$(strip ${AR_OUT_FLAG})#pas pour gcc (enleve espace apres -r)
378 #override CXXFLAGS:=$(subst $(space),,$(CXXFLAGS))
387 #Adding " " around CXXFLAGS and CXXLDFLAGS, otherwise we can't specifie more than one options !
388 override CXXFLAGS:=" $(CXXFLAGS) "
389 override CXXLDFLAGS:=" $(CXXLDFLAGS) "
395 override TIME_START:=$(shell date +%T)
396 TIME_CURRENT=$(shell date +%T)
397 #TIME_DELTA:=$(shell echo $(TIME_CURRENT) - $(TIME_START) | bc) #marche pas sous win, a tester sous linux
399 ##############################################
401 ##############################################
403 TITLE:=$(TARGET_NAME)
409 $(TARGET) : $(OBJ_CU_FILES)
410 #@echo "$(NVCC) $(NVCCLDFLAGS) -Xlinker $(CXXLDFLAGS) $^ -o $(TARGET)"
412 @echo "[CBI] -> Linking to : "$(TARGET)
414 @echo "[CBI] -> Library Link :"
416 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call containing,-l,$(NVCCLDFLAGS)))
417 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call containing,-l,$(CXXLDFLAGS)))
419 @$(NVCC) $(NVCCLDFLAGS) -Xlinker $(CXXLDFLAGS) $^ -o $(TARGET)
421 @echo "=================================================================================="
422 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
423 @echo "[CBI] -> Location : "$(TARGET)
424 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
426 @echo "[CBI] -> Type : "$(TARGET_MODE)
427 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
428 @echo "[CBI] -> OS : "$(OS)
429 @echo "[CBI] -> User : "$(USER)
431 @echo "[CBI] -> Compilateur : ${CXX}) && ${NVCC}"
432 @echo "[CBI] -> Task : End Compiling-Linking !"
433 @echo "[CBI] -> Time : "${TIME_CURRENT}
434 @echo "=================================================================================="
438 # tabulation obligatoire before @
444 ${TARGET_LIB}:$(OBJ_CU_FILES)
445 @${AR} ${AR_OUT_FLAG}${TARGET_LIB} ${ARFLAGS} $^
447 @echo "=================================================================================="
448 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
449 @echo "[CBI] -> Location : "$(TARGET)
450 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
452 @echo "[CBI] -> Type : "$(TARGET_MODE)
453 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
454 @echo "[CBI] -> OS : "$(OS)
455 @echo "[CBI] -> User : "$(USER)
457 @echo "[CBI] -> Compilateur : ${CXX}) && ${NVCC}"
458 @echo "[CBI] -> Task : End Compiling-Archive !"
459 @echo "[CBI] -> Time : "${TIME_CURRENT}
460 @echo "=================================================================================="
467 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cpp
468 #@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"
470 @echo "[${TITLE}] -> g++ARM compiling .cpp : "$<
472 @echo "[${TITLE}] -> ${CXX} compiling .cpp : "$<
474 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -o $@ -c $<
483 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.c
484 #@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"
486 @echo "[${TITLE}] -> g++ARM compiling .cpp : "$<
488 @echo "[${TITLE}] -> ${CXX} compiling .cpp : "$<
490 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -o $@ -c $<
499 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cu
500 #@echo "@$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@"
501 @echo "[${TITLE}] -> ${NVCC} compiling .cu : "$<
502 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@
503 #cuda6: Il ne faut pas utiliser le flag �std=c++0x lorsque l�on compile un fichier .cu !
504 #cuda6.5: devrait etre ok
505 ##Adding "" "" around final CXXFLAGS, to keep one " " around final CXXFLAGS , in order to can specifie more than one options !
510 ##############################################
512 ##############################################
515 #all: echoing $(TARGET) deploy
516 all: echoing init $(TARGET) deploy cleanTempCudaFile
518 @echo "[CBI] -> "$(TITLE)" : End ALL!"
545 ifdef TARGET_DEPLOY_PATH
546 @$(shell cp $(TARGET) $(TARGET_DEPLOY))
548 @echo "[CBI] -> Deploying : "$(TARGET_DEPLOY)
556 run: printRuntimeInfo
558 @echo "[CBI] -> Running : "$(TARGET) $(ARGS)
560 @echo "------------------------------------------------------------------------"
566 runDeploy: printRuntimeInfo
568 @echo "[CBI] -> Running : "$(TARGET_DEPLOY) $(ARGS)
570 @echo "------------------------------------------------------------------------"
573 @$(TARGET_DEPLOY) $(ARGS)
576 runGl: printRuntimeInfo
577 #gl is a wrapper of virtualgl
578 #gl is necessary to run opengl remotely with turbovnc
581 @echo "[CBI] -> Running remote-gl : "$(TARGET) $(ARGS)
582 @gl $(TARGET) $(ARGS)
585 runGlDeploy: printRuntimeInfo
586 #gl is a wrapper of virtualgl
587 #gl is necessary to run opengl remotely with turbovnc
590 @echo "[CBI] -> Running remote-gl : "$(TARGET_DEPLOY) $(ARGS)
591 @gl $(TARGET_DEPLOY) $(ARGS)
594 .PHONY: printRuntimeInfo
596 @echo "[CBI] -> API BIN :"
597 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${API_BIN}}
599 @echo "[CBI] -> ARGS :"
600 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${ARGS}}
606 .PHONY: dependenciesLinux
607 dependenciesLinux: printRuntimeInfo
609 @echo "[${TARGET}] depends from :"
611 @ldd -v ${TARGET_DEPLOY}
617 .PHONY: contentsLinux
620 ifeq (${TARGET_MODE},STATIC_LIB)
621 @echo "[${TARGET_NAME}.${EXTENSION_LIB}] export :"
623 @ar -t ${TARGET_DEPLOY}
624 else ifeq (${TARGET_MODE},SHARED_LIB)
625 @echo "[${TARGET_NAME}.${EXTENSION_DLL}] export:"
629 @nm -D --defined-only --extern--only ${TARGET_DEPLOY}
631 @echo "[CBI] -> readelf"
633 @readelf -s ${TARGET_DEPLOY}
643 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
644 ifeq (,$(findstring $(TARGET_BIN),$(wildcard $(TARGET_BIN) )))
645 @$(shell mkdir -p $(TARGET_BIN))
646 @echo "[CBI] -> Create folder : "$(TARGET_BIN)
648 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
649 ifeq (,$(findstring $(TARGET_OBJ),$(wildcard $(TARGET_OBJ) )))
650 @$(shell mkdir -p $(TARGET_OBJ))
651 @echo "[CBI] -> Create folder : "$(TARGET_OBJ)
653 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
654 ifeq (,$(findstring $(TARGET_CUBIN),$(wildcard $(TARGET_CUBIN) )))
655 @$(shell mkdir -p $(TARGET_CUBIN))
656 @echo "[CBI] -> Create folder : "$(TARGET_CUBIN)
658 ifeq (,$(findstring $(TARGET_DEPLOY_PATH_BIN),$(wildcard $(TARGET_DEPLOY_PATH_BIN) )))
659 @$(shell mkdir -p $(TARGET_DEPLOY_PATH_BIN))
660 @echo "[CBI] -> Create folder : "$(TARGET_DEPLOY_PATH_BIN)
669 include ${ROOT_MAKEFILE_PRIVATE_DOC}/doxyCPP.mk
677 @rm -f $(TARGET_OBJ)/*.o
678 @rm -f $(TARGET_OBJ)/*.obj
679 @rm -f $(TARGET_BIN)/*.exp
680 @rm -f $(TARGET_BIN)/*.lib
682 @rm -f $(TARGET_DEPLOY)
683 @rm -f $(TARGET_CUBIN)/*
684 @rm -f $(TARGET_DOC_DEPLOY_FILE)
685 @rm -f -r $(TARGET_DOC_PATH)
687 @echo "=================================================================================="
688 @echo "[CBI] -> Target : "$(TARGET_NAME)
689 @echo "[CBI] -> Task : DELETE"
691 @echo "[CBI] -> Delete .obj : "$(TARGET_OBJ)
692 @echo "[CBI] -> Delete .bin : "$(TARGET_BIN)
693 @echo "[CBI] -> Delete .cubin : "$(TARGET_CUBIN)
694 @echo "[CBI] -> Delete doc : "$(TARGET_DOC_PATH)
696 @echo "[CBI] -> Delete deploy : "$(TARGET_DEPLOY)
697 @echo "[CBI] -> Delete deploy doc : "$(TARGET_DOC_DEPLOY_FILE)
698 @echo "=================================================================================="
701 .PHONY: cleanTempCudaFile
703 @rm -f ${TARGET_CUBIN}/*.c
704 @rm -f ${TARGET_CUBIN}/*.cpp
705 @rm -f ${TARGET_CUBIN}/*.gpu
706 @rm -f ${TARGET_CUBIN}/*.i
707 @rm -f ${TARGET_CUBIN}/*.ii
708 @rm -f ${TARGET_CUBIN}/*.hash
709 @rm -f ${TARGET_CUBIN}/*.ptx
710 #@echo "[CBI] -> Cleaning : Cuda temp files, excepted .cubin for JCuda"
713 #rm -r #serait recursif (dangereux!!)
714 #rm -f #pas d'erreur si file existe pas!
723 @echo "=================================================================================="
724 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
726 @echo "[CBI] -> Build : "$(TARGET)
727 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
729 @echo "[CBI] -> Type : "$(TARGET_MODE)
730 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
731 @echo "[CBI] -> OS : "$(OS)
732 @echo "[CBI] -> User : "$(USER)
734 @echo "[CBI] -> Task : Compiling-Linking !"
735 #@echo "[CBI]->Time : "${TIME_CURRENT}
736 @echo "=================================================================================="
738 @echo "[CBI] -> SRC AUX (Recursif) :"
741 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(SRC_AUX)
743 @echo "[CBI] -> CXXFLAGS (Partial) :"
746 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-I,$(CXXFLAGS)) #sort ko why
748 @echo "[CBI] -> CXXLDFLAGS (Partial) :"
751 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-L, $(call not-containing,-l,$(CXXLDFLAGS))) #sort ko, why?
753 @echo "[CBI] -> NVCCFLAGS (Partial) :"
756 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call not-containing,-I,$(NVCCFLAGS)))
758 @echo "[CBI] -> NVCCLDFLAGS (Partial) :"
760 #@echo $(NVCCLDFLAGS)
761 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call not-containing,-L, $(call not-containing,-l,$(NVCCLDFLAGS))))
763 @echo "[CBI] -> INC_PATH (auto detect):"
764 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(INC_PATH))
767 @echo "[CBI] -> LIB_PATH (auto detect):"
768 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(LIB_PATH))
771 ##############################################
773 ##############################################
775 # target : dependencies
777 # $@ = name of the target
778 # $^ = all dependencie of a target
779 # $< =first (unique dependency of a target) (rm, compilation,linking)
781 # @ = diminue verbosit� commande
783 # Attention : tabulation obligatoire avant commande dans rule!!
785 # http://www.gnu.org/software/make/manual/
787 #############################################
789 #############################################
792 endif#__MAKE_CUDA_GCC_MK__