kopia lustrzana https://github.com/sp9skp/spdxl
293 wiersze
7.8 KiB
Makefile
293 wiersze
7.8 KiB
Makefile
#
|
|
# Makefile for dxlAPRS toolchain containing:
|
|
# - afskmodem soundmodem for afsk/fsk up to 19200 bd using Linux OSS
|
|
# - gps2aprs aprs-tracker using some serial gps, produces axudp frames which
|
|
# may be sent with afskmodem
|
|
# - gps2digipos generates a beaconfile for a (mobile) aprs-digi,
|
|
# using some serial GPS
|
|
# - sondeudp soundmodem for RS92 (and other) wx-ballons using Linux OSS,
|
|
# the produced axudp frames are beeing post-processed by sondemod
|
|
# to generate aprs-beacons
|
|
# - sondemod RS92 (and other) wx-ballon decoder (takes data from sondeudp
|
|
# and generates aprs-beacons)
|
|
# - udpbox very powerful aprs-digi and axudp "distributor"
|
|
# - udpgate4 very powerful aprs-igate server (with http-interface)
|
|
# - udpflex interfaces serial stuff like TNC2, TNC3, KISS, RMNC
|
|
# to axudp frames
|
|
# - udphub L2 AX25 switch to process many Packet Radio clients on one
|
|
# single AXUDP interface from Flexnet, XNET, ...
|
|
# - aprsmap powerful APRS viewer based on Openstreetmap
|
|
# ---------------------- common section ---------------------------------------
|
|
HOSTARCH := $(shell uname -m | \
|
|
sed -e s/i.86/x86/ \
|
|
-e s/sun4u/sparc64/ \
|
|
-e s/arm.*/arm/ \
|
|
-e s/sa110/arm/ \
|
|
-e s/ppc64/powerpc/ \
|
|
-e s/ppc/powerpc/ \
|
|
-e s/macppc/powerpc/\
|
|
-e s/sh.*/sh/)
|
|
export HOSTARCH
|
|
|
|
HOSTOS := $(shell uname -s)
|
|
export HOSTOS
|
|
|
|
ifeq ($(HOSTOS),Darwin)
|
|
# Using gcc as symlink to Mac's clan
|
|
GCCVERSION_GE4 := true
|
|
STRIPFLAGS =
|
|
else
|
|
GCCVERSION := $(shell $(CROSS_COMPILE)gcc --version | \
|
|
grep gcc | sed 's/.*gcc (.*) //g' | cut -d '.' -f 1)
|
|
|
|
GCCVERSION_GE4 := $(shell [ $(GCCVERSION) -ge 4 ] && echo true)
|
|
STRIPFLAGS = -s
|
|
endif
|
|
|
|
.SUFFIXES:
|
|
MAKEFLAGS += -r
|
|
|
|
CC = $(CROSS_COMPILE)gcc
|
|
STRIP = $(CROSS_COMPILE)strip
|
|
INCL = .
|
|
ifeq ($(GCCVERSION_GE4),true)
|
|
CDEFS = -Wall \
|
|
-Wno-unused-variable -Wno-parentheses -Wno-pointer-sign \
|
|
-Wno-format -Wno-return-type -Wno-char-subscripts \
|
|
-Wno-uninitialized \
|
|
-Werror=implicit-function-declaration
|
|
else
|
|
CDEFS = -w
|
|
endif
|
|
|
|
ifeq ($(HOSTOS),Darwin)
|
|
CFLAGS = -I$(INCL) -c -O2 -fdata-sections -ffunction-sections -I/usr/X11/include -DMACOS
|
|
LFLAGS = -L/usr/X11/lib -lX11
|
|
else
|
|
CFLAGS = -I$(INCL) -c -O2 -fdata-sections -ffunction-sections
|
|
LFLAGS = -Wl,--gc-sections
|
|
endif
|
|
# ---------------------- armv6 (raspberry pi 1) specific -----------------------
|
|
ifeq ($(PLATFORM), armv6tce)
|
|
EXTLIB = lib_armv6/
|
|
XLIBS = $(EXTLIB)libpng15/libpng.a \
|
|
$(EXTLIB)libz.a \
|
|
$(EXTLIB)libjpeg.a \
|
|
$(EXTLIB)libxcb.so.1 $(EXTLIB)libXdmcp.so.6 $(EXTLIB)libXau.so.6 \
|
|
-L$(EXTLIB) -lXext -lX11
|
|
CFLAGS += -march=armv6zk -mfpu=vfp -mfloat-abi=hard -mcpu=arm1176jzf-s
|
|
CFLAGS += -Ilib_armv6/libpng15/ -I$(EXTLIB) -I.
|
|
LFLAGS +=
|
|
else ifeq ($(PLATFORM), armv6)
|
|
EXTLIB = lib_armv6/
|
|
XLIBS = $(EXTLIB)libpng16/libpng.a \
|
|
$(EXTLIB)libz.a \
|
|
$(EXTLIB)libjpeg.a \
|
|
$(EXTLIB)libxcb.so.1 $(EXTLIB)libXdmcp.so.6 $(EXTLIB)libXau.so.6 \
|
|
-L$(EXTLIB) -lXext -lX11
|
|
CFLAGS += -march=armv6zk -mfpu=vfp -mfloat-abi=hard -mcpu=arm1176jzf-s
|
|
CFLAGS += -Ilib_armv6/libpng16/ -I$(EXTLIB) -I.
|
|
LFLAGS +=
|
|
# ---------------------- armv7hf (bur am335x pp) specific ---------------------
|
|
else ifeq ($(PLATFORM), armv7hf)
|
|
EXTLIB = lib_armv7hf/
|
|
XLIBS = $(EXTLIB)libpng.a \
|
|
$(EXTLIB)libz.a \
|
|
$(EXTLIB)libjpeg.a \
|
|
$(EXTLIB)libxcb.so $(EXTLIB)libXdmcp.so $(EXTLIB)libXau.so \
|
|
-L$(EXTLIB) -lXext -lX11
|
|
CFLAGS += -march=armv7-a -mfpu=neon -mfloat-abi=hard
|
|
CFLAGS += -I$(EXTLIB)
|
|
LFLAGS +=
|
|
# -------------------------- x86_64 specific -----------------------------------
|
|
else ifeq ($(HOSTARCH), x86_64)
|
|
TARGETS = aprsmap-static
|
|
XLIBS = -lpng -ljpeg -lXext -lX11
|
|
APRSMAP_STATIC = aprsmap-$(HOSTARCH)
|
|
ifeq ($(PLATFORM), x86_32)
|
|
CFLAGS += -m32
|
|
LFLAGS += -m32
|
|
APRSMAP_STATIC = aprsmap-x86
|
|
endif
|
|
# -------------------------- x86_32 (default) specific ------------------------
|
|
else ifeq ($(HOSTARCH), x86)
|
|
TARGETS = aprsmap-static
|
|
EXTLIB = /usr/lib/i386-linux-gnu/
|
|
XLIBS = $(EXTLIB)libz.a \
|
|
$(EXTLIB)libjpeg.a \
|
|
-lpng -lXext -lX11
|
|
APRSMAP_STATIC = aprsmap-$(HOSTARCH)
|
|
else
|
|
XLIBS += -lpng -ljpeg -lXext -lX11
|
|
endif
|
|
# ------------------ objects enumeration ------------------
|
|
OBJ_COMMON = \
|
|
Select.o \
|
|
aprspos.o \
|
|
aprsstr.o \
|
|
osic.o \
|
|
osi.o \
|
|
soundctl.o \
|
|
tcp.o \
|
|
udp.o
|
|
|
|
OBJ_AFSKMODEM = \
|
|
afskmodem.o \
|
|
afskmodemptt.o
|
|
|
|
OBJ_GPS2APRS = gps2aprs.o
|
|
OBJ_GPS2DIGIPOS = gps2digipos.o
|
|
|
|
OBJ_SONDEMOD = \
|
|
geodesy.o \
|
|
gps.o \
|
|
gpspos.o \
|
|
navigation.o \
|
|
rinex.o \
|
|
sem.o \
|
|
sondeaprs.o \
|
|
time_conversion.o \
|
|
yuma.o \
|
|
sondemod.o
|
|
|
|
OBJ_SONDEUDP = sondeudp.o \
|
|
rsc.o \
|
|
rsc_decode.o
|
|
|
|
OBJ_UDPBOX = udpbox.o
|
|
OBJ_UDPGATE4 = udpgate4.o
|
|
OBJ_UDPFLEX = udpflex.o
|
|
OBJ_UDPHUB = udphub.o
|
|
OBJ_APRSMAP = \
|
|
aprsdecode.o \
|
|
aprsmap.o \
|
|
aprstat.o \
|
|
aprstext.o \
|
|
beep.o \
|
|
maptool.o \
|
|
pngread.o \
|
|
pngwrite.o \
|
|
jpgdec.o \
|
|
useri.o \
|
|
xosi.o
|
|
|
|
OBJ_SDRTST = tcpb.o sdr.o sdrtest.o
|
|
OBJ_SDRRADIO = tcpb.o sdr.o radio.o
|
|
OBJ_L2CAT = l2.o frameio.o deflate.o Execlogin.o cleanup.o l2cat.o
|
|
OBJ_ADSB2APRS = adsb2aprs.o tcpb.o
|
|
|
|
TARGETS += \
|
|
afskmodem \
|
|
gps2aprs \
|
|
gps2digipos \
|
|
udpbox \
|
|
udpgate4 \
|
|
udpflex \
|
|
udphub \
|
|
sondemod \
|
|
sondeudp \
|
|
aprsmap \
|
|
sdrtst \
|
|
sdrradio \
|
|
adsb2aprs
|
|
|
|
ifneq ($(HOSTOS), Darwin)
|
|
TARGETS += l2cat
|
|
endif
|
|
|
|
OBJS = \
|
|
$(OBJ_COMMON) \
|
|
$(OBJ_AFSKMODEM) \
|
|
$(OBJ_GPS2APRS) \
|
|
$(OBJ_GPS2DIGIPOS) \
|
|
$(OBJ_SONDEMOD) \
|
|
$(OBJ_SONDEUDP) \
|
|
$(OBJ_UDPBOX) \
|
|
$(OBJ_UDPGATE4) \
|
|
$(OBJ_UDPFLEX) \
|
|
$(OBJ_UDPHUB) \
|
|
$(OBJ_APRSMAP) \
|
|
$(OBJ_SDRTST) \
|
|
$(OBJ_SDRRADIO) \
|
|
$(OBJ_L2CAT) \
|
|
$(OBJ_ADSB2APRS)
|
|
|
|
# ------------------- target make rules -------------------
|
|
# -----------------
|
|
%.o: %.c
|
|
@echo [compiling] $@
|
|
@$(CC) $(CDEFS) $(CFLAGS) -o $@ $<
|
|
|
|
all: $(TARGETS)
|
|
|
|
clean:
|
|
rm -f $(OBJS) $(TARGETS) aprsmap-x86 aprsmap-x86_64
|
|
|
|
afskmodem: $(OBJ_AFSKMODEM) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o afskmodem $(OBJ_COMMON) $(OBJ_AFSKMODEM) -lm
|
|
$(STRIP) afskmodem $(STRIPFLAGS)
|
|
|
|
gps2aprs: $(OBJ_GPS2APRS) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o gps2aprs $(OBJ_COMMON) $(OBJ_GPS2APRS) -lm
|
|
$(STRIP) gps2aprs $(STRIPFLAGS)
|
|
|
|
gps2digipos: $(OBJ_GPS2DIGIPOS) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o gps2digipos $(OBJ_COMMON) $(OBJ_GPS2DIGIPOS) -lm
|
|
$(STRIP) gps2digipos $(STRIPFLAGS)
|
|
|
|
sondemod: $(OBJ_SONDEMOD) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o sondemod $(OBJ_COMMON) $(OBJ_SONDEMOD) -lm -L/usr/lib/i386-linux-gnu -lssl -lcrypto -lcurl
|
|
$(STRIP) sondemod $(STRIPFLAGS)
|
|
|
|
sondeudp: $(OBJ_SONDEUDP) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o sondeudp $(OBJ_COMMON) $(OBJ_SONDEUDP) -lm
|
|
$(STRIP) sondeudp $(STRIPFLAGS)
|
|
|
|
udpbox: $(OBJ_UDPBOX) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o udpbox $(OBJ_COMMON) $(OBJ_UDPBOX) -lm
|
|
$(STRIP) udpbox $(STRIPFLAGS)
|
|
|
|
udpgate4: $(OBJ_UDPGATE4) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o udpgate4 $(OBJ_COMMON) $(OBJ_UDPGATE4) -lm
|
|
$(STRIP) udpgate4 $(STRIPFLAGS)
|
|
|
|
udpflex: $(OBJ_UDPFLEX) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o udpflex $(OBJ_COMMON) $(OBJ_UDPFLEX) -lm
|
|
$(STRIP) udpflex $(STRIPFLAGS)
|
|
|
|
udphub: $(OBJ_UDPHUB) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o udphub $(OBJ_COMMON) $(OBJ_UDPHUB) -lm
|
|
$(STRIP) udphub $(STRIPFLAGS)
|
|
|
|
aprsmap-static: $(OBJ_APRSMAP) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o $(APRSMAP_STATIC) $(OBJ_APRSMAP) $(OBJ_COMMON) \
|
|
$(XLIBS) -lpthread -lxcb -lXau -lXdmcp -lm -lpthread -ldl -lz \
|
|
-static
|
|
$(STRIP) $(APRSMAP_STATIC) $(STRIPFLAGS)
|
|
aprsmap : $(OBJ_APRSMAP) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o aprsmap $(OBJ_APRSMAP) $(OBJ_COMMON) $(XLIBS) -lm
|
|
$(STRIP) aprsmap $(STRIPFLAGS)
|
|
aprsmap-cleanobj:
|
|
rm -f $(OBJ_APRSMAP) $(OBJ_COMMON)
|
|
|
|
sdrtst : $(OBJ_SDRTST) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o sdrtst $(OBJ_SDRTST) $(OBJ_COMMON) -lm
|
|
$(STRIP) sdrtst $(STRIPFLAGS)
|
|
|
|
sdrradio : $(OBJ_SDRRADIO) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o sdrradio $(OBJ_SDRRADIO) $(OBJ_COMMON) -lm
|
|
$(STRIP) sdrradio $(STRIPFLAGS)
|
|
|
|
l2cat : $(OBJ_L2CAT) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o l2cat $(OBJ_L2CAT) $(OBJ_COMMON) -lm
|
|
$(STRIP) l2cat $(STRIPFLAGS)
|
|
|
|
adsb2aprs: $(OBJ_ADSB2APRS) $(OBJ_COMMON)
|
|
$(CC) $(LFLAGS) -o adsb2aprs $(OBJ_ADSB2APRS) $(OBJ_COMMON) -lm
|
|
$(STRIP) adsb2aprs $(STRIPFLAGS)
|
|
|
|
diag:
|
|
echo $(HOSTARCH)
|
|
|
|
# end of makefile
|