mirror of https://github.com/drowe67/LPCNet.git
138 lines
4.4 KiB
Makefile
138 lines
4.4 KiB
Makefile
# Makefile for FreeDV vesion of LPCNet
|
|
|
|
# TODO: 1/ Will this work win corss compiling for Windows?
|
|
# 2/ Should this standardise on just AVX? As machine we run on
|
|
# may be different to machine we build on
|
|
CC=gcc
|
|
CFLAGS+=-Wall -W -Wextra -Wno-unused-function -O3 -g -I../include -MD
|
|
LDFLAGS+=-Lsrc
|
|
AVX2:=$(shell cat /proc/cpuinfo | grep -c avx2)
|
|
AVX:=$(shell cat /proc/cpuinfo | grep -c avx)
|
|
NEON:=$(shell cat /proc/cpuinfo | grep -c neon)
|
|
|
|
ifneq ($(AVX2),0)
|
|
CFLAGS+=-mavx2 -mfma
|
|
else
|
|
# AVX2 machines will also match on AVX
|
|
ifneq ($(AVX),0)
|
|
CFLAGS+=-mavx
|
|
endif
|
|
endif
|
|
|
|
# RPi
|
|
ifneq ($(NEON),0)
|
|
CFLAGS+=-mfpu=neon -march=armv8-a -mtune=cortex-a53
|
|
endif
|
|
|
|
PROG=dump_data test_lpcnet test_vec quant_feat tcodec2_pitch weight tdump quant_test \
|
|
quant2c diff32 quant_enc quant_dec lpcnet_enc lpcnet_dec idct
|
|
all: $(PROG)
|
|
|
|
LIB=./src/liblpcnetfreedv.a
|
|
|
|
# grab latest NN model (or substitute your own)
|
|
src/nnet_data.c src/nnet_data.h:
|
|
wget -N http://rowetel.com/downloads/deep/lpcnet_190215.tgz -O src/lpcnet_190215.tgz
|
|
cd src; tar xzf lpcnet_190215.tgz
|
|
|
|
lpcnet_freedv_objs := src/freq.o src/kiss_fft.o src/celt_lpc.o src/pitch.o src/codec2_pitch.o \
|
|
src/mbest.o src/lpcnet_quant.o src/4stage_pred_vq.o src/lpcnet_dump.o \
|
|
src/4stage_pred_vq.o src/4stage_direct_split_vq.o \
|
|
src/lpcnet.o src/nnet.o src/nnet_data.o
|
|
lpcnet_freedv_deps := $(lpcnet_freedv_objs:.o=.d)
|
|
./src/liblpcnetfreedv.a: $(lpcnet_freedv_objs)
|
|
ar rcs $@ $(lpcnet_freedv_objs)
|
|
-include $(lpcnet_freedv_deps)
|
|
|
|
dump_data_objs := src/dump_data.o
|
|
dump_data_deps := $(dump_data_objs:.o=.d)
|
|
dump_data: $(dump_data_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(dump_data_objs) $(LDFLAGS) -llpcnetfreedv -lm -lcodec2
|
|
-include $dump_data_deps(_deps)
|
|
|
|
tdump_objs := src/tdump.o
|
|
tdump_deps := $(tdump_objs:.o=.d)
|
|
tdump: $(tdump_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(tdump_objs) $(LDFLAGS) -llpcnetfreedv -lm -lcodec2
|
|
-include $tdump_deps(_deps)
|
|
|
|
test_lpcnet_objs := src/test_lpcnet.o
|
|
test_lpcnet_deps := $(test_lpcnet_objs:.o=.d)
|
|
test_lpcnet: $(test_lpcnet_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(test_lpcnet_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(test_lpcnet_deps)
|
|
|
|
test_vec_objs := src/test_vec.o
|
|
test_vec_deps := $(test_vec_objs:.o=.d)
|
|
test_vec: $(test_vec_objs)
|
|
gcc -o $@ $(CFLAGS) $(test_vec_objs) -lm
|
|
-include $(test_vec_deps)
|
|
|
|
quant_feat_objs := src/quant_feat.o
|
|
quant_feat_deps := $(quant_feat_objs:.o=.d)
|
|
quant_feat: $(quant_feat_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(quant_feat_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(quant_feat_deps)
|
|
|
|
quant_test_objs := src/quant_test.o
|
|
quant_test_deps := $(quant_test_objs:.o=.d)
|
|
quant_test: $(quant_test_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(quant_test_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(quant_test_deps)
|
|
|
|
quant_enc_objs := src/quant_enc.o
|
|
quant_enc_deps := $(quant_enc_objs:.o=.d)
|
|
quant_enc: $(quant_enc_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(quant_enc_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(quant_enc_deps)
|
|
|
|
quant_dec_objs := src/quant_dec.o
|
|
quant_dec_deps := $(quant_dec_objs:.o=.d)
|
|
quant_dec: $(quant_dec_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(quant_dec_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(quant_dec_deps)
|
|
|
|
lpcnet_enc_objs := src/lpcnet_enc.o
|
|
lpcnet_enc_deps := $(lpcnet_enc_objs:.o=.d)
|
|
lpcnet_enc: $(lpcnet_enc_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(lpcnet_enc_objs) $(LDFLAGS) -llpcnetfreedv -lm -lcodec2
|
|
-include $(lpcnet_enc_deps)
|
|
|
|
lpcnet_dec_objs := src/lpcnet_dec.o
|
|
lpcnet_dec_deps := $(lpcnet_dec_objs:.o=.d)
|
|
lpcnet_dec: $(lpcnet_dec_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(lpcnet_dec_objs) $(LDFLAGS) -llpcnetfreedv -lm -lcodec2
|
|
-include $(lpcnet_dec_deps)
|
|
|
|
quant2c_objs:= src/quant2c.o
|
|
quan2c_deps := $(quant2c_objs:.o=.d)
|
|
quant2c: $(quant2c_objs)
|
|
gcc -o $@ $(CFLAGS) $(quant2c_objs) -lm
|
|
-include $(quant2c_deps)
|
|
|
|
tcodec2_pitch_objs := src/tcodec2_pitch.o src/codec2_pitch.o
|
|
tcodec2_pitch_deps := $(tcodec2_pitch_objs:.o=.d)
|
|
tcodec2_pitch: $(tcodec2_pitch_objs)
|
|
gcc -o $@ $(CFLAGS) $(tcodec2_pitch_objs) -lm -lcodec2
|
|
-include $(tcodec2_pitch_deps)
|
|
|
|
weight_objs := src/weight.o
|
|
weight_deps := $(weight_objs:.o=.d)
|
|
weight: $(weight_objs)
|
|
gcc -o $@ $(CFLAGS) $(weight_objs) -lm
|
|
-include $(weight_deps)
|
|
|
|
idct_objs := src/idct.o
|
|
idct_deps := $(idct_objs:.o=.d)
|
|
idct: $(idct_objs) $(LIB)
|
|
gcc -o $@ $(CFLAGS) $(idct_objs) $(LDFLAGS) -llpcnetfreedv -lm
|
|
-include $(idct_deps)
|
|
|
|
diff32: src/diff32.c
|
|
gcc -o $@ $(CFLAGS) src/diff32.c -lm
|
|
|
|
clean:
|
|
rm -f $(PROG)
|
|
rm -f src/*.o src/*.d src/*.a
|
|
|