| 1 | topdir=../ |
|---|
| 2 | |
|---|
| 3 | include $(topdir)makefile.inc |
|---|
| 4 | |
|---|
| 5 | CFLAGS+=$(CTHUMB) |
|---|
| 6 | |
|---|
| 7 | # warning: library order matters! |
|---|
| 8 | LDLIBS= -lgcc |
|---|
| 9 | LDOPTS=-nostdlib -Wl,--allow-shlib-undefined -Wl,-T,$(topdir)tools/link-boot.ld |
|---|
| 10 | LDOPTS+=-Wl,-N,-Ttext,$(MEMISOSTART) |
|---|
| 11 | |
|---|
| 12 | all: main.bin |
|---|
| 13 | |
|---|
| 14 | OPT_OBJS= |
|---|
| 15 | ifdef OPT_GAME_REVERSI |
|---|
| 16 | CFLAGS+=-DOPT_GAME_REVERSI |
|---|
| 17 | OPT_OBJS+=gui_reversi.o |
|---|
| 18 | endif |
|---|
| 19 | ifdef OPT_GAME_SOKOBAN |
|---|
| 20 | CFLAGS+=-DOPT_GAME_SOKOBAN |
|---|
| 21 | OPT_OBJS+=gui_sokoban.o |
|---|
| 22 | endif |
|---|
| 23 | ifdef OPT_GAME_CONNECT4 |
|---|
| 24 | CFLAGS+=-DOPT_GAME_CONNECT4 |
|---|
| 25 | OPT_OBJS+=gui_4wins.o |
|---|
| 26 | endif |
|---|
| 27 | ifdef OPT_GAME_MASTERMIND |
|---|
| 28 | CFLAGS+=-DOPT_GAME_MASTERMIND |
|---|
| 29 | OPT_OBJS+=gui_mastermind.o |
|---|
| 30 | endif |
|---|
| 31 | ifdef OPT_CURVES |
|---|
| 32 | CFLAGS+=-DOPT_CURVES |
|---|
| 33 | OPT_OBJS+=curves.o |
|---|
| 34 | endif |
|---|
| 35 | ifdef OPT_TEXTREADER |
|---|
| 36 | CFLAGS+=-DOPT_TEXTREADER |
|---|
| 37 | OPT_OBJS+=gui_read.o |
|---|
| 38 | endif |
|---|
| 39 | ifdef OPT_CALENDAR |
|---|
| 40 | CFLAGS+=-DOPT_CALENDAR |
|---|
| 41 | OPT_OBJS+=gui_calendar.o |
|---|
| 42 | endif |
|---|
| 43 | ifdef OPT_DEBUGGING |
|---|
| 44 | # global in root makefile.inc |
|---|
| 45 | #CFLAGS+=-DOPT_DEBUGGING |
|---|
| 46 | OPT_OBJS+=gui_debug.o gui_bench.o |
|---|
| 47 | endif |
|---|
| 48 | ifdef OPT_EDGEOVERLAY |
|---|
| 49 | CFLAGS+=-DOPT_EDGEOVERLAY |
|---|
| 50 | OPT_OBJS+=edgeoverlay.o |
|---|
| 51 | endif |
|---|
| 52 | ifdef OPT_MD_DEBUG |
|---|
| 53 | CFLAGS+=-DOPT_MD_DEBUG |
|---|
| 54 | endif |
|---|
| 55 | ifdef OPT_SCRIPTING |
|---|
| 56 | OPT_OBJS+=motion_detector.o script.o |
|---|
| 57 | endif |
|---|
| 58 | ifdef OPT_LUA |
|---|
| 59 | OPT_OBJS+=luascript.o |
|---|
| 60 | endif |
|---|
| 61 | ifdef OPT_LUA_CALL_NATIVE |
|---|
| 62 | CFLAGS+=-DOPT_LUA_CALL_NATIVE |
|---|
| 63 | endif |
|---|
| 64 | ifdef OPT_PTP |
|---|
| 65 | # in top level |
|---|
| 66 | #CFLAGS+=-DOPT_PTP |
|---|
| 67 | OPT_OBJS+=ptp.o |
|---|
| 68 | endif |
|---|
| 69 | ifdef OPT_EXMEM_MALLOC |
|---|
| 70 | #CFLAGS+=-DOPT_EXMEM_MALLOC |
|---|
| 71 | OPT_OBJS+=suba.o |
|---|
| 72 | endif |
|---|
| 73 | |
|---|
| 74 | OBJS=entry.o nothumb.o main.o gui_draw.o gui_menu.o gui_palette.o gui_mbox.o \ |
|---|
| 75 | gui_fselect.o gui.o kbd.o action_stack.o conf.o \ |
|---|
| 76 | histogram.o gui_batt.o gui_space.o gui_osd.o raw.o \ |
|---|
| 77 | gui_usb.o gui_lang.o gui_mpopup.o gui_grid.o raw_merge.o \ |
|---|
| 78 | levent.o shot_histogram.o dng.o bitvector.o console.o $(OPT_OBJS) |
|---|
| 79 | |
|---|
| 80 | gui.o: FORCE |
|---|
| 81 | |
|---|
| 82 | FORCE: |
|---|
| 83 | |
|---|
| 84 | nothumb.o: nothumb.c |
|---|
| 85 | @echo $< \-\> $@ |
|---|
| 86 | $(CC) $(CFLAGS) -marm -nostdinc -c -o $@ $< |
|---|
| 87 | |
|---|
| 88 | main.bin: main.elf |
|---|
| 89 | @echo $< \-\> $@ |
|---|
| 90 | $(OBJDUMP) -z -d main.elf > main.dump |
|---|
| 91 | $(OBJCOPY) -O binary main.elf main.bin |
|---|
| 92 | |
|---|
| 93 | main.elf: $(OBJS) $(topdir)platform/$(PLATFORM)/libplatform.a \ |
|---|
| 94 | $(topdir)platform/$(PLATFORM)/sub/$(PLATFORMSUB)/libplatformsub.a \ |
|---|
| 95 | $(topdir)lib/font/libfont.a $(topdir)lib/math/libmath.a \ |
|---|
| 96 | $(topdir)lib/ubasic/libubasic.a $(topdir)lib/lang/liblang.a \ |
|---|
| 97 | $(topdir)lib/lua/liblua.a \ |
|---|
| 98 | $(topdir)lib/armutil/libarmutil.a |
|---|
| 99 | @echo \-\> $@ |
|---|
| 100 | $(CC) $(CFLAGS) -o $@ -Wl,--start-group $^ $(LDLIBS) -Wl,--end-group $(LDFLAGS) $(LDOPTS) |
|---|
| 101 | ( $(NM) $@ | grep ' U ' > $@.syms ) && echo "error: unresolved symbols in $@ (see $@.syms)" && exit 1 || exit 0 |
|---|
| 102 | |
|---|
| 103 | $(SIZE) $@ | tee $(topdir)size.txt |
|---|
| 104 | @printf " %s-%s (%s, #%s): MEMISOSIZE used: 0x%s\n" \ |
|---|
| 105 | $(PLATFORM) $(PLATFORMSUB) $(PLATFORMOS) $(PLATFORMID) \ |
|---|
| 106 | `tail -c16 $(topdir)size.txt | head -c6` >> $(topdir)bin/caminfo.txt |
|---|
| 107 | rm -f $(topdir)size.txt |
|---|
| 108 | |
|---|
| 109 | clean: |
|---|
| 110 | rm -f $(OBJS) main.bin main.elf main.dump main.elf.syms |
|---|
| 111 | |
|---|
| 112 | distclean: clean |
|---|
| 113 | rm -f $(OBJS:.o=.d) |
|---|
| 114 | |
|---|
| 115 | gui_lang.o: gui_lang.c gui_lang.h gui_lang_str.h |
|---|
| 116 | |
|---|
| 117 | ifdef OPT_DEFAULT_LANG |
|---|
| 118 | gui_lang_str.h: $(topdir)tools/makelang$(EXE) $(topdir)CHDK/LANG/english.lng $(topdir)CHDK/LANG/$(OPT_DEFAULT_LANG).lng |
|---|
| 119 | @echo $< \-\> $@ |
|---|
| 120 | $(topdir)tools/makelang$(EXE) $(topdir)CHDK/LANG/english.lng $(topdir)CHDK/LANG/$(OPT_DEFAULT_LANG).lng > gui_lang_str.h |
|---|
| 121 | else |
|---|
| 122 | gui_lang_str.h: $(topdir)tools/makelang$(EXE) $(topdir)CHDK/LANG/english.lng |
|---|
| 123 | @echo $< \-\> $@ |
|---|
| 124 | $(topdir)tools/makelang$(EXE) $(topdir)CHDK/LANG/english.lng > gui_lang_str.h |
|---|
| 125 | endif |
|---|
| 126 | |
|---|
| 127 | include $(topdir)bottom.inc |
|---|