Mercurial > projects > qtd
annotate Makefile @ 266:5134552d97f6
Bug fix for http://www.dsource.org/forums/viewtopic.php?t=4713
author | SokoL_SD |
---|---|
date | Fri, 11 Sep 2009 13:50:59 +0000 |
parents | 1a98a547b4d5 |
children | 49bfc86ff583 |
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) | |
148
ae34188ddd84
private signals of QAbstractItemModel are now accessible
eldar
parents:
130
diff
changeset
|
30 DC = dmd |
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 | |
219 | 58 |
25 | 59 ifndef $(PACKAGES) |
190 | 60 PACKAGES = core gui |
25 | 61 endif |
219 | 62 |
63 ifeq ($(DMD_WIN), false) | |
25 | 64 LIB_PREFIX = lib |
219 | 65 endif |
66 | |
25 | 67 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 |
68 D_INCLUDE += | |
69 CC_LFLAGS += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads | |
70 CC_CFLAGS += | |
71 D_CFLAGS += | |
72 CC_LIB_PATH += $(QTDIR_LIB) $(TMP_PATH) | |
73 D_LIB_PATH += $(TMP_PATH) | |
74 | |
75 ## D target | |
76 ifndef D_TARGET | |
77 D_TARGET = d1-tango | |
78 endif | |
188 | 79 |
25 | 80 ifeq ($(D_TARGET), d1-tango) |
81 D_VERSION = 1 | |
82 else | |
83 D_VERSION = 2 | |
84 endif | |
26 | 85 D_CFLAGS += -Iqt/d$(D_VERSION) |
25 | 86 |
87 #End. Main settings. | |
88 | |
89 ## Flags for debug version. | |
90 ifeq ($(BUILD_TYPE), debug) | |
91 CC_CFLAGS += -O0 | |
92 D_CFLAGS += -debug -g -gc | |
93 LIB_POSTFIX = d | |
94 else ifeq ($(BUILD_TYPE), release) | |
95 ## End. Flags for debug version. | |
96 ## Flags for release version | |
97 CC_CFLAGS += -O | |
98 D_CFLAGS += -O -release -inline | |
99 endif | |
100 ## End. Flags for release version. | |
101 | |
102 ## Load classes list. | |
103 ## param 1 - package name. | |
104 define MODULE_template | |
105 include build/$(1).makefile | |
106 qt_$(1)_lib_name = $$(qt_$(1)_name)$(QT_LIB_POSTFIX) | |
107 $(1)_cpp_files += $$($(1)_classes:%=cpp/qt_$(1)/%_shell.cpp) | |
108 $(1)_cpp_obj_files = $$($(1)_cpp_files:cpp/%.cpp=$(TMP_PATH)/%.o) | |
109 $(1)_d_files += $$($(1)_classes:%=qt/$(1)/%.d) | |
110 endef | |
111 $(foreach package,$(PACKAGES),$(eval $(call MODULE_template,$(package)))) | |
112 ## End. Load classes list | |
113 | |
114 ## DMD compile template bug fix | |
115 ifeq ($(DC), dmd) | |
116 NOT_SEPARATE_D_OBJ = true | |
117 endif | |
118 | |
125 | 119 ifeq ($(SYSTEM), windows) |
120 ifeq ($(DC), dmd) | |
121 DMD_WIN = true | |
122 endif | |
123 endif | |
124 | |
125 ifeq ($(DMD_WIN), true) | |
126 CPP_SHARED = true | |
127 LIB_EXT = lib | |
128 else | |
129 LIB_EXT = a | |
130 endif | |
25 | 131 |
132 ## CPP_SHARED options. | |
133 ifeq ($(CPP_SHARED), true) | |
134 CC_CFLAGS += -DCPP_SHARED | |
135 GEN_OPT += --cpp_shared | |
125 | 136 D_CFLAGS += -version=cpp_shared |
25 | 137 endif |
138 ## End. CPP_SHARED options. | |
139 | |
140 all: dgen build | |
141 | |
142 windows: | |
143 $(MAKE) SYSTEM=windows | |
144 | |
145 posix: | |
146 $(MAKE) SYSTEM=posix | |
147 | |
148 release: all | |
149 | |
150 debug: | |
151 $(MAKE) BUILD_TYPE=debug | |
152 | |
153 build: mkdir $(PACKAGES) | |
154 | |
155 ## DGenerator | |
156 make_gen: | |
157 cd generator && qmake && $(MAKE) | |
158 | |
159 dgen: make_gen | |
190 | 160 cd generator && $(GEN) $(GEN_OPT) --d-target=$(D_TARGET) --output-directory=../ qtjambi_masterinclude.h build_gui.txt |
25 | 161 ## DGenerator ## end |
162 | |
163 mkdir: | |
164 @$(MKDIR) $(TMP_PATH_) | |
165 @$(MKDIR) $(TMP_PATH) | |
166 @$(MKDIR) $(TMP_PATH)$(SL)qt_qtd | |
167 @$(MKDIR) $(TMP_PATH)$(SL)qtd | |
168 @$(MKDIR) $(OUTPUT_PATH) | |
169 | |
170 ## Build cpp files. | |
171 $(TMP_PATH)/%.o: cpp/%.cpp | |
172 $(CC) $(CC_CFLAGS) $(CC_INCLUDE:%=-I%) -c $(@:$(TMP_PATH)/%.o=cpp/%.cpp) -o$@ | |
173 | |
174 ## Build d files. | |
175 $(TMP_PATH)/%_d.o: qt/%.d | |
176 $(DC) $(D_CFLAGS) -c $(@:$(TMP_PATH)/%_d.o=qt/%.d) -of$@ | |
177 | |
178 ## Build package. | |
179 ## param 1 - package name. | |
180 define BUILD_template | |
181 ## mkdir | |
182 mkdir_$(1): | |
183 @$(MKDIR) $(TMP_PATH)$(SL)qt_$(1) | |
184 @$(MKDIR) $(TMP_PATH)$(SL)$(1) | |
185 ## End. mkdir | |
186 ## Build d part. | |
187 ifeq ($(NOT_SEPARATE_D_OBJ), true) | |
188 ## DMD compile template bug fix | |
189 $(1)_D_RULE =$(TMP_PATH)/$(1)_dobj.$(D_OBJ_EXT) | |
190 $$($(1)_D_RULE): | |
130
7ae9bc9d6935
reference counting for return values. applied to QMenu
eldar
parents:
125
diff
changeset
|
191 $(DC) $(D_CFLAGS) $(D_INCLUDE) -c $$($(1)_d_files) -of$$($(1)_D_RULE) |
25 | 192 else |
193 $(1)_D_RULE = $$($(1)_d_files:qt/%.d=$(TMP_PATH)/%_d.o) | |
194 endif | |
195 ## End. Build d part. | |
196 ## Build cpp part. | |
197 ifeq ($(CPP_SHARED), true) | |
198 ifeq ($(SYSTEM), windows) | |
199 $(1)_CPP_DYN_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
200 $$($(1)_CPP_DYN_LIB): $$($(1)_cpp_obj_files) | |
201 $(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 | |
202 $(1)_CPP_RULE = $(TMP_PATH)\cpp_$(1).$(LIB_EXT) | |
203 $$($(1)_CPP_RULE): $$($(1)_CPP_DYN_LIB) | |
204 $(IMPLIB) $$($(1)_CPP_RULE) $$($(1)_CPP_DYN_LIB) | |
205 else ## CPP_SHARED != true | |
206 $(1)_CPP_RULE = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
207 $$($(1)_CPP_RULE): $$($(1)_cpp_obj_files) | |
208 $(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) | |
209 endif ## CPP_SHARED | |
210 DELETE_FILES += $$($(1)_CPP_DYN_LIB) $$($(1)_cpp_obj_files) $(TMP_PATH)\$(LIB_PREFIX)$(NAME_PREFIX)$(1)_cpp.a | |
211 else | |
212 $(1)_CPP_RULE = $$($(1)_cpp_obj_files) | |
213 endif | |
214 ## End. Build cpp part. | |
215 | |
216 DELETE_FILES += $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(OUTPUT_PATH)/$(LIB_PREFIX)$$(qt_$(1)_name)D.$(LIB_EXT) | |
217 ## Implib link. | |
218 $(1)_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(LIB_EXT) | |
125 | 219 ifeq ($(DMD_WIN), true) |
25 | 220 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) |
221 $(DC) $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(D_LIB_PATH:%=-L-L%) $$($(1)_link_d:%=-L-l%) -lib -of$$($(1)_LIB) | |
222 else | |
223 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
224 $(AR) rcs $$($(1)_LIB) $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
225 endif | |
226 # End. Implib link. | |
227 $(1): mkdir_$(1) $$($(1)_LIB) | |
228 endef | |
229 $(foreach package,$(PACKAGES),$(eval $(call BUILD_template,$(package)))) | |
230 ## End. Build package. | |
231 | |
232 clean: | |
233 @$(RM) $(DELETE_FILES) |