-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathMakefile
204 lines (159 loc) · 5.29 KB
/
Makefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
# Makefile for HamClock on linux or macos
# type make help for possible targets
# HamClock can be built for 16 or 32 bit frame buffers. Default is 32, add following define for 16:
# -D_16BIT_FB
# always runs these non-file targets
.PHONY: clean clobber help
# build flags common to all options and architectures
CXXFLAGS = -IArduinoLib -I. -g -O2 -Wall -DARDUINO=100 -pthread
LDXXFLAGS = -LArduinoLib -g -pthread
LIBS = -lpthread -larduino
CXX = g++
# macOS does not have X11 by default; this assumes XQuartz has been installed
ifeq ($(shell uname -s), Darwin)
CXXFLAGS += -I/opt/X11/include
LDXXFLAGS += -L/opt/X11/lib
endif
# RPi needs vc support
ifeq ($(shell [ -r /opt/vc ]; echo $$?), 0)
CXXFLAGS += -I/opt/vc/include
LDXXFLAGS += -L/opt/vc/lib
LIBS += -lbcm_host
endif
# FreeBSD needs libgpio
ifeq ($(shell [ -r /usr/include/libgpio.h ]; echo $$?), 0)
LIBS += -lgpio
endif
OBJS = \
UNIXHamClock.o \
BME280.o \
Germano-Bold-16.o \
Germano-Bold-30.o \
Germano-Regular-16.o \
OTAupdate.o \
P13.o \
asknewpos.o \
astro.o \
brightness.o \
calibrate.o \
clocks.o \
cities.o \
color.o \
dxcluster.o \
earthmap.o \
earthsat.o \
gimbal.o \
gpsd.o \
maidenhead.o \
mapmanage.o \
menu.o \
moon_imgs.o \
moonpane.o \
ncdxf.o \
nvram.o \
plot.o \
plotmgmnt.o \
prefixes.o \
radio.o \
runner.o \
santa.o \
selectFont.o \
setup.o \
sphere.o \
stopwatch.o \
touch.o \
tz.o \
webserver.o \
wifi.o \
wx.o
help:
@printf "\nThe following targets are available (as appropriate for your system)\n\n"
@printf " hamclock-800x480 X11 GUI desktop version, AKA hamclock\n"
@printf " hamclock-1600x960 X11 GUI desktop version, larger, AKA hamclock-big\n"
@printf " hamclock-2400x1440 X11 GUI desktop version, larger yet\n"
@printf " hamclock-3200x1920 X11 GUI desktop version, huge\n"
@printf "\n";
@printf " hamclock-fb0-800x480 RPi stand-alone /dev/fb0, AKA hamclock-fb0-small\n"
@printf " hamclock-fb0-1600x960 RPi stand-alone /dev/fb0, larger, AKA hamclock-fb0\n"
@printf " hamclock-fb0-2400x1440 RPi stand-alone /dev/fb0, larger yet\n"
@printf " hamclock-fb0-3200x1920 RPi stand-alone /dev/fb0, huge\n"
# remove old objects before building new ones to be sure the proper flags are used
$(OBJS): clean
# X11 versions
# N.B. do it but also remain backward compatable
hamclock-big: hamclock-1600x960
cp $? $@
hamclock: hamclock-800x480
cp $? $@
hamclock-800x480: CXXFLAGS+=-D_USE_X11
hamclock-800x480: LIBS+=-lX11
hamclock-800x480: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-1600x960: CXXFLAGS+=-D_USE_X11 -D_CLOCK_1600x960
hamclock-1600x960: LIBS+=-lX11
hamclock-1600x960: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-2400x1440: CXXFLAGS+=-D_USE_X11 -D_CLOCK_2400x1440
hamclock-2400x1440: LIBS+=-lX11
hamclock-2400x1440: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-3200x1920: CXXFLAGS+=-D_USE_X11 -D_CLOCK_3200x1920
hamclock-3200x1920: LIBS+=-lX11
hamclock-3200x1920: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
# RPi fb0 versions
# N.B. do it but also remain backward compatable
hamclock-fb0-small: hamclock-fb0-800x480
cp $? $@
hamclock-fb0: hamclock-fb0-1600x960
cp $? $@
hamclock-fb0-800x480: CXXFLAGS+=-D_USE_FB0
hamclock-fb0-800x480: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-fb0-1600x960: CXXFLAGS+=-D_USE_FB0 -D_CLOCK_1600x960
hamclock-fb0-1600x960: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-fb0-2400x1440: CXXFLAGS+=-D_USE_FB0 -D_CLOCK_2400x1440
hamclock-fb0-2400x1440: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
hamclock-fb0-3200x1920: CXXFLAGS+=-D_USE_FB0 -D_CLOCK_3200x1920
hamclock-fb0-3200x1920: $(OBJS)
cd ArduinoLib && $(MAKE) libarduino.a "CXXFLAGS=$(CXXFLAGS)"
$(CXX) $(LDXXFLAGS) $(OBJS) -o $@ $(LIBS)
rm -f UNIXHamClock.o UNIXHamClock.cpp
# make UNIXHamClock.o from ESPHamClock.ino
UNIXHamClock.o: ESPHamClock.ino
ln -s ESPHamClock.ino UNIXHamClock.cpp
$(CXX) $(CXXFLAGS) -c -o UNIXHamClock.o UNIXHamClock.cpp
rm -f UNIXHamClock.cpp
install:
@SOURCE=hamclock-*0x*0 ; \
TARGET=/usr/local/bin/hamclock ; \
if ! [ -x $$SOURCE ] ; then \
echo 'make something first' ; \
elif [ `id -un` != 'root' ] ; then \
echo please run with sudo ; \
else \
cp -f $$SOURCE $$TARGET \
&& chown root $$TARGET \
&& chmod u+s $$TARGET \
&& echo $$SOURCE is ready as $$TARGET ; \
fi
clean clobber:
cd ArduinoLib && $(MAKE) clean
touch x.o x.dSYM hamclock hamclock-
rm -rf *.o *.dSYM UNIXHamClock.cpp hamclock hamclock-*