Mercurial > projects > qtd
annotate Makefile @ 33:cf8a415f3f32
gui package is fully wrapped now. lots of fixes in the generator
author | eldar |
---|---|
date | Sat, 16 May 2009 17:12:06 +0000 |
parents | 6873e4b22c08 |
children | 17cc45b32686 |
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. | |
13 ifeq ($(MAKE), mingw32-make) # TODO: add another system. | |
14 SYSTEM = windows | |
15 endif | |
16 ifndef SYSTEM | |
17 SYSTEM = posix | |
18 endif | |
19 ## End, Try identify system. | |
20 | |
21 ## Load system specify settings. | |
22 include build/$(SYSTEM).makefile | |
23 | |
24 ## Main settings. | |
25 ## D compiler. | |
26 ifndef $(DC) | |
27 DC = dmd | |
28 endif | |
29 ## C++ compiler. | |
30 ifndef $(CC) | |
31 CC = g++ | |
32 endif | |
33 ## Archiver. | |
34 ifndef $(AR) | |
35 AR = ar | |
36 endif | |
37 ## Set default target. | |
38 ifndef $(BUILD_TYPE) | |
39 BUILD_TYPE = release | |
40 endif | |
41 | |
42 ## Tmp path. | |
43 ifndef $(TMP_PATH) | |
44 TMP_PATH_ = tmp | |
45 TMP_PATH = $(TMP_PATH_)$(SL)$(BUILD_TYPE) | |
46 endif | |
47 ## Output path. | |
48 ifndef $(OUTPUT_PATH) | |
49 OUTPUT_PATH = lib | |
50 endif | |
51 ## Prefix for lib name. | |
52 ifndef $(NAME_PREFIX) | |
53 NAME_PREFIX = qtd | |
54 endif | |
55 ifndef $(PACKAGES) | |
56 PACKAGES = core gui | |
57 endif | |
58 LIB_PREFIX = lib | |
59 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 | |
60 D_INCLUDE += | |
61 CC_LFLAGS += -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -Wl,-s -mthreads | |
62 CC_CFLAGS += | |
63 D_CFLAGS += | |
64 CC_LIB_PATH += $(QTDIR_LIB) $(TMP_PATH) | |
65 D_LIB_PATH += $(TMP_PATH) | |
66 | |
67 ## D target | |
68 ifndef D_TARGET | |
69 D_TARGET = d1-tango | |
70 endif | |
71 ifeq ($(D_TARGET), d1-tango) | |
72 D_VERSION = 1 | |
73 else | |
74 D_VERSION = 2 | |
75 endif | |
26 | 76 D_CFLAGS += -Iqt/d$(D_VERSION) |
25 | 77 |
78 #End. Main settings. | |
79 | |
80 ## Flags for debug version. | |
81 ifeq ($(BUILD_TYPE), debug) | |
82 CC_CFLAGS += -O0 | |
83 D_CFLAGS += -debug -g -gc | |
84 LIB_POSTFIX = d | |
85 else ifeq ($(BUILD_TYPE), release) | |
86 ## End. Flags for debug version. | |
87 ## Flags for release version | |
88 CC_CFLAGS += -O | |
89 D_CFLAGS += -O -release -inline | |
90 endif | |
91 ## End. Flags for release version. | |
92 | |
93 ## Load classes list. | |
94 ## param 1 - package name. | |
95 define MODULE_template | |
96 include build/$(1).makefile | |
97 qt_$(1)_lib_name = $$(qt_$(1)_name)$(QT_LIB_POSTFIX) | |
98 $(1)_cpp_files += $$($(1)_classes:%=cpp/qt_$(1)/%_shell.cpp) | |
99 $(1)_cpp_obj_files = $$($(1)_cpp_files:cpp/%.cpp=$(TMP_PATH)/%.o) | |
100 $(1)_d_files += $$($(1)_classes:%=qt/$(1)/%.d) | |
101 endef | |
102 $(foreach package,$(PACKAGES),$(eval $(call MODULE_template,$(package)))) | |
103 ## End. Load classes list | |
104 | |
105 ## DMD compile template bug fix | |
106 ifeq ($(DC), dmd) | |
107 NOT_SEPARATE_D_OBJ = true | |
108 endif | |
109 | |
110 | |
111 ## CPP_SHARED options. | |
112 ifeq ($(CPP_SHARED), true) | |
113 CC_CFLAGS += -DCPP_SHARED | |
114 GEN_OPT += --cpp_shared | |
115 endif | |
116 ## End. CPP_SHARED options. | |
117 | |
118 all: dgen build | |
119 | |
120 windows: | |
121 $(MAKE) SYSTEM=windows | |
122 | |
123 posix: | |
124 $(MAKE) SYSTEM=posix | |
125 | |
126 release: all | |
127 | |
128 debug: | |
129 $(MAKE) BUILD_TYPE=debug | |
130 | |
131 build: mkdir $(PACKAGES) | |
132 | |
133 ## DGenerator | |
134 make_gen: | |
135 cd generator && qmake && $(MAKE) | |
136 | |
137 dgen: make_gen | |
33
cf8a415f3f32
gui package is fully wrapped now. lots of fixes in the generator
eldar
parents:
26
diff
changeset
|
138 cd generator && $(GEN) $(GEN_OPT) --d-target=$(D_TARGET) --output-directory=../ qtjambi_masterinclude.h build_gui.txt |
25 | 139 ## DGenerator ## end |
140 | |
141 mkdir: | |
142 @$(MKDIR) $(TMP_PATH_) | |
143 @$(MKDIR) $(TMP_PATH) | |
144 @$(MKDIR) $(TMP_PATH)$(SL)qt_qtd | |
145 @$(MKDIR) $(TMP_PATH)$(SL)qtd | |
146 @$(MKDIR) $(OUTPUT_PATH) | |
147 | |
148 ## Build cpp files. | |
149 $(TMP_PATH)/%.o: cpp/%.cpp | |
150 $(CC) $(CC_CFLAGS) $(CC_INCLUDE:%=-I%) -c $(@:$(TMP_PATH)/%.o=cpp/%.cpp) -o$@ | |
151 | |
152 ## Build d files. | |
153 $(TMP_PATH)/%_d.o: qt/%.d | |
154 $(DC) $(D_CFLAGS) -c $(@:$(TMP_PATH)/%_d.o=qt/%.d) -of$@ | |
155 | |
156 ## Build package. | |
157 ## param 1 - package name. | |
158 define BUILD_template | |
159 ## mkdir | |
160 mkdir_$(1): | |
161 @$(MKDIR) $(TMP_PATH)$(SL)qt_$(1) | |
162 @$(MKDIR) $(TMP_PATH)$(SL)$(1) | |
163 ## End. mkdir | |
164 ## Build d part. | |
165 ifeq ($(NOT_SEPARATE_D_OBJ), true) | |
166 ## DMD compile template bug fix | |
167 $(1)_D_RULE =$(TMP_PATH)/$(1)_dobj.$(D_OBJ_EXT) | |
168 $$($(1)_D_RULE): | |
169 $(DC) $(D_CFLAGS) $(D_INCLUDE) -c $$($(1)_d_files) -of$$($(1)_D_RULE) | |
170 else | |
171 $(1)_D_RULE = $$($(1)_d_files:qt/%.d=$(TMP_PATH)/%_d.o) | |
172 endif | |
173 ## End. Build d part. | |
174 ## Build cpp part. | |
175 ifeq ($(CPP_SHARED), true) | |
176 ifeq ($(SYSTEM), windows) | |
177 $(1)_CPP_DYN_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
178 $$($(1)_CPP_DYN_LIB): $$($(1)_cpp_obj_files) | |
179 $(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 | |
180 $(1)_CPP_RULE = $(TMP_PATH)\cpp_$(1).$(LIB_EXT) | |
181 $$($(1)_CPP_RULE): $$($(1)_CPP_DYN_LIB) | |
182 $(IMPLIB) $$($(1)_CPP_RULE) $$($(1)_CPP_DYN_LIB) | |
183 else ## CPP_SHARED != true | |
184 $(1)_CPP_RULE = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(DYN_LIB_EXT) | |
185 $$($(1)_CPP_RULE): $$($(1)_cpp_obj_files) | |
186 $(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) | |
187 endif ## CPP_SHARED | |
188 DELETE_FILES += $$($(1)_CPP_DYN_LIB) $$($(1)_cpp_obj_files) $(TMP_PATH)\$(LIB_PREFIX)$(NAME_PREFIX)$(1)_cpp.a | |
189 else | |
190 $(1)_CPP_RULE = $$($(1)_cpp_obj_files) | |
191 endif | |
192 ## End. Build cpp part. | |
193 | |
194 DELETE_FILES += $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(OUTPUT_PATH)/$(LIB_PREFIX)$$(qt_$(1)_name)D.$(LIB_EXT) | |
195 ## Implib link. | |
196 $(1)_LIB = $(OUTPUT_PATH)$(SL)$(LIB_PREFIX)$(NAME_PREFIX)$(1)$(LIB_POSTFIX).$(LIB_EXT) | |
197 ifeq ($(SYSTEM), windows) | |
198 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
199 $(DC) $$($(1)_D_RULE) $$($(1)_CPP_RULE) $(D_LIB_PATH:%=-L-L%) $$($(1)_link_d:%=-L-l%) -lib -of$$($(1)_LIB) | |
200 else | |
201 $$($(1)_LIB): $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
202 $(AR) rcs $$($(1)_LIB) $$($(1)_D_RULE) $$($(1)_CPP_RULE) | |
203 endif | |
204 # End. Implib link. | |
205 $(1): mkdir_$(1) $$($(1)_LIB) | |
206 endef | |
207 $(foreach package,$(PACKAGES),$(eval $(call BUILD_template,$(package)))) | |
208 ## End. Build package. | |
209 | |
210 clean: | |
211 @$(RM) $(DELETE_FILES) |