Mercurial > projects > qtd
annotate Makefile @ 139:825ac6364d2f
CMake: fix debug flags for ldc
author | SokoL_SD |
---|---|
date | Sun, 07 Jun 2009 17:43:05 +0000 |
parents | 7ae9bc9d6935 |
children | ae34188ddd84 |
rev | line source |
---|---|
25 | 1 ## TODO: CPP_SHARED is very experemental on posix. |
2 ## TODO: "make clean" don`t work as expected. | |
3 ## TODO: add target "install" | |
4 ## TODO: delete 'lib' prefix from output library name under windows. | |
5 | |
6 ## Read variable from shell. | |
7 export QTDIR | |
8 export QTDIR_INC | |
9 export QTDIR_LIB | |
10 ## End. Read variable from shell. | |
11 | |
12 ## Try identify system. | |
125 | 13 ifeq ($(strip $(shell uname)),Linux) |
14 SYSTEM=posix | |
15 else | |
16 ifeq ($(strip $(shell uname)),Darwin) | |
17 SYSTEM=posix | |
18 else | |
19 SYSTEM=windows | |
20 endif | |
25 | 21 endif |
22 ## End, Try identify system. | |
23 | |
24 ## Load system specify settings. | |
25 include build/$(SYSTEM).makefile | |
26 | |
27 ## Main settings. | |
28 ## D compiler. | |
29 ifndef $(DC) | |
125 | 30 DC = ldmd |
25 | 31 endif |
32 ## C++ compiler. | |
33 ifndef $(CC) | |
34 CC = g++ | |
35 endif | |
36 ## Archiver. | |
37 ifndef $(AR) | |
38 AR = ar | |
39 endif | |
40 ## Set default target. | |
41 ifndef $(BUILD_TYPE) | |
42 BUILD_TYPE = release | |
43 endif | |
44 | |
45 ## Tmp path. | |
46 ifndef $(TMP_PATH) | |
47 TMP_PATH_ = tmp | |
48 TMP_PATH = $(TMP_PATH_)$(SL)$(BUILD_TYPE) | |
49 endif | |
50 ## Output path. | |
51 ifndef $(OUTPUT_PATH) | |
52 OUTPUT_PATH = lib | |
53 endif | |
54 ## Prefix for lib name. | |
55 ifndef $(NAME_PREFIX) | |
56 NAME_PREFIX = qtd | |
57 endif | |
58 ifndef $(PACKAGES) | |
39 | 59 PACKAGES = core gui |
25 | 60 endif |
61 LIB_PREFIX = lib | |
62 CC_INCLUDE += include $(QTDIR_INC) $(QTDIR_INC)$(SL)Qt $(QTDIR_INC)$(SL)QtCore $(QTDIR_INC)$(SL)QtGui $(QTDIR_INC)$(SL)QtOpenGL $(QTDIR_INC)$(SL)QtSvg | |
63 D_INCLUDE += | |
64 CC_LFLAGS += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads | |
65 CC_CFLAGS += | |
66 D_CFLAGS += | |
67 CC_LIB_PATH += $(QTDIR_LIB) $(TMP_PATH) | |
68 D_LIB_PATH += $(TMP_PATH) | |
69 | |
70 ## D target | |
71 ifndef D_TARGET | |
72 D_TARGET = d1-tango | |
73 endif | |
74 ifeq ($(D_TARGET), d1-tango) | |
75 D_VERSION = 1 | |
76 else | |
77 D_VERSION = 2 | |
78 endif | |
26 | 79 D_CFLAGS += -Iqt/d$(D_VERSION) |
25 | 80 |
81 #End. Main settings. | |
82 | |
83 ## Flags for debug version. | |
84 ifeq ($(BUILD_TYPE), debug) | |
85 CC_CFLAGS += -O0 | |
86 D_CFLAGS += -debug -g -gc | |
87 LIB_POSTFIX = d | |
88 else ifeq ($(BUILD_TYPE), release) | |
89 ## End. Flags for debug version. | |
90 ## Flags for release version | |
91 CC_CFLAGS += -O | |
92 D_CFLAGS += -O -release -inline | |
93 endif | |
94 ## End. Flags for release version. | |
95 | |
96 ## Load classes list. | |
97 ## param 1 - package name. | |
98 define MODULE_template | |
99 include build/$(1).makefile | |
100 qt_$(1)_lib_name = $$(qt_$(1)_name)$(QT_LIB_POSTFIX) | |
101 $(1)_cpp_files += $$($(1)_classes:%=cpp/qt_$(1)/%_shell.cpp) | |
102 $(1)_cpp_obj_files = $$($(1)_cpp_files:cpp/%.cpp=$(TMP_PATH)/%.o) | |
103 $(1)_d_files += $$($(1)_classes:%=qt/$(1)/%.d) | |
104 endef | |
105 $(foreach package,$(PACKAGES),$(eval $(call MODULE_template,$(package)))) | |
106 ## End. Load classes list | |
107 | |
108 ## DMD compile template bug fix | |
109 ifeq ($(DC), dmd) | |
110 NOT_SEPARATE_D_OBJ = true | |
111 endif | |
112 | |
125 | 113 ifeq ($(SYSTEM), windows) |
114 ifeq ($(DC), dmd) | |
115 DMD_WIN = true | |
116 endif | |
117 endif | |
118 | |
119 ifeq ($(DMD_WIN), true) | |
120 CPP_SHARED = true | |
121 LIB_EXT = lib | |
122 else | |
123 LIB_EXT = a | |
124 endif | |
25 | 125 |
126 ## CPP_SHARED options. | |
127 ifeq ($(CPP_SHARED), true) | |
128 CC_CFLAGS += -DCPP_SHARED | |
129 GEN_OPT += --cpp_shared | |
125 | 130 D_CFLAGS += -version=cpp_shared |
25 | 131 endif |
132 ## End. CPP_SHARED options. | |
133 | |
134 all: dgen build | |
135 | |
136 windows: | |
137 $(MAKE) SYSTEM=windows | |
138 | |
139 posix: | |
140 $(MAKE) SYSTEM=posix | |
141 | |
142 release: all | |
143 | |
144 debug: | |
145 $(MAKE) BUILD_TYPE=debug | |
146 | |
147 build: mkdir $(PACKAGES) | |
148 | |
149 ## DGenerator | |
150 make_gen: | |
151 cd generator && qmake && $(MAKE) | |
152 | |
153 dgen: make_gen | |
39 | 154 cd generator && $(GEN) $(GEN_OPT) --d-target=$(D_TARGET) --output-directory=../ qtjambi_masterinclude.h build_gui.txt |
25 | 155 ## DGenerator ## end |
156 | |
157 mkdir: | |
158 @$(MKDIR) $(TMP_PATH_) | |
159 @$(MKDIR) $(TMP_PATH) | |
160 @$(MKDIR) $(TMP_PATH)$(SL)qt_qtd | |
161 @$(MKDIR) $(TMP_PATH)$(SL)qtd | |
162 @$(MKDIR) $(OUTPUT_PATH) | |
163 | |
164 ## Build cpp files. | |
165 $(TMP_PATH)/%.o: cpp/%.cpp | |
166 $(CC) $(CC_CFLAGS) $(CC_INCLUDE:%=-I%) -c $(@:$(TMP_PATH)/%.o=cpp/%.cpp) -o$@ | |
167 | |
168 ## Build d files. | |
169 $(TMP_PATH)/%_d.o: qt/%.d | |
170 $(DC) $(D_CFLAGS) -c $(@:$(TMP_PATH)/%_d.o=qt/%.d) -of$@ | |
171 | |
172 ## Build package. | |
173 ## param 1 - package name. | |
174 define BUILD_template | |
175 ## mkdir | |
176 mkdir_$(1): | |
177 @$(MKDIR) $(TMP_PATH)$(SL)qt_$(1) | |
178 @$(MKDIR) $(TMP_PATH)$(SL)$(1) | |
179 ## End. mkdir | |
180 ## Build d part. | |
181 ifeq ($(NOT_SEPARATE_D_OBJ), true) | |
182 ## DMD compile template bug fix | |
183 $(1)_D_RULE =$(TMP_PATH)/$(1)_dobj.$(D_OBJ_EXT) | |
184 $$($(1)_D_RULE): | |
130
7ae9bc9d6935
reference counting for return values. applied to QMenu
eldar
parents:
125
diff
changeset
|
185 $(DC) $(D_CFLAGS) $(D_INCLUDE) -c $$($(1)_d_files) -of$$($(1)_D_RULE) |
25 | 186 else |
187 $(1)_D_RULE = $$($(1)_d_files:qt/%.d=$(TMP_PATH)/%_d.o) | |
188 endif | |
189 ## End. Build d part. | |
190 ## Build cpp part. | |
191 ifeq ($(CPP_SHARED), true) | |
192 ifeq ($(SYSTEM), windows) | |
193 $(1)_CPP_DYN_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
194 $$($(1)_CPP_DYN_LIB): $$($(1)_cpp_obj_files) | |
195 $(CC) $(CC_LFLAGS) -shared $$($(1)_cpp_obj_files) -o $$($(1)_CPP_DYN_LIB) $(CC_LIB_PATH:%=-L%) -l$(qt_$(1)_lib_name) $$($(1)_link_cpp:%=-l%) -Wl,--out-implib,$(TMP_PATH)\$(LIB_PREFIX)$(NAME_PREFIX)$(1)_cpp.a | |
196 $(1)_CPP_RULE = $(TMP_PATH)\cpp_$(1).$(LIB_EXT) | |
197 $$($(1)_CPP_RULE): $$($(1)_CPP_DYN_LIB) | |
198 $(IMPLIB) $$($(1)_CPP_RULE) $$($(1)_CPP_DYN_LIB) | |
199 else ## CPP_SHARED != true | |
200 $(1)_CPP_RULE = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
201 $$($(1)_CPP_RULE): $$($(1)_cpp_obj_files) | |
202 $(CC) $(CC_LFLAGS) $(QTDIR_LIB)/$(LIB_PREFIX)$(qt_$(1)_name).$(DYN_LIB_EXT) $$($(1)_link_cpp:%=-l%) $$($(1)_cpp_obj_files) -o $$($(1)_CPP_RULE) | |
203 endif ## CPP_SHARED | |
204 DELETE_FILES += $$($(1)_CPP_DYN_LIB) $$($(1)_cpp_obj_files) $(TMP_PATH)\$(LIB_PREFIX)$(NAME_PREFIX)$(1)_cpp.a | |
205 else | |
206 $(1)_CPP_RULE = $$($(1)_cpp_obj_files) | |
207 endif | |
208 ## End. Build cpp part. | |
209 | |
210 DELETE_FILES += $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(OUTPUT_PATH)/$(LIB_PREFIX)$$(qt_$(1)_name)D.$(LIB_EXT) | |
211 ## Implib link. | |
212 $(1)_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(LIB_EXT) | |
125 | 213 ifeq ($(DMD_WIN), true) |
25 | 214 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) |
215 $(DC) $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(D_LIB_PATH:%=-L-L%) $$($(1)_link_d:%=-L-l%) -lib -of$$($(1)_LIB) | |
216 else | |
217 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
218 $(AR) rcs $$($(1)_LIB) $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
219 endif | |
220 # End. Implib link. | |
221 $(1): mkdir_$(1) $$($(1)_LIB) | |
222 endef | |
223 $(foreach package,$(PACKAGES),$(eval $(call BUILD_template,$(package)))) | |
224 ## End. Build package. | |
225 | |
226 clean: | |
227 @$(RM) $(DELETE_FILES) |