Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BUILDER / makefile / private / cpp / flags_GccIntel.mk
1 # Version : 0.0.3
2 # Date : 12.02.2014
3 # Author : Cedric.Bilat@he-arc.ch
4 #
5 # See : OptionCompilateur.txt
6 # MakeFileNotice.txt
7 #
8 # Hyp : Application that must be in path
9
10
11 ifndef __FLAG_GCC_INTEL_MK__
12 __FLAG_GCC_INTEL_MK__=true
13
14 ######################
15 # Init #
16 ######################
17
18 #SHELL=/bin/bash
19
20 machine:=${shell uname -m}
21 ifeq (${machine},x86_64)
22 ARCHI_32_64:=64
23 else
24 ARCHI_32_64:=32
25 endif
26
27 ######################
28 # Variables #
29 ######################
30
31 ifeq ($(COMPILATEUR),INTEL)
32 #Compilateur ,Archiveur (static lib)
33 CXX:=icpc
34 AR:=xiar
35 else
36 #Compilateur ,Archiveur (static lib)
37
38 ifneq ($(ARCH),arm)
39 CXX:=g++
40 AR:=ar
41 else
42 CXX:=g++ARM
43 AR:=arARM
44 endif
45
46 endif
47
48 #############
49 # Extension #
50 #############
51
52 EXTENSION_OBJ:=o#
53 EXTENSION_LIB:=a#
54 EXTENSION_DLL:=so#
55 EXTENSION_EXE:=run#
56 # Note enstension sans le .
57
58 #############
59 #Compilateur#
60 #############
61
62 SYS_LIBRARY_FILES:=#minimum rien
63 OPTION_SEPARATOR:=-#
64 LIB_FLAG_SEPARATOR:=l#
65 LIB_PATH_SEPARATOR:=L#
66 HEADER_OPTION:=I#
67 OUT_FILE_COMPILE:=-o #attention end with space!
68 OUT_FILE_LINK:=-o #attention end with space!
69 LINK_TAG:=#rien
70 LINK_FLAG_DLL:=-shared #with espace !
71
72 LIB_PREFIXE:=lib#
73
74 VERSION_CXX:=$(CXX) --version
75 CXX_HELP:=$(CXX) --help
76
77 ##########
78 #ARCHIVEUR#
79 ###########
80
81 AR_OUT_FLAG:=-r #with espace important !
82
83 #############
84 # SET FILES #
85 #############
86
87 # Input :
88 # SRC_PATH_ALL
89 # Output :
90 # All files libXXX.a, libXXX.so and XXX.so, without XXX.a !
91 # Objectifs :
92 # Les .a prefix� par lib (libXXX.a) seront donnee a GCC sous la forme -lXXX)
93 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a
94 SRC_A_FILES_STANDART:=$(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/$(LIB_PREFIXE)*.$(EXTENSION_LIB)))
95 SRC_A_FILES_STANDART+=$(SRC_SO_FILES)
96
97 # Input :
98 # SRC_PATH_ALL
99 # Output :
100 # All files XXX.a without libXXX.a, libXXX.so and XXX.so !
101 # Objectifs :
102 # Les .a prefix� par lib (libXXX.a) seront donnee a GCC sous la forme -lXXX
103 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a avec la path complet (par exemple ../libs/YYY.a)
104 SRC_A_FILES_NOT_STANDART:=$(foreach dir,$(SRC_PATH_ALL),$(filter-out $(dir)/$(LIB_PREFIXE)%.$(EXTENSION_LIB),$(wildcard $(dir)/*.$(EXTENSION_LIB))))
105
106 #################
107 # PREPARE FLAGS #
108 #################
109
110 #plus ici dans api
111 #Ajoute automatiquement gomp(gcc) or iomp5(Intel) si on use OpenMP
112 #ifneq (, $(findstring openmp,$(CXXFLAGS)))#findstring return vide si openmp pas trouver!
113 # ifeq ($(COMPILATEUR),INTEL)
114 # ADD_LIBRARY_FILES+=iomp5
115 # else
116 # ADD_LIBRARY_FILES+=gomp
117 # endif
118 #endif
119
120 #only fileName (./libs/libXXX.a ./libs/YYY.so -> lixXXX.a YYY.so)
121 LIB_FLAG:=$(notdir $(SRC_A_FILES_STANDART))
122
123 #removing prefix lib (libXXX.a libYYY.a libZZZ.so -> XXX.a YYY.a ZZZ.so)
124 LIB_FLAG:=$(subst $(LIB_PREFIXE),,$(LIB_FLAG))#remplace lib par rien
125
126 #Delete extension .a (XXX.a YYY.a -> XXX YYY)
127 LIB_FLAG:=$(LIB_FLAG:.$(EXTENSION_LIB)=)
128
129 #Delete extension .so (AAA.so BBB.so -> AAA BBB)
130 LIB_FLAG:=$(LIB_FLAG:.$(EXTENSION_DLL)=)
131
132 #ADDING custom LIB and System LIB
133 LIB_FLAG+=$(ADD_LIBRARY_FILES) $(SYS_LIBRARY_FILES)
134
135 # Input :
136 # list lib to delete example (AAA ZZZ)
137 #
138 # before : LIB_FLAG (XXX YYY ZZZ)
139 # after : LIB_FLAG (XXX YYY) without ZZZ
140 LIB_FLAG:=$(filter-out $(EXCLUDE_LIBRARY_FILES),$(LIB_FLAG))
141
142 #Adding Lib FLAG separator -l (XXX YYY -> -lXXX -lYYY)
143 LIB_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_FLAG_SEPARATOR),$(LIB_FLAG))
144
145 #Adding Lib path FLAG separator -L (../AAA ./BBB -> -L../AAA _L./BBB)
146 #LIB_PATH_FLAG:=${SRC_PATH_ALL}#old
147 #LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(LIB_PATH_FLAG))#old
148 LIB_PATH:=$(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.so)))#dir extract directory of file, $(wildcard $(dir)/*.h)=> take file.h if exist
149 override LIB_PATH:=$(call uniq,${LIB_PATH})
150 #${info "LIB_PATH= "${LIB_PATH}}
151 LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(LIB_PATH))
152
153 #Adding Include FLAG separator -I (../header ../header/api -> -I../header -I../header/api)
154 #HEADER_FLAG:= $(addprefix $(OPTION_SEPARATOR)$(HEADER_OPTION),$(HEADER_PATH_ALL))#old
155 HEADER_FLAG:= $(addprefix $(OPTION_SEPARATOR)$(HEADER_OPTION),$(INC_PATH))
156
157
158 #Injection variable in .cpp code (VAR1 VAR2 -> -DVAR1 -DVAR2)
159 CODE_DEFINE_VARIABLES_D:= $(addprefix -D,$(CODE_DEFINE_VARIABLES))
160
161 ifeq ($(TARGET_MODE),SHARED_LIB)
162 override CXXFLAGS := -fPIC -fvisibility=hidden ${CXXFLAGS}
163 endif
164
165 ifeq ($(TARGET_MODE),STATIC_LIB)
166 override CXXFLAGS := -fPIC ${CXXFLAGS}
167 endif
168
169 #OUTPUTS#
170 override LDFLAGS_AUX+= $(SRC_A_FILES_NOT_STANDART)
171 override CXXFLAGS += $(HEADER_FLAG)
172 override CXXFLAGS += $(CODE_DEFINE_VARIABLES_D)
173 override LDFLAGS += $(LINK_TAG) $(LIB_PATH_FLAG) $(LIB_FLAG) $(LDFLAGS_AUX)
174
175 #########
176 # End #
177 #########
178
179 endif#__FLAG_GCC_INTEL_MK__