1# Makefile prototype for configure 2# Copyright 2004 Phil Karn, KA9Q 3# May be used under the terms of the GNU Lesser General Public License (LGPL) 4 5# @configure_input@ 6srcdir = @srcdir@ 7prefix = @prefix@ 8exec_prefix=@exec_prefix@ 9VPATH = @srcdir@ 10CC=@CC@ 11LIBS=@MLIBS@ cpu_mode.o fec.o sim.o viterbi27.o viterbi27_port.o viterbi29.o viterbi29_port.o \ 12 viterbi39.o viterbi39_port.o \ 13 viterbi615.o viterbi615_port.o encode_rs_char.o encode_rs_int.o encode_rs_8.o \ 14 decode_rs_char.o decode_rs_int.o decode_rs_8.o \ 15 init_rs_char.o init_rs_int.o ccsds_tab.o \ 16 encode_rs_ccsds.o decode_rs_ccsds.o ccsds_tal.o \ 17 dotprod.o dotprod_port.o \ 18 peakval.o peakval_port.o \ 19 sumsq.o sumsq_port.o 20 21CFLAGS=@CFLAGS@ -I. -Wall @ARCH_OPTION@ 22 23SHARED_LIB=@SH_LIB@ 24 25all: libfec.a $(SHARED_LIB) 26 27test: vtest27 vtest29 vtest39 vtest615 rstest dtest sumsq_test peaktest 28 @echo "Correctness tests:" 29 ./vtest27 -e 3.0 -n 1000 -v 30 ./vtest29 -e 2.5 -n 1000 -v 31 ./vtest39 -e 2.5 -n 1000 -v 32 ./vtest615 -e 1.0 -n 100 -v 33 ./rstest 34 ./dtest 35 ./sumsq_test 36 ./peaktest 37 @echo "Speed tests:" 38 ./vtest27 39 ./vtest29 40 ./vtest39 41 ./vtest615 42 43install: all 44 mkdir -p @libdir@ 45 install -m 644 -p $(SHARED_LIB) libfec.a @libdir@ 46 mkdir -p @includedir@ 47 install -m 644 -p fec.h @includedir@ 48 mkdir -m 0755 -p @mandir@/man3 49 install -m 644 -p simd-viterbi.3 rs.3 dsp.3 @mandir@/man3 50 51peaktest: peaktest.o libfec.a 52 ${CC} -g -o $@ $^ 53 54sumsq_test: sumsq_test.o libfec.a 55 ${CC} -g -o $@ $^ 56 57dtest: dtest.o libfec.a 58 ${CC} -g -o $@ $^ -lm 59 60vtest27: vtest27.o libfec.a 61 ${CC} -g -o $@ $^ -lm 62 63vtest29: vtest29.o libfec.a 64 ${CC} -g -o $@ $^ -lm 65 66vtest39: vtest39.o libfec.a 67 ${CC} -g -o $@ $^ -lm 68 69vtest615: vtest615.o libfec.a 70 ${CC} -g -o $@ $^ -lm 71 72rstest: rstest.o libfec.a 73 ${CC} -g -o $@ $^ 74 75rs_speedtest: rs_speedtest.o libfec.a 76 ${CC} -g -o $@ $^ 77 78# for some reason, the test programs without args segfault on the PPC with -O2 optimization. Dunno why - compiler bug? 79vtest27.o: vtest27.c fec.h 80 ${CC} -g -c $< 81 82vtest29.o: vtest29.c fec.h 83 ${CC} -g -c $< 84 85vtest39.o: vtest39.c fec.h 86 ${CC} -g -c $< 87 88vtest615.o: vtest615.c fec.h 89 ${CC} -g -c $< 90 91libfec.a: $(LIBS) 92 ar rv $@ $^ 93 ranlib libfec.a 94 95# for Darwin 96libfec.dylib: $(LIBS) 97 $(CC) -dynamiclib -install_name $@ -o $@ $^ 98 99# for Linux et al 100libfec.so: $(LIBS) 101 ${CC} -shared -Xlinker -soname=$@ -o $@ -Wl,-whole-archive $^ -Wl,-no-whole-archive -Wl,-z,notext -lc 102 103dotprod.o: dotprod.c fec.h 104 105dotprod_port.o: dotprod_port.c fec.h 106 107viterbi27.o: viterbi27.c fec.h 108 109viterbi27_port.o: viterbi27_port.c fec.h 110 111viterbi29.o: viterbi29.c fec.h 112 113viterbi39.o: viterbi39.c fec.h 114 115viterbi39_port.o: viterbi39_port.c fec.h 116 117viterbi39_sse2.o: viterbi39_sse2.c fec.h 118 119viterbi39_sse.o: viterbi39_sse.c fec.h 120 121viterbi39_mmx.o: viterbi39_mmx.c fec.h 122 123encode_rs_char.o: encode_rs_char.c char.h rs-common.h 124 125encode_rs_int.o: encode_rs_int.c int.h rs-common.h 126 127encode_rs_8.o: encode_rs_8.c fixed.h 128 129encode_rs_av.o: encode_rs_av.c fixed.h 130 131decode_rs_char.o: decode_rs_char.c char.h rs-common.h 132 133decode_rs_int.o: decode_rs_int.c int.h rs-common.h 134 135decode_rs_8.o: decode_rs_8.c fixed.h 136 137init_rs_char.o: init_rs_char.c char.h rs-common.h 138 139init_rs_int.o: init_rs_int.c int.h rs-common.h 140 141ccsds_tab.o: ccsds_tab.c 142 143ccsds_tab.c: gen_ccsds 144 ./gen_ccsds > ccsds_tab.c 145 146gen_ccsds: gen_ccsds.o init_rs_char.o 147 ${CC} -o $@ $^ 148 149gen_ccsds.o: gen_ccsds.c 150 ${CC} $(CFLAGS) -c -o $@ $< 151 152ccsds_tal.o: ccsds_tal.c 153 154ccsds_tal.c: gen_ccsds_tal 155 ./gen_ccsds_tal > ccsds_tal.c 156 157exercise_char.o: exercise.c 158 ${CC} $(CFLAGS) -c -o $@ $< 159 160exercise_int.o: exercise.c 161 ${CC} -DBIGSYM=1 $(CFLAGS) -c -o $@ $< 162 163exercise_8.o: exercise.c 164 ${CC} -DFIXED=1 $(CFLAGS) -c -o $@ $< 165 166exercise_ccsds.o: exercise.c 167 ${CC} -DCCSDS=1 $(CFLAGS) -c -o $@ $< 168 169viterbi27.o: viterbi27.c fec.h 170 171viterbi27_port.o: viterbi27_port.c fec.h 172 173viterbi27_av.o: viterbi27_av.c fec.h 174 175viterbi27_mmx.o: viterbi27_mmx.c fec.h 176 ${CC} $(CFLAGS) -mmmx -c -o $@ $< 177 178viterbi27_sse.o: viterbi27_sse.c fec.h 179 ${CC} $(CFLAGS) -msse -c -o $@ $< 180 181viterbi27_sse2.o: viterbi27_sse2.c fec.h 182 ${CC} $(CFLAGS) -msse2 -c -o $@ $< 183 184viterbi29.o: viterbi29.c fec.h 185 186viterbi29_port.o: viterbi29_port.c fec.h 187 188viterbi29_av.o: viterbi29_av.c fec.h 189 190viterbi29_mmx.o: viterbi29_mmx.c fec.h 191 ${CC} $(CFLAGS) -mmmx -c -o $@ $< 192 193viterbi29_sse.o: viterbi29_sse.c fec.h 194 ${CC} $(CFLAGS) -msse -c -o $@ $< 195 196viterbi29_sse2.o: viterbi29_sse2.c fec.h 197 ${CC} $(CFLAGS) -msse2 -c -o $@ $< 198 199viterbi39.o: viterbi39.c fec.h 200 201viterbi39_port.o: viterbi39_port.c fec.h 202 203viterbi39_av.o: viterbi39_av.c fec.h 204 205viterbi39_mmx.o: viterbi39_mmx.c fec.h 206 ${CC} $(CFLAGS) -mmmx -c -o $@ $< 207 208viterbi39_sse.o: viterbi39_sse.c fec.h 209 ${CC} $(CFLAGS) -msse -c -o $@ $< 210 211viterbi39_sse2.o: viterbi39_sse2.c fec.h 212 ${CC} $(CFLAGS) -msse2 -c -o $@ $< 213 214viterbi615.o: viterbi615.c fec.h 215 216viterbi615_port.o: viterbi615_port.c fec.h 217 218viterbi615_av.o: viterbi615_av.c fec.h 219 220viterbi615_mmx.o: viterbi615_mmx.c fec.h 221 ${CC} $(CFLAGS) -mmmx -c -o $@ $< 222 223viterbi615_sse.o: viterbi615_sse.c fec.h 224 ${CC} $(CFLAGS) -msse -c -o $@ $< 225 226viterbi615_sse2.o: viterbi615_sse2.c fec.h 227 ${CC} $(CFLAGS) -msse2 -c -o $@ $< 228 229cpu_mode.o: cpu_mode.c fec.h 230 231 232clean: 233 rm -f *.o $(SHARED_LIB) *.a rs_speedtest peaktest sumsq_test dtest vtest27 vtest29 vtest39 vtest615 rstest ccsds_tab.c ccsds_tal.c gen_ccsds gen_ccsds_tal core 234 rm -rf autom4te.cache 235 236distclean: clean 237 rm -f config.log config.cache config.status config.h makefile 238 239