Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BUILDER / makefile / private / cuda / makeCudaVisual.mk
1 # Version : 0.0.8
2 # Date : 01.08.2014
3 # Author : Cedric.Bilat@he-arc.ch
4 #
5 # See : OptionCompilateur.txt
6 #
7 # Hyp : Application that must be in path
8 # nvcc
9 # mingw32-make
10 # cl
11 #
12 # : Environement Variables must be set
13 #
14 # ARCHI_32_64 : 32 or 64
15
16 ifndef __MAKE_VISUAL_CUDA_MK__
17 __MAKE_VISUAL_CUDA_MK__=true
18
19
20 ##############################################
21 # Variables #
22 ##############################################
23
24 ########
25 # Path #
26 ########
27
28 SRC_ROOT :=src
29 TARGET_OBJ:=${TARGET_PATH}/obj
30 TARGET_BIN:= ${TARGET_PATH}/bin
31 TARGET_CUBIN:=${TARGET_PATH}/cubin
32
33 #synonime ameliorer
34 TARGET_BIN_PATH:=${TARGET_BIN}
35 TARGET_OBJ_PATH:=${TARGET_OBJ}
36
37 #TARGET_DEPLOY_PATH_BIN=${TARGET_DEPLOY_PATH}/bin
38 TARGET_DEPLOY_PATH_DOC=${TARGET_DEPLOY_PATH}/doc
39
40 ########
41 # cpp #
42 ########
43
44 CXX=cl
45
46 ########
47 # Cuda #
48 ########
49
50 NVCC := nvcc
51 PTXAS_FLAGS := -fastimul
52 OBJ_EXTENSION:=obj
53 OPTION_SEPARATOR:=-#attention, end without space
54 LINK_FLAG_DLL:=-shared#attention,end without space
55
56 ########
57 #32/64 #
58 ########
59
60 #plus necessaire
61 #ifeq ($(ARCHI_32_64),64)
62 # override NVCCFLAGS+= -m64#default -m64 #dans public
63 #override CXXLDFLAGS+= /MACHINE:X64 #Deprecated! #En plus posait probl�me de guillement (� la d�finition de CXXLDFLAGS)
64 #endif
65
66 TARGET_NAME:=$(TARGET_NAME)_$(ARCHI_32_64)
67
68
69 #############
70 # Extension #
71 #############
72
73 EXTENSION_OBJ:=obj#
74 EXTENSION_LIB:=lib#
75 EXTENSION_DLL:=dll#
76 EXTENSION_EXE:=exe#
77 # Note enstension sans le .
78
79 ##########
80 # TARGET #
81 ##########
82
83 LIB_PREFIXE:=#rien
84
85 TARGET_NAME_EXE:=$(TARGET_NAME).${EXTENSION_EXE}
86 TARGET_NAME_DLL:=${LIB_PREFIXE}$(TARGET_NAME).$(EXTENSION_DLL)
87 TARGET_NAME_LIB:=${LIB_PREFIXE}$(TARGET_NAME).${EXTENSION_LIB}
88
89 TARGET_EXE:=${TARGET_BIN_PATH}/$(TARGET_NAME_EXE)
90 TARGET_DLL:=${TARGET_BIN_PATH}/$(TARGET_NAME_DLL)
91 TARGET_LIB:=${TARGET_BIN_PATH}/$(TARGET_NAME_LIB)
92 #TARGET_OBJ:=$(addprefix $(TARGET_OBJ_PATH)/,$(notdir $(OBJ_FILES)))
93
94 #Selection de la target en fonction TARGET_MODE
95 ifeq ($(TARGET_MODE),EXE)
96 TARGET:=${TARGET_EXE}
97 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_EXE)
98 endif
99
100 ifeq ($(TARGET_MODE),SHARED_LIB)
101 TARGET:=${TARGET_DLL}
102 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_DLL)
103
104 override NVCCLDFLAGS += $(LINK_FLAG_DLL)
105 endif
106
107 ifeq ($(TARGET_MODE),STATIC_LIB)
108 TARGET:=${TARGET_LIB}
109 TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_LIB)
110 endif
111
112 ###########
113 #Extension#
114 ###########
115
116 #ifeq ($(TARGET_MODE),SHARED_LIB)
117 # override NVCCLDFLAGS+= $(LINK_FLAG_DLL)
118 # TARGET_NAME_FULL=$(TARGET_NAME).dll
119 #endif
120
121 #ifeq ($(TARGET_MODE),EXE)
122 # TARGET_NAME_FULL=$(TARGET_NAME).exe
123 #endif
124
125 #TARGET:=$(TARGET_BIN)/$(TARGET_NAME_FULL)
126 #TARGET_DEPLOY:=$(TARGET_DEPLOY_PATH_BIN)/$(TARGET_NAME_FULL)
127
128 ##########
129 #ARCHIVEUR#
130 ###########
131
132 AR:=lib
133 ARFLAGS=# pas= car valeur vaut rv avant sous windows ???
134 AR_OUT_FLAG:=/OUT:#Sans espace
135
136 ############
137 # Params #
138 ############
139
140 #ameliorer deja avant mais sans .
141 EXTENSION_LIB:=.lib
142 EXTENSION_DLL:=.dll
143 #LIB_PREFIX:=#pas de prefixe
144
145 ############
146 #Set files #
147 ############
148
149 #Hyp : Shell sh
150 SRC_PATH:=$(shell find $(SRC_ROOT) -type d)
151 ifdef SRC_AUX
152 SRC_PATH_AUX:=$(shell find $(SRC_AUX) -type d)
153 else
154 SRC_PATH_AUX:=
155 endif
156
157 SRC_PATH_ALL:=$(SRC_PATH) $(SRC_PATH_AUX)
158
159 SRC_CPP_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cpp))
160 SRC_C_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.c))
161 SRC_CU_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.cu))
162 SRC_LIB_FILES := $(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/*.lib)) $(ADD_LIBRARY_FILES)
163
164 #################
165 # PREPARE FLAGS #
166 #################
167
168 #ifneq (, $(findstring openmp,$(CXXFLAGS)))#findstring return vide si openmp pas trouver!
169 # ADD_LIBRARY_FILES+=libiomp5md.lib
170
171 #Delete extension .lib
172 SRC_LIB_FILES:= $(SRC_LIB_FILES:$(EXTENSION_LIB)=)
173
174 SRC_LIB_FILES_l:= $(addprefix $(OPTION_SEPARATOR)l,$(notdir $(SRC_LIB_FILES)))
175 #ALL_LIB_FILES_l:= $(CUDA_LIB_FILES_l) $(CULA_LIB_FILES_l) $(SRC_LIB_FILES_l)
176 ALL_LIB_FILES_l:= $(SRC_LIB_FILES_l)
177
178 LIB_PATH:=$(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.lib)))#dir extract directory of file, $(wildcard $(dir)/*.h)=> take file.h if exist
179 override LIB_PATH:=$(call uniq,${LIB_PATH})
180 #SRC_LIB_L:=$(addprefix $(OPTION_SEPARATOR)L,$(SRC_PATH_ALL))#old
181 SRC_LIB_L:=$(addprefix $(OPTION_SEPARATOR)L,$(LIB_PATH))
182
183 #ALL_LIB_L:=$(SRC_LIB_L) $(CUDA_LIB_L) $(CULA_LIB_L)
184 ALL_LIB_L:=$(SRC_LIB_L)
185
186
187 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
188 override INC_PATH:=$(call uniq,${INC_PATH})
189 #${info "INC_PATH= "${INC_PATH}}#print immediately
190 #SRC_HEADER_I := $(addprefix $(OPTION_SEPARATOR)I,$(SRC_PATH_ALL))#old
191 SRC_HEADER_I := $(addprefix $(OPTION_SEPARATOR)I,$(INC_PATH))
192 #ALL_HEADERS_I:= $(SRC_HEADER_I)#old
193
194 OBJ_FILES_CPP:= $(SRC_CPP_FILES:.cpp=.$(OBJ_EXTENSION))
195 OBJ_FILES_C:= $(SRC_C_FILES:.c=.$(OBJ_EXTENSION))
196 OBJ_FILES:= ${OBJ_FILES_CPP} ${OBJ_FILES_C}
197 OBJ_FILES:= $(addprefix $(TARGET_OBJ)/,$(notdir $(OBJ_FILES)))
198
199 CU_FILES := $(SRC_CU_FILES:.cu=.$(OBJ_EXTENSION))
200 CU_FILES := $(addprefix $(TARGET_OBJ)/,$(notdir $(CU_FILES)))
201
202 OBJ_CU_FILES:=$(OBJ_FILES) $(CU_FILES)
203
204 #Injection variable in .cpp code (VAR1 VAR2 -> -DVAR1 -DVAR2)
205 CODE_DEFINE_VARIABLES_D:= $(addprefix -D,$(CODE_DEFINE_VARIABLES))
206
207 #override NVCCFLAGS += $(ALL_HEADERS_I)#old
208 override NVCCFLAGS += $(SRC_HEADER_I)
209 override NVCCLDFLAGS += $(ALL_LIB_L) $(ALL_LIB_FILES_l)
210 override CXXFLAGS += $(CODE_DEFINE_VARIABLES_D)
211
212 ifneq (, $(findstring /MD,$(CXXFLAGS)))#findstring return vide si /MD pas trouver!
213 override CXXLDFLAGS+= /NODEFAULTLIB:LIBCMT
214 endif
215
216 #Adding " " around CXXFLAGS and CXXLDFLAGS, otherwise we can't specifie more than one options !
217 #override CXXFLAGS:=" $(CXXFLAGS) "
218 #override CXXLDFLAGS:=" $(CXXLDFLAGS) "
219 #plus tard apres optimisation
220
221 ##########
222 # securite #
223 ##########
224
225 #Directory search path(use implicit in rules)
226 VPATH := $(SRC_PATH_ALL)
227
228 ########
229 #Optimisation #
230 ########
231
232 include ${ROOT_MAKEFILE_PRIVATE_CUDA}/optimisation.mk
233
234 ##########
235 # exclude #
236 ##########
237
238 override NVCCFLAGS:=$(filter-out $(NVCCFLAGS_EXCLUDE),$(NVCCFLAGS))
239 override CXXFLAGS:=$(filter-out $(CXXFLAGS_EXCLUDE),$(CXXFLAGS))
240
241 #https://www.gnu.org/software/make/manual/make.html#Functions
242
243 ##########
244 # runtime #
245 ##########
246
247 space:= #ne suufit pas ajoutre espaca, mais += le fait!
248 space+=#
249
250 ifeq (${OS},Win)
251 separateurPath:=;#
252 else
253 separateurPath:=:#
254 endif
255
256 API_BIN_FORMATTER:=$(subst ${space},${separateurPath},${API_BIN})
257
258 ifeq (${OS},Win)
259 override PATH:=${PATH}${separateurPath}${API_BIN_FORMATTER}#
260 export ${PATH}#
261 else
262 override LD_LIBRARY_PATH:=${LD_LIBRARY_PATH}${separateurPath}${API_BIN_FORMATTER}#
263 export ${LD_LIBRARY_PATH}#fixme semble pas marcher
264 endif
265
266 ##########
267 # unicitye #
268 ##########
269
270 UNICITY=true
271
272 ifdef UNICITY
273
274 override CXXFLAGS:=$(call uniq,${CXXFLAGS})
275 override CXXLDFLAGS:=$(call uniq,${CXXLDFLAGS})
276 #override NVCCFLAGS:=$(call uniq,${NVCCFLAGS}) pas possible car enleve -gencode
277 override NVCCLDFLAGS:=$(call uniq,${NVCCLDFLAGS})
278 override ARFLAGS:=$(call uniq,${ARFLAGS})
279 #override AR_OUT_FLAG:=$(call uniq,${AR_OUT_FLAG})#met espace apres /out, pas pour visual/intel
280
281 #debug
282 #${info "CXXFLAGS= "${CXXFLAGS}}#print immediately
283 #${info "CXXLDFLAGS"= ${CXXLDFLAGS}}#print immediatel
284 #${info "NVCCFLAGS= "${NVCCFLAGS}}#print immediatel
285 #${info "NVCCLDFLAGS= "${NVCCLDFLAGS}}#print immediatel
286 #${info "ARFLAGS= "${ARFLAGS}}#print immediatel
287 #${info "AR_OUT_FLAG= "${AR_OUT_FLAG}}#print immediatel
288
289 endif#UNICITY
290
291 ##########
292 # remove space #
293 ##########
294
295 #let a minimum of one space
296 REMOVE_SPACE=true
297
298 ifdef REMOVE_SPACE
299
300 override CXXFLAGS:=$(strip ${CXXFLAGS})
301 override CXXLDFLAGS:=$(strip ${CXXLDFLAGS})
302 override NVCCLDFLAGS:=$(strip ${NVCCLDFLAGS})
303 override NVCCFLAGS:=$(strip ${NVCCFLAGS})
304 override ARFLAGS:=$(strip ${ARFLAGS})
305 #override AR_OUT_FLAG:=$(strip ${AR_OUT_FLAG}) #pas pour mingw car enleve espace apres -r
306
307 #override CXXFLAGS:=$(subst $(space),,$(CXXFLAGS))
308
309 endif#REMOVE_SPACE
310
311 ##########
312 # bug #
313 ##########
314
315 #Adding " " around CXXFLAGS and CXXLDFLAGS, otherwise we can't specifie more than one options !
316 override CXXFLAGS:=" $(CXXFLAGS) "
317 override CXXLDFLAGS:=" $(CXXLDFLAGS) "
318
319 ###########
320 # chrono #
321 ###########
322
323 override TIME_START:=$(shell date +%T)
324 TIME_CURRENT=$(shell date +%T)
325 #TIME_DELTA:=$(shell echo $(TIME_CURRENT) - $(TIME_START) | bc) #marche pas
326
327 ######################
328 # Rules #
329 ######################
330
331 TITLE:=$(TARGET_NAME)
332
333 ################
334 #.o->.exe,.dll #
335 ################
336
337 $(TARGET) : $(OBJ_CU_FILES)
338 #@echo "$(NVCC) $(NVCCLDFLAGS) -Xlinker $(CXXLDFLAGS) $^ -o $(TARGET)"
339 @echo ""
340 @echo "[CBI] -> Linking to : "$(TARGET)
341 @echo ""
342 @echo "[CBI] -> Library Link :"
343 @echo "[CBI] ->"
344 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call containing,-l,$(NVCCLDFLAGS)))
345 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call containing,-l,$(CXXLDFLAGS)))
346 @echo ""
347 @$(NVCC) $(NVCCLDFLAGS) -Xlinker $(CXXLDFLAGS) $^ -o $(TARGET)
348 @echo ""
349 @echo "=================================================================================="
350 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
351 @echo "[CBI] -> Location : "$(TARGET)
352 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
353 @echo "[CBI] ->"
354 @echo "[CBI] -> Type : "$(TARGET_MODE)
355 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
356 @echo "[CBI] -> OS : "$(OS)
357 @echo "[CBI] -> User : "$(USER)
358 @echo "[CBI] ->"
359 @echo "[CBI] -> Compilateur : VISUAL (${CXX}) && NVIDIA (${NVCC})"
360 @echo "[CBI] -> Task : End Compiling-Linking !"
361 @echo "[CBI] -> Time : "${TIME_CURRENT}
362 @echo "=================================================================================="
363 @echo ""
364
365 # -o =outfile
366 # tabulation obligatoire before @
367
368 ################
369 # .o->.lib #
370 ################
371
372 ${TARGET_LIB}:$(OBJ_CU_FILES)
373 #@echo "${AR} ${AR_OUT_FLAG}${TARGET_LIB} ${ARFLAGS} $^"
374 @echo ""
375 @${AR} ${AR_OUT_FLAG}${TARGET_LIB} ${ARFLAGS} $^
376 @echo ""
377 @echo "=================================================================================="
378 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
379 @echo "[CBI] -> Location : "$(TARGET)
380 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
381 @echo "[CBI] ->"
382 @echo "[CBI] -> Type : "$(TARGET_MODE)
383 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
384 @echo "[CBI] -> OS : "$(OS)
385 @echo "[CBI] -> User : "$(USER)
386 @echo "[CBI] ->"
387 @echo "[CBI] -> Compilateur : VISUAL (${CXX}) && NVIDIA (${NVCC})"
388 @echo "[CBI] -> Task : End Compiling-Archive !"
389 @echo "[CBI] -> Time : "${TIME_CURRENT}
390 @echo "=================================================================================="
391 @echo ""
392
393 ################
394 # .cpp->.o #
395 ################
396
397 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cpp
398 #@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"
399 #@echo "[${TITLE}] -> ${CXX} compiling .cpp : "$<
400 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) $@ -c $<
401
402 # -c = compilation
403 # -o =outfile
404
405 ################
406 # .c->.o #
407 ################
408
409 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.c
410 #@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) -c $< -o $@"
411 #@echo "[${TITLE}] -> ${CXX} compiling .c : "$<
412 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler $(CXXFLAGS) $@ -c $<
413
414 # -c = compilation
415 # -o =outfile
416
417 ################
418 # .cu->.o #
419 ################
420
421 $(TARGET_OBJ)/%.$(OBJ_EXTENSION) :%.cu
422 #@echo "$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@"
423 #@echo "[${TITLE}] -> ${NVCC} compiling .cu : "$<
424 @$(NVCC) $(NVCCFLAGS) -odir $(TARGET_OBJ) -Xcompiler ""$(filter-out -std=c++0x,$(CXXFLAGS))"" -c $< -o $@
425 #cuda6: Il ne faut pas utiliser le flag �std=c++0x lorsque l�on compile un fichier .cu !
426 #cuda6.5: devrait etre ok
427 ##Adding "" "" around final CXXFLAGS, to keep one " " around final CXXFLAGS , in order to can specifie more than one options !
428 #$(filter-out pas necesaire with visual&intel windows
429
430 # -c = compilation
431 # -o =outfile
432
433 ##############################################
434 # TARGET #
435 ##############################################
436
437 #all: version help
438 #all: echoing $(TARGET) deploy
439 all: echoing init $(TARGET) deploy cleanTempCudaFile
440 @echo ""
441 @echo "[CBI] -> "$(TITLE)" : End ALL!"
442
443 .PHONY: version
444 version:
445 @echo ""
446 @nvcc --version
447 @echo ""
448 @cl
449
450 .PHONY: help
451 help:
452 @echo ""
453 @nvcc --help
454
455 ##########
456 # deploy #
457 ##########
458
459 .PHONY: deploy
460 deploy:
461 ifdef TARGET_DEPLOY_PATH
462 @$(shell cp $(TARGET) $(TARGET_DEPLOY))
463 @echo ""
464 @echo "[CBI] -> Deploying : "$(TARGET_DEPLOY)
465 endif
466
467 ##########
468 # run #
469 ##########
470
471 .PHONY: run
472 run: printRuntimeInfo
473 @echo ""
474 @echo "[CBI] -> Running : "$(TARGET) $(ARGS)
475 @echo ""
476 @echo "------------------------------------------------------------------------"
477 @echo ""
478 @echo ""
479 @$(TARGET) $(ARGS)
480
481 .PHONY: runDeploy
482 runDeploy: printRuntimeInfo
483 @echo ""
484 @echo "[CBI] -> Running : "$(TARGET_DEPLOY) $(ARGS)
485 @echo ""
486 @echo "------------------------------------------------------------------------"
487 @echo ""
488 @echo ""
489 @$(TARGET_DEPLOY) $(ARGS)
490
491
492 .PHONY: printRuntimeInfo
493 printRuntimeInfo:
494 @echo ""
495 @echo "[CBI] -> API BIN :"
496 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${API_BIN}}
497 @echo ""
498 @echo "[CBI] -> ARGS :"
499 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh ${sort ${ARGS}}
500
501 ##########
502 # depends #
503 ##########
504
505 .PHONY: dependenciesWin
506 dependenciesWin: printRuntimeInfo
507 @echo ""
508 @echo "[CBI] -> Dependencies .dll : "${TARGET}
509 @${DEPENDS_EXE} ${TARGET_DEPLOY}
510
511 ##########
512 # contents #
513 ##########
514
515 .PHONY: contententsWin
516 contententsWin: printRuntimeInfo
517 @echo ""
518 @echo "[CBI] -> Dependencies .dll : "${TARGET_NAME_EXE}
519 @${DEPENDS_EXE} ${TARGET_DEPLOY}
520
521 ##########
522 # init #
523 ##########
524
525 .PHONY: init
526 init:
527 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
528 ifeq (,$(findstring $(TARGET_BIN),$(wildcard $(TARGET_BIN) )))
529 @$(shell mkdir -p $(TARGET_BIN))
530 @echo "[CBI] -> Create folder : "$(TARGET_BIN)
531 endif
532 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
533 ifeq (,$(findstring $(TARGET_OBJ),$(wildcard $(TARGET_OBJ) )))
534 @$(shell mkdir -p $(TARGET_OBJ))
535 @echo "[CBI] -> Create folder : "$(TARGET_OBJ)
536 endif
537 #create folder heirerarchy TARGET_BIN_PATH iff don't exist
538 ifeq (,$(findstring $(TARGET_CUBIN),$(wildcard $(TARGET_CUBIN) )))
539 @$(shell mkdir -p $(TARGET_CUBIN))
540 @echo "[CBI] -> Create folder : "$(TARGET_CUBIN)
541 endif
542 ifeq (,$(findstring $(TARGET_DEPLOY_PATH_BIN),$(wildcard $(TARGET_DEPLOY_PATH_BIN) )))
543 @$(shell mkdir -p $(TARGET_DEPLOY_PATH_BIN))
544 @echo "[CBI] -> Create folder : "$(TARGET_DEPLOY_PATH_BIN)
545 @echo ""
546 endif
547 @echo ""
548
549 ##########
550 # doc #
551 ##########
552
553 include ${ROOT_MAKEFILE_PRIVATE_DOC}/doxyCPP.mk
554
555
556 ##########
557 # clean #
558 ##########
559
560 .PHONY: clean
561 clean:
562 @rm -f $(TARGET_OBJ)/*.o
563 @rm -f $(TARGET_OBJ)/*.obj
564 @rm -f $(TARGET_BIN)/*.exp
565 @rm -f $(TARGET_BIN)/*.lib
566 @rm -f $(TARGET)
567 @rm -f $(TARGET_DEPLOY)
568 @rm -f $(TARGET_CUBIN)/*
569 @rm -f $(TARGET_DOC_DEPLOY_FILE)
570 @rm -f -r $(TARGET_DOC_PATH)
571 @echo ""
572 @echo "=================================================================================="
573 @echo "[CBI] -> Target : "$(TARGET_NAME)
574 @echo "[CBI] -> Task : DELETE"
575 @echo "[CBI]"
576 @echo "[CBI] -> Delete .obj : "$(TARGET_OBJ)
577 @echo "[CBI] -> Delete .bin : "$(TARGET_BIN)
578 @echo "[CBI] -> Delete .cubin : "$(TARGET_CUBIN)
579 @echo "[CBI] -> Delete doc : "$(TARGET_DOC_PATH)
580 @echo "[CBI]"
581 @echo "[CBI] -> Delete deploy : "$(TARGET_DEPLOY)
582 @echo "[CBI] -> Delete deploy doc : "$(TARGET_DOC_DEPLOY_FILE)
583 @echo "=================================================================================="
584 @echo ""
585
586 .PHONY: cleanTempCudaFile
587 cleanTempCudaFile:
588 @rm -f ${TARGET_CUBIN}/*.c
589 @rm -f ${TARGET_CUBIN}/*.cpp
590 @rm -f ${TARGET_CUBIN}/*.gpu
591 @rm -f ${TARGET_CUBIN}/*.i
592 @rm -f ${TARGET_CUBIN}/*.ii
593 @rm -f ${TARGET_CUBIN}/*.hash
594 @rm -f ${TARGET_CUBIN}/*.ptx
595 #@echo "[CBI] -> Cleaning : Cuda temp files, excepted .cubin for JCuda"
596 #@echo ""
597
598 #rm -r #serait recursif (dangereux!!)
599 #rm -f #pas d'erreur si file existe pas!
600
601 ##########
602 # echo #
603 ##########
604
605 .PHONY: echoing
606 echoing:
607 @echo ""
608 @echo "=================================================================================="
609 @echo "[CBI] -> Target Name : "$(TARGET_NAME)
610 @echo "[CBI] ->"
611 @echo "[CBI] -> Build : "$(TARGET)
612 @echo "[CBI] -> Deploy : "$(TARGET_DEPLOY_PATH_BIN)
613 @echo "[CBI] ->"
614 @echo "[CBI] -> Type : "$(TARGET_MODE)
615 @echo "[CBI] -> Arch : "$(ARCHI_32_64)
616 @echo "[CBI] -> OS : "$(OS)
617 @echo "[CBI] -> User : "$(USER)
618 @echo "[CBI] ->"
619 @echo "[CBI] -> Task : Compiling-Linking !"
620 #@echo "[CBI]->Time : "${TIME_CURRENT}
621 @echo "=================================================================================="
622 @echo ""
623 @echo "[CBI] -> SRC AUX (Recursif) :"
624 @echo "[CBI] ->"
625 #@echo $(SRC_AUX)
626 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(SRC_AUX)
627 @echo ""
628 @echo "[CBI] -> CXXFLAGS (Partial) :"
629 @echo "[CBI] ->"
630 #@echo $(CXXFLAGS)
631 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-I,$(CXXFLAGS)) #sort kp, why
632 @echo ""
633 @echo "[CBI] -> CXXLDFLAGS (Partial) :"
634 @echo "[CBI] ->"
635 #@echo $(CXXLDFLAGS)
636 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(call not-containing,-L, $(call not-containing,-l,$(CXXLDFLAGS))) #sort ko why?
637 @echo ""
638 @echo "[CBI] -> NVCCFLAGS (Partial) :"
639 @echo "[CBI] ->"
640 #@echo $(NVCCFLAGS)
641 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call not-containing,-I,$(NVCCFLAGS)))
642 @echo ""
643 @echo "[CBI] -> NVCCLDFLAGS (Partial) :"
644 @echo "[CBI] ->"
645 #@echo $(NVCCLDFLAGS)
646 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(call not-containing,-L, $(call not-containing,-l,$(NVCCLDFLAGS))))
647 @echo ""
648 @echo "[CBI] -> INC_PATH (auto detect):"
649 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(INC_PATH))
650 @echo ""
651 @echo ""
652 @echo "[CBI] -> LIB_PATH (auto detect):"
653 @${ROOT_MAKEFILE_PRIVATE_COMMON_SCRIPT}/print.sh $(sort $(LIB_PATH))
654 @echo ""
655
656 ##############################################
657 # HELP #
658 ##############################################
659
660 # target : dependencies
661 #
662 # $@ = name of the target
663 # $^ = all dependencie of a target
664 # $< =first (unique dependency of a target) (rm, compilation,linking)
665 #
666 # @ = diminue verbosit� commande
667 #
668 # Attention : tabulation obligatoire avant commande dans rule!!
669 #
670 # http://www.gnu.org/software/make/manual/
671
672 #############################################
673 # END #
674 #############################################
675
676 endif#__MAKE_VISUAL_CUDA_MK__