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