]> bicyclesonthemoon.info Git - klavirko/ui/blob - makefile
Final version as of 23.1.2022
[klavirko/ui] / makefile
1 # Copyright 2022 Balthasar SzczepaƄski
2 #
3 # Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
4 #
5 # 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
6 #
7 # 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
8 #
9 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
10
11 # My replacement for the makefile generated by e2studio
12
13 # PATHS BELOW ARE SPECIFIC TO MY MACHINE,
14 # UPDATE TO WHERE YOUR TOOLCHAIN IS LOCATED
15 # Also it is assumed that rl78-elf-* tools are in PATH
16
17 OBJCOPY := rl78-elf-objcopy
18 LD      := rl78-elf-ld
19 SIZE    := rl78-elf-size
20 GCC     := rl78-elf-gcc
21
22 LIB += \
23 --start-group \
24 -loptm \
25 -loptc \
26 -lgcc \
27 --end-group
28
29 LIB_DIR += \
30 -L"/usr/rl78-elf/rl78-elf/lib/g14" \
31 -L"/usr/rl78-elf/lib/gcc/rl78-elf/4.9.2.201604-GNURL78/g14"
32
33 OPTLIB_INC := -I "/usr/rl78-elf/rl78-elf/optlibinc"
34
35 OPT_STACK    := -Wstack-usage=312
36 OPT_PLATFORM := -mg14
37
38 OPT_D_C := -x c -nostdinc $(OPTLIB_INC) $(OPT_STACK) $(OPT_PLATFORM)
39 OPT_O_C := -c $(OPT_D_C)
40 # OPT_D_C := -x assembler-with-cpp -nostdinc $(OPTLIB_INC) $(OPT_STACK) $(OPT_PLATFORM)
41 OPT_D_ASM := -x assembler -nostdinc $(OPTLIB_INC) $(OPT_STACK) $(OPT_PLATFORM)
42 OPT_O_ASM := -c $(OPT_D_ASM)
43
44 GCC_TOOL := gcc
45 OPT_TOOL := -Wall
46 LIB_M    := -lm
47 LIB_IL   := -lIL
48 RM       := rm -rf
49
50 HEX += \
51 klavirko-ui.hex \
52 klavirko-ui.mot 
53
54 OUT += \
55 klavirko-ui.x
56
57 OBJS += \
58 interrupt_handlers.o \
59 reset_program.o \
60 vector_table.o \
61 main.o \
62 aix.o \
63 lcd.o \
64 gui.o \
65 wave.o \
66 ctrl.o \
67 fs.o \
68 debug.o
69
70 CLEAN += \
71         $(OBJS) \
72         $(OUT) \
73         $(HEX) \
74         *.lst \
75         *.map \
76         *.x \
77         *.o \
78         *.d \
79         font.h \
80         sinus.h \
81         img2fnt \
82         sinus \
83         memory.ld \
84         size.tmp \
85
86
87 all: $(OUT) $(HEX)
88         @echo 'complete'
89
90 clean:
91         $(RM) $(CLEAN)
92
93
94 klavirko-ui.hex: klavirko-ui.x
95         $(OBJCOPY) -O ihex klavirko-ui.x klavirko-ui.hex
96
97 klavirko-ui.mot: klavirko-ui.x
98         $(OBJCOPY) -O srec klavirko-ui.x klavirko-ui.mot
99
100 klavirko-ui.x: $(OBJS) memory.ld LinkerSubCommand.tmp
101         $(LD) -o klavirko-ui.x -T"memory.ld" @"LinkerSubCommand.tmp" -M=klavirko-ui.map $(LIB_DIR) $(LIB) -e_PowerON_Reset
102
103
104 memory.ld: metalinker.pl memory_template.ld size.tmp LinkerSubCommand.tmp
105         ./metalinker.pl LinkerSubCommand.tmp size.tmp <memory_template.ld >memory.ld
106
107 size.tmp: $(OBJS)
108         $(SIZE) $(OBJS) -A > size.tmp
109
110
111 reset_program.o: reset_program.asm
112         $(GCC) -MM -MP -MF reset_program.o -MT reset_program.o -MT reset_program.d $(OPT_D_ASM) reset_program.asm
113         $(GCC) -Wa,-adlhn=reset_program.lst -o reset_program.o $(OPT_O_ASM) reset_program.asm
114
115 interrupt_handlers.o: interrupt_handlers.c interrupt_handlers.h aix.h fs.h gui.h main.h ctrl.h
116         $(GCC) -MM -MP -MF interrupt_handlers.o -MT interrupt_handlers.o -MT interrupt_handlers.d $(OPT_D_C) interrupt_handlers.c
117         $(GCC) -Wa,-adlhn=interrupt_handlers.lst -o interrupt_handlers.o $(OPT_O_C) interrupt_handlers.c
118
119 vector_table.o: vector_table.c interrupt_handlers.h aix.h ctrl.h gui.h lcd.h
120         $(GCC) -MM -MP -MF vector_table.o -MT vector_table.o -MT vector_table.d $(OPT_D_C) vector_table.c
121         $(GCC) -Wa,-adlhn=vector_table.lst -o vector_table.o $(OPT_O_C) vector_table.c
122         
123 main.o: main.c main.h aix.h lcd.h gui.h ctrl.h fs.h
124         $(GCC) -MM -MP -MF main.o -MT main.o -MT main.d $(OPT_D_C) main.c
125         $(GCC) -Wa,-adlhn=main.lst -o main.o $(OPT_O_C) main.c
126         
127 aix.o: aix.c aix.h debug.h wave.h gui.h
128         $(GCC) -MM -MP -MF aix.o -MT aix.o -MT aix.d $(OPT_D_C) aix.c
129         $(GCC) -Wa,-adlhn=aix.lst -o aix.o $(OPT_O_C) aix.c
130         
131 lcd.o: lcd.c lcd.h main.h debug.h font.h
132         $(GCC) -MM -MP -MF lcd.o -MT lcd.o -MT lcd.d $(OPT_D_C) lcd.c
133         $(GCC) -Wa,-adlhn=lcd.lst -o lcd.o $(OPT_O_C) lcd.c
134         
135 gui.o: gui.c gui.h debug.h wave.h lcd.h main.h fs.h ctrl.h
136         $(GCC) -MM -MP -MF gui.o -MT gui.o -MT gui.d $(OPT_D_C) gui.c
137         $(GCC) -Wa,-adlhn=gui.lst -o gui.o $(OPT_O_C) gui.c
138         
139 wave.o: wave.c wave.h aix.h debug.h ctrl.h sinus.h
140         $(GCC) -MM -MP -MF wave.o -MT wave.o -MT wave.d $(OPT_D_C) wave.c
141         $(GCC) -Wa,-adlhn=wave.lst -o wave.o $(OPT_O_C) wave.c
142         
143 ctrl.o: ctrl.c ctrl.h wave.h debug.h gui.h
144         $(GCC) -MM -MP -MF ctrl.o -MT ctrl.o -MT ctrl.d $(OPT_D_C) ctrl.c
145         $(GCC) -Wa,-adlhn=ctrl.lst -o ctrl.o $(OPT_O_C) ctrl.c
146         
147 fs.o: fs.c fs.h debug.h main.h gui.h wave.h
148         $(GCC) -MM -MP -MF fs.o -MT fs.o -MT fs.d $(OPT_D_C) fs.c
149         $(GCC) -Wa,-adlhn=fs.lst -o fs.o $(OPT_O_C) fs.c
150         
151 debug.o: debug.c debug.h main.h
152         $(GCC) -MM -MP -MF debug.o -MT debug.o -MT debug.d $(OPT_D_C) debug.c
153         $(GCC) -Wa,-adlhn=debug.lst -o debug.o $(OPT_O_C) debug.c
154
155
156 sinus.h: sinus
157         ./sinus > sinus.h
158
159 font.h: img2fnt font16.png font8.png
160         ./img2fnt FONT8 font8.png > font.h
161         ./img2fnt FONT16 font16.png >> font.h
162
163
164 sinus: sinus.c
165         $(GCC_TOOL) $(OPT_TOOL) $(LIB_M) -o sinus sinus.c
166
167 img2fnt: img2fnt.c
168         $(GCC_TOOL) $(OPT_TOOL) $(LIB_IL) -o img2fnt img2fnt.c
169
170
171 .PHONY: all clean
172 # What is secondary? Please explain.
173 .SECONDARY: