1include ../config.mak 2 3CFLAGS= $(OPTFLAGS) $(GTKINC) \ 4 -DGDK_DISABLE_SINGLE_INCLUDES -DGDK_DISABLE_DEPRECATED \ 5 -DGTK_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED \ 6 -DG_DISABLE_SINGLE_INCLUDES \ 7 -DGSEAL_ENABLE \ 8 -DHIME_BIN_DIR=\"$(HIME_BIN_DIR)\" \ 9 -DHIME_DEFAULT_ICON_DIR=\"$(HIME_DEFAULT_ICON_DIR)\" \ 10 -DHIME_OGG_DIR=\"$(HIME_OGG_DIR)\" \ 11 -DHIME_SCRIPT_DIR=\"$(HIME_SCRIPT_DIR)\" \ 12 -DHIME_TABLE_DIR=\"$(HIME_TABLE_DIR)\" \ 13 -DHIME_VERSION=\"$(HIME_VERSION)\" \ 14 -DDOC_DIR=\"$(DOC_DIR)\" \ 15 -DSYS_ICON_DIR=\"$(SYS_ICON_DIR)\" \ 16 -DFREEBSD=$(FREEBSD) \ 17 -I./IMdkit/include -I./im-client 18 19OBJ_IMSRV = hime-crypt.o im-addr.o im-dispatch.o im-srv.o 20 21hime_pho_o = pho-dbg.o pho-sym.o pho-util.o pho.o \ 22 table-update.o win-pho.o 23hime_gtab_o = gtab-buf.o gtab-list.o gtab-util.o gtab.o win-gtab.o 24 25 26OBJS = $(hime_pho_o) $(hime_gtab_o) hime.o \ 27 about.o cache.o eve.o fullchar.o \ 28 gtab-init.o gtab-tsin-fname.o gtab-use-count.o gtk_bug_fix.o \ 29 hime-common.o hime-conf.o hime-exec-script.o hime-icon.o \ 30 hime-module-cb.o hime-module.o hime-settings.o \ 31 lang.o locale.o \ 32 pho-kbm-name.o pho-play.o pho2pinyin.o \ 33 phrase-save-menu.o phrase.o \ 34 pinyin.o \ 35 statistic.o t2s-lookup.o tsin-scan.o \ 36 unix-exec.o util.o \ 37 win-inmd-switch.o win-kbm.o win-message.o win-pho-near.o \ 38 win-save-phrase.o win-sym.o 39 40OBJS_TSLEARN = hime-tslearn.o \ 41 fullchar.o \ 42 gtab-init.o gtab-list.o gtab-tsin-fname.o gtab-util.o \ 43 hime-common.o hime-conf.o hime-icon.o hime-settings.o \ 44 lang.o locale.o \ 45 pho-dbg.o pho-sym.o pho-util.o pho2pinyin.o \ 46 pinyin.o \ 47 table-update.o tsin-util.o unix-exec.o util.o 48 49OBJS_TS_EDIT = hime-ts-edit.o \ 50 fullchar.o \ 51 gtab-init.o gtab-list.o gtab-tsin-fname.o gtab-util.o \ 52 hime-common.o hime-conf.o hime-icon.o hime-settings.o \ 53 lang.o locale.o \ 54 pho-dbg.o pho-sym.o pho-util.o pho2pinyin.o \ 55 pinyin.o \ 56 table-update.o tsin-util.o unix-exec.o util.o 57 58OBJS_JUYIN_LEARN = hime-juyin-learn.o \ 59 hime-common.o hime-conf.o hime-icon.o hime-settings.o \ 60 locale.o \ 61 pho-dbg.o pho-sym.o pho-util.o pho2pinyin.o \ 62 pinyin.o \ 63 table-update.o util.o 64 65OBJS_hime-sim2trad = hime-sim2trad.o \ 66 hime-common.o hime-conf.o hime-icon.o hime-settings.o \ 67 locale.o \ 68 pho2pinyin.o pinyin.o \ 69 t2s-lookup.o util.o 70 71OBJS_hime-phod2a = hime-phod2a.o \ 72 hime-common.o hime-conf.o hime-settings.o \ 73 locale.o \ 74 pho-dbg.o pho-sym.o pho-util.o pho2pinyin.o \ 75 pinyin.o \ 76 table-update.o util.o 77 78OBJS_hime-tsa2d32 = hime-tsa2d32.o \ 79 hime-common.o hime-conf.o hime-settings.o \ 80 locale.o \ 81 pho-dbg.o pho-lookup.o pho-sym.o pho2pinyin.o \ 82 pinyin.o \ 83 util.o 84 85OBJS_hime-phoa2d = hime-phoa2d.o \ 86 hime-common.o hime-conf.o hime-settings.o \ 87 locale.o \ 88 pho-dbg.o pho-lookup.o pho-sym.o pho2pinyin.o \ 89 pinyin.o \ 90 util.o 91 92OBJS_kbmcv = kbmcv.o \ 93 locale.o pho-sym.o util.o 94 95OBJS_hime-tsd2a32 = hime-tsd2a32.o \ 96 gtab-dbg.o \ 97 hime-common.o hime-conf.o hime-settings.o \ 98 locale.o \ 99 pho-dbg.o pho-sym.o pho2pinyin.o \ 100 pinyin.o \ 101 util.o 102 103OBJS_cin2gtab = hime-cin2gtab.o gtab-util.o locale.o util.o 104OBJS_gtab2cin = hime-gtab2cin.o gtab-util.o locale.o util.o 105OBJS_gtab_merge = hime-gtab-merge.o gtab-util.o locale.o util.o 106OBJS_hime_setup = hime-setup.o \ 107 about.o \ 108 gtab-list.o \ 109 hime-common.o hime-conf.o hime-exec-script.o hime-icon.o \ 110 hime-module-cb.o hime-settings.o hime-setup-appearance.o \ 111 hime-setup-gtab.o hime-setup-list.o hime-setup-pho.o \ 112 lang.o locale.o \ 113 pho-kbm-name.o pho2pinyin.o pinyin.o \ 114 util.o 115 116OBJS_hime_gb_toggle = hime-gb-toggle.o \ 117 hime-common.o hime-conf.o hime-settings.o \ 118 locale.o \ 119 pho2pinyin.o pinyin.o\ 120 util.o 121 122OBJS_hime_message = hime-message.o \ 123 hime-common.o hime-conf.o hime-settings.o \ 124 locale.o \ 125 pho2pinyin.o pinyin.o \ 126 util.o 127 128OBJS_pin_juyin = pin-juyin.o locale.o pho-lookup.o pho-sym.o util.o 129 130OBJS_tsin2gtab_phrase = hime-tsin2gtab-phrase.o \ 131 gtab-dbg.o \ 132 hime-common.o hime-conf.o hime-settings.o \ 133 lang.o locale.o \ 134 pho-dbg.o pho-sym.o pho2pinyin.o \ 135 pinyin.o \ 136 util.o 137 138 139ifeq ($(USE_XIM),Y) 140IMdkitLIB = IMdkit/lib/libXimd.a 141CFLAGS += -DUSE_XIM=1 142OBJS += IC.o 143endif 144 145ifeq ($(USE_SYSTEM_TRAY),Y) 146CFLAGS += -DTRAY_ENABLED=1 147OBJS += tray.o tray-double.o 148ifeq ($(GTK),gtk+-2.0) 149OBJS += gdkpixbuf-drawable.o 150endif 151ifeq ($(USE_UNITY_TRAY),Y) 152CFLAGS += -DTRAY_UNITY=1 153OBJS += tray-appindicator.o 154endif 155endif 156 157ifeq ($(USE_I18N),Y) 158CFLAGS += -DHIME_I18N_MESSAGE=1 159endif 160 161ifeq ($(USE_TSIN),Y) 162hime_tsin_o = tsin.o tsin-util.o win0.o win1.o tsin-parse.o 163CFLAGS += -DUSE_TSIN=1 164OBJS += $(hime_tsin_o) 165endif 166 167# Temporary workaround to turn off Tsin, will be fixed later 168ifeq ($(USE_TSIN),N) 169OBJS += tsin.o tsin-util.o win0.o win1.o tsin-parse.o 170endif 171 172ifeq ($(GIT_HAVE),Y) 173CFLAGS += -DGIT_HASH=\"$(GIT_HASH)\" -DGIT_HAVE=1 174endif 175 176PROGS = hime \ 177 hime-tsd2a32 hime-tsa2d32 hime-phoa2d hime-phod2a \ 178 hime-tslearn hime-setup hime-cin2gtab hime-gtab2cin \ 179 hime-juyin-learn hime-sim2trad hime-gb-toggle hime-message \ 180 hime-gtab-merge hime-tsin2gtab-phrase hime-ts-edit 181 182PROGS_SYM = hime-trad2sim hime-exit hime-sim hime-trad hime-kbm-toggle 183 184PROGS_CV = kbmcv pin-juyin 185 186.SUFFIXES: .c .o .E .pico .cpp 187 188.cpp.o: 189 @echo " $< -> $@" 190 $(CCX) $(CPPFLAGS) $(CFLAGS) -c $< 191.c.o: 192 @echo " $< -> $@" 193 $(CC) $(CPPFLAGS) $(CFLAGS) -c $< 194.c.pico: 195 @echo " $< -> $@" 196 $(CC) $(CPPFLAGS) $(CFLAGS) -c -fpic -o $@ $< 197.cpp.pico: 198 @echo " $< -> $@" 199 $(CCX) $(CPPFLAGS) $(CFLAGS) -c -fpic -o $@ $< 200.c.E: 201 @echo " $< -> $@" 202 $(CC) $(CPPFLAGS) $(CFLAGS) -E -o $@ $< 203.cpp.E: 204 @echo " $< -> $@" 205 $(CCX) $(CPPFLAGS) $(CFLAGS) -E -o $@ $< 206 207.PHONY: all 208all: $(PROGS) $(PROGS_SYM) $(DATA) $(PROGS_CV) 209 $(MAKE) -C modules 210 if [ $(GTK_IM) = 'Y' ]; then $(MAKE) -C gtk-im; fi 211 if [ $(GTK3_IM) = 'Y' ]; then $(MAKE) -C gtk3-im; fi 212 if [ $(QT5_IM) = 'Y' ]; then $(MAKE) -C qt5-im; fi 213 214$(IMdkitLIB): 215 @echo "building $@ ..." 216 $(MAKE) -C IMdkit/lib 217 218im-client/libhime-im-client.so: 219 @echo "building $@ ..." 220 $(MAKE) -C im-client 221 222hime: $(OBJS) $(IMdkitLIB) $(OBJ_IMSRV) 223 @echo "linking $@ ..." 224ifeq ($(FREEBSD), 0) 225 $(CCLD) $(gcc_ld_run_path) -o $@ $(OBJS) $(IMdkitLIB) $(OBJ_IMSRV) \ 226 -lXtst $(LDFLAGS) -L/usr/X11R6/$(LIB) 227else 228 $(CCLD) $(gcc_ld_run_path) -o $@ $(OBJS) $(IMdkitLIB) $(OBJ_IMSRV) \ 229 -lXtst $(LDFLAGS) -L/usr/local/$(LIB) 230endif 231 @rm -f core.* vgcore.* 232 233hime-tslearn: $(OBJS_TSLEARN) im-client/libhime-im-client.so 234 @echo "linking $@ ..." 235 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 236 $(LDFLAGS) 237 238hime-ts-edit: $(OBJS_TS_EDIT) im-client/libhime-im-client.so 239 @echo "linking $@ ..." 240 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 241 $(LDFLAGS) 242 243hime-juyin-learn: $(OBJS_JUYIN_LEARN) 244 @echo "linking $@ ..." 245 $(CCLD) -o $@ $^ $(LDFLAGS) 246 @rm -f core.* 247 248hime-sim2trad: $(OBJS_hime-sim2trad) 249 @echo "linking $@ ..." 250 $(CC) $(gcc_ld_run_path) -o $@ $^ $(LDFLAGS) 251 @rm -f core.* 252 253hime-trad2sim: hime-sim2trad 254 ln -sf hime-sim2trad $@ 255 256hime-setup: $(OBJS_hime_setup) im-client/libhime-im-client.so 257 @echo "linking $@ ..." 258 @rm -f core.* 259 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 260 $(LDFLAGS) 261 262hime-phoa2d: $(OBJS_hime-phoa2d) im-client/libhime-im-client.so 263 @echo "linking $@ ..." 264 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 265 $(LDFLAGS) 266 267hime-phod2a: $(OBJS_hime-phod2a) 268 @echo "linking $@ ..." 269 $(CCLD) -lX11 -o $@ $^ $(LDFLAGS) 270 271hime-tsa2d32: $(OBJS_hime-tsa2d32) im-client/libhime-im-client.so 272 @echo "linking $@ ..." 273 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 274 $(LDFLAGS) 275 276hime-tsd2a32: $(OBJS_hime-tsd2a32) 277 @echo "linking $@ ..." 278 $(CCLD) -o $@ $^ $(LDFLAGS) 279 280hime-cin2gtab: $(OBJS_cin2gtab) 281 @echo "linking $@ ..." 282 $(CCLD) -o $@ $^ $(LDFLAGS) 283 @rm -f data/*.gtab 284 285hime-gtab2cin: $(OBJS_gtab2cin) 286 @echo "linking $@ ..." 287 $(CCLD) -o $@ $^ $(LDFLAGS) 288 289hime-gtab-merge: $(OBJS_gtab_merge) 290 @echo "linking $@ ..." 291 $(CCLD) -o $@ $^ $(LDFLAGS) 292 293kbmcv: $(OBJS_kbmcv) 294 @echo "linking $@ ..." 295 $(CCLD) -o $@ $^ $(LDFLAGS) 296 297hime-gb-toggle: $(OBJS_hime_gb_toggle) im-client/libhime-im-client.so 298 @echo "linking $@ ..." 299 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 300 $(LDFLAGS) 301 302hime-kbm-toggle: hime-gb-toggle 303 ln -sf hime-gb-toggle $@ 304 305hime-exit: hime-gb-toggle 306 ln -sf hime-gb-toggle $@ 307 308hime-trad: hime-gb-toggle 309 ln -sf hime-gb-toggle $@ 310 311hime-sim: hime-gb-toggle 312 ln -sf hime-gb-toggle $@ 313 314hime-message: $(OBJS_hime_message) im-client/libhime-im-client.so 315 @echo "linking $@ ..." 316 $(CCLD) $(gcc_ld_run_path) -o $@ $^ -L./im-client -lhime-im-client \ 317 $(LDFLAGS) 318 319pin-juyin: $(OBJS_pin_juyin) 320 @echo "linking $@ ..." 321 $(CCLD) -o $@ $^ $(LDFLAGS) 322 323hime-tsin2gtab-phrase: $(OBJS_tsin2gtab_phrase) 324 @echo "linking $@ ..." 325 $(CCLD) -o $@ $^ $(LDFLAGS) 326 327.PHONY: install 328install: 329 install -d "$(bindir)" 330 install $(PROGS) "$(bindir)" 331 rm -f "$(bindir)/hime-trad2sim"; ln -sf hime-sim2trad "$(bindir)/hime-trad2sim" 332 rm -f "$(bindir)/hime-exit"; ln -sf hime-gb-toggle "$(bindir)/hime-exit" 333 rm -f "$(bindir)/hime-trad"; ln -sf hime-gb-toggle "$(bindir)/hime-trad" 334 rm -f "$(bindir)/hime-sim"; ln -sf hime-gb-toggle "$(bindir)/hime-sim" 335 rm -f "$(bindir)/hime-kbm-toggle"; ln -sf hime-gb-toggle "$(bindir)/hime-kbm-toggle" 336 install -d "$(himelibdir)" 337 install -d "$(includedir)" 338 install -m 644 im-client/hime-im-client.h im-client/hime-im-client-attr.h "$(includedir)" 339 $(MAKE) -C im-client install 340 $(MAKE) -C modules install 341 if [ $(GTK_IM) = 'Y' ]; then $(MAKE) -C gtk-im install; fi 342 if [ $(GTK3_IM) = 'Y' ]; then $(MAKE) -C gtk3-im install; fi 343 if [ $(QT5_IM) = 'Y' ]; then $(MAKE) -C qt5-im install; fi 344 345.PHONY: uninstall 346uninstall: 347 cd $(bindir) && rm -f $(PROGS) $(PROGS_SYM) 348 cd $(includedir) && rm -f hime-im-client.h hime-im-client-attr.h 349 $(MAKE) -C im-client uninstall 350 $(MAKE) -C modules uninstall 351 if [ $(GTK_IM) = 'Y' ]; then $(MAKE) -C gtk-im uninstall; fi 352 if [ $(GTK3_IM) = 'Y' ]; then $(MAKE) -C gtk3-im uninstall; fi 353 if [ $(QT5_IM) = 'Y' ]; then $(MAKE) -C qt5-im uninstall; fi 354 rmdir --ignore-fail-on-non-empty $(bindir) 355 rmdir --ignore-fail-on-non-empty $(himelibdir) 356 rmdir --ignore-fail-on-non-empty $(includedir) 357 358.PHONY: clean 359clean: 360 @echo "clean up" 361 $(MAKE) -C IMdkit clean 362 $(MAKE) -C im-client clean 363 $(MAKE) -C modules clean 364 if [ $(GTK_IM) = 'Y' ]; then $(MAKE) -C gtk-im clean; fi 365 if [ $(GTK3_IM) = 'Y' ]; then $(MAKE) -C gtk3-im clean; fi 366 if [ $(QT5_IM) = 'Y' ]; then $(MAKE) -C qt5-im clean; fi 367 @rm -f *.o *.E *.db *.pico *.so tags $(PROGS) $(PROGS_CV) \ 368 $(DATA) .depend $(PROGS_SYM) hime.log hime-fedora.spec 369 @find . '(' -name '.ted*' -o -name '*~' -o -name 'core.*' -o -name 'vgcore.*' ')' -exec rm {} \; 370 371.depend: 372 @echo "building $@ ..." 373 $(CCX) $(CPPFLAGS) $(CFLAGS) -MM *.c > $@ 374 375 376include .depend 377