Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BUILDER / makefile / private / cpp / flags_MinGW.mk
1 # Version : 0.0.3
2 # Date : 02.02.2012
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 ifndef __CPP_FLAG_MINGW_MK__
11 __CPP_FLAG_MINGW_MK__=true
12
13 ######################
14 # Variables #
15 ######################
16
17 #Compilateur ,Archiveur (static lib)
18 CXX:=g++
19 AR:=ar
20
21 #############
22 # Extension #
23 #############
24
25 EXTENSION_OBJ:=obj#
26 EXTENSION_LIB:=a#
27 EXTENSION_DLL:=dll#
28 EXTENSION_EXE:=exe#
29 # Note enstension sans le .
30
31 #############
32 #Compilateur#
33 #############
34
35 SYS_LIBRARY_FILES:=#minimum rien
36 OPTION_SEPARATOR:=-#
37 LIB_FLAG_SEPARATOR:=l#
38 LIB_PATH_SEPARATOR:=L#
39 HEADER_OPTION:=I#attention end with space!
40 OUT_FILE_COMPILE:=-o #attention end with space!
41 OUT_FILE_LINK:=-o #attention end with space!
42 LINK_TAG:=#rien
43 LINK_FLAG_DLL:=-shared #with espace !
44
45 LIB_PREFIXE:=lib#rien
46
47 VERSION_CXX:=$(CXX) --version
48 CXX_HELP:=$(CXX) --help
49
50 ##########
51 #ARCHIVEUR#
52 ###########
53
54 AR_OUT_FLAG:=-r #with espace important !
55
56 #############
57 # SET FILES #
58 #############
59
60 # Input :
61 # SRC_PATH_ALL
62 # Output :
63 # All files libXXX.a, libXXX.dll and XXX.dll, without XXX.a !
64 # Objectifs :
65 # Les .a prefix� par lib (libXXX.a) seront donnee a GCC sous la forme -lXXX)
66 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a
67 SRC_A_FILES_STANDART:=$(foreach dir,$(SRC_PATH_ALL),$(wildcard $(dir)/$(LIB_PREFIXE)*.$(EXTENSION_LIB)))
68 SRC_A_FILES_STANDART+=$(SRC_DLL_FILES)
69
70 # Libraries #
71 # Input :
72 # SRC_PATH_ALL
73 # Output :
74 # All files XXX.a without libXXX.a, libXXX.dll and XXX.dll !
75 # Objectifs :
76 # Les .a prefix� par lib (libXXX.a) seront donnee a GCC sous la forme -lXXX
77 # Alors que les YYY.a devront etre donner a GCC sous la forme YYY.a avec la path complet (par exemple ../libs/YYY.a).
78 SRC_A_FILES_NOT_STANDART:=$(foreach dir,$(SRC_PATH_ALL),$(filter-out $(dir)/$(LIB_PREFIXE)%.$(EXTENSION_LIB),$(wildcard $(dir)/*.$(EXTENSION_LIB))))
79
80 #################
81 # PREPARE FLAGS #
82 #################
83
84 # dans api now
85 #Ajoute automatiquement gomp si on use OpenMP
86 #ifneq (, $(findstring openmp,$(CXXFLAGS)))#findstring return vide si openmp pas trouver!
87 # ADD_LIBRARY_FILES+=gomp
88 #endif
89
90 #only fileName (./libs/libXXX.a ./libs/YYY.dll -> lixXXX.a YYY.dll)
91 LIB_FLAG:=$(notdir $(SRC_A_FILES_STANDART))
92
93 #removing prefix lib (libXXX.a libYYY.a libZZZ.dll -> XXX.a YYY.a ZZZ.dll)
94 LIB_FLAG:=$(subst $(LIB_PREFIXE),,$(LIB_FLAG))#remplace lib par rien
95
96 #Delete extension .a (XXX.a YYY.a -> XXX YYY)
97 LIB_FLAG:=$(LIB_FLAG:.$(EXTENSION_LIB)=)
98
99 #Delete extension .dll (XXX.dll YYY.dll -> XXX YYY)
100 LIB_FLAG:=$(LIB_FLAG:.$(EXTENSION_DLL)=)
101
102 #ADDING custom LIB and System LIB
103 LIB_FLAG+= $(ADD_LIBRARY_FILES) $(SYS_LIBRARY_FILES)
104
105 # Input :
106 # list lib to delete example (AAA ZZZ)
107 #
108 # before : LIB_FLAG (XXX YYY ZZZ)
109 # after : LIB_FLAG (XXX YYY) without ZZZ
110 LIB_FLAG:=$(filter-out $(EXCLUDE_LIBRARY_FILES),$(LIB_FLAG))
111
112 #Adding Lib FLAG separator -l (XXX YYY -> -lXXX -lYYY)
113 LIB_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_FLAG_SEPARATOR),$(LIB_FLAG))
114
115 #Adding Lib path FLAG separator -L (../AAA ./BBB -> -L../AAA _L./BBB)
116 #LIB_PATH_FLAG:=${SRC_PATH_ALL}#old
117 #LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(LIB_PATH_FLAG))#old
118 LIB_PATH:=$(foreach dir,$(SRC_PATH_ALL),$(dir $(wildcard $(dir)/*.a)))#dir extract directory of file, $(wildcard $(dir)/*.h)=> take file.h if exist
119 override LIB_PATH:=$(call uniq,${LIB_PATH})
120 #${info "LIB_PATH= "${LIB_PATH}}
121 LIB_PATH_FLAG:=$(addprefix $(OPTION_SEPARATOR)$(LIB_PATH_SEPARATOR),$(LIB_PATH))
122
123 #Adding Include FLAG separator -I (../header ../header/api -> -I../header -I../header/api)
124 #HEADER_FLAG:= $(addprefix $(OPTION_SEPARATOR)$(HEADER_OPTION),$(HEADER_PATH_ALL))#old
125 HEADER_FLAG:= $(addprefix $(OPTION_SEPARATOR)$(HEADER_OPTION),$(INC_PATH))
126
127 ifeq ($(TARGET_MODE),SHARED_LIB)
128 GENERATEUR_DLL_DEF:= -Wl,--output-def,$(TARGET_BIN_PATH)/${LIB_PREFIXE}$(TARGET_NAME)_$(ARCHI_32_64).def
129 GENERATEUR_DLL_LIB_IMPORTATION:= -Wl,--out-implib,$(TARGET_BIN_PATH)/${LIB_PREFIXE}$(TARGET_NAME)_$(ARCHI_32_64).dll.$(EXTENSION_LIB)
130 LDFLAGS+=$(GENERATEUR_DLL_LIB_IMPORTATION) $(GENERATEUR_DLL_DEF)
131
132 # CXXFLAGS += -fPIC
133
134 override CXXFLAGS := -fvisibility=hidden ${CXXFLAGS}
135 endif
136
137 #Injection variable in .cpp code (VAR1 VAR2 -> -DVAR1 -DVAR2)
138 CODE_DEFINE_VARIABLES_D:= $(addprefix -D,$(CODE_DEFINE_VARIABLES))
139
140 #OUTPUTS
141 override LDFLAGS_AUX+= $(SRC_A_FILES_NOT_STANDART)
142 override CXXFLAGS += $(HEADER_FLAG)
143 override CXXFLAGS += $(CODE_DEFINE_VARIABLES_D)
144 override LDFLAGS += $(LINK_TAG) $(LIB_PATH_FLAG) $(LIB_FLAG) $(LDFLAGS_AUX)
145
146 #########
147 # End #
148 #########
149
150 endif#__CPP_FLAG_MINGW_MK__