Browse Source

Imported Upstream version 2.39

master
Bernd Zeimetz 11 years ago
parent
commit
d0d4a00277
100 changed files with 14099 additions and 5810 deletions
  1. +15
    -5
      INSTALL
  2. +169
    -104
      Makefile.am
  3. +289
    -225
      Makefile.in
  4. +18
    -2
      NEWS
  5. +69
    -5
      TODO
  6. +38
    -23
      bits.c
  7. +11
    -28
      cgps.c
  8. +0
    -280
      cgpxlogger.c
  9. +2963
    -2588
      configure
  10. +115
    -18
      configure.ac
  11. +28
    -0
      contrib/Makefile
  12. +459
    -0
      contrib/Makefile.in
  13. +45
    -0
      contrib/README
  14. +172
    -0
      contrib/ashctl.c
  15. +78
    -0
      contrib/binlog.c
  16. +167
    -0
      contrib/binreplay.c
  17. +101
    -0
      contrib/lla2ecef.c
  18. +42
    -0
      contrib/maxsats.pl
  19. +209
    -0
      contrib/motosend.c
  20. +264
    -0
      contrib/skyview.php
  21. +0
    -255
      display.c
  22. +0
    -12
      display.h
  23. +678
    -0
      driver_aivdm.c
  24. +103
    -80
      driver_evermore.c
  25. +85
    -46
      driver_garmin.c
  26. +1
    -0
      driver_garmin_txt.c
  27. +84
    -78
      driver_italk.c
  28. +3
    -1
      driver_italk.h
  29. +100
    -91
      driver_navcom.c
  30. +79
    -57
      driver_nmea.c
  31. +55
    -35
      driver_proto.c
  32. +2
    -2
      driver_rtcm2.c
  33. +1
    -1
      driver_rtcm2.h
  34. +779
    -0
      driver_rtcm3.c
  35. +75
    -87
      driver_sirf.c
  36. +121
    -78
      driver_superstar2.c
  37. +59
    -0
      driver_superstar2.h
  38. +99
    -89
      driver_tsip.c
  39. +105
    -50
      driver_ubx.c
  40. +17
    -1
      driver_ubx.h
  41. +65
    -41
      driver_zodiac.c
  42. +198
    -184
      drivers.c
  43. +66
    -58
      gps.1
  44. +170
    -51
      gps.h
  45. +4
    -1
      gps.py
  46. +103
    -65
      gps.xml
  47. +12
    -8
      gpscap.ini
  48. +6
    -6
      gpscat
  49. +3
    -3
      gpscat.1
  50. +14
    -7
      gpsctl.1
  51. +194
    -72
      gpsctl.c
  52. +32
    -13
      gpsctl.xml
  53. +48
    -11
      gpsd.8
  54. +134
    -57
      gpsd.c
  55. +51
    -31
      gpsd.h-tail
  56. +41
    -0
      gpsd.rules
  57. +105
    -24
      gpsd.xml
  58. +9
    -0
      gpsd_config.h.in
  59. +2
    -28
      gpsd_dbus.c
  60. +1
    -1
      gpsd_report.c
  61. +166
    -0
      gpsdclient.c
  62. +25
    -0
      gpsdclient.h
  63. +120
    -0
      gpsdecode.1
  64. +41
    -11
      gpsdecode.c
  65. +176
    -0
      gpsdecode.xml
  66. +40
    -40
      gpsfake.1
  67. +6
    -5
      gpsfake.xml
  68. +35
    -28
      gpsflash.1
  69. +196
    -0
      gpsmon.1
  70. +889
    -0
      gpsmon.c
  71. +34
    -0
      gpsmon.h
  72. +352
    -0
      gpsmon.xml
  73. +15
    -3
      gpspipe.1
  74. +13
    -29
      gpspipe.c
  75. +15
    -1
      gpspipe.xml
  76. +69
    -42
      gpsprof.1
  77. +371
    -165
      gpxlogger.c
  78. +4
    -2
      hex.c
  79. +157
    -178
      lcdgps.c
  80. +13
    -4
      libgps.3
  81. +99
    -124
      libgps.c
  82. +10
    -3
      libgps.xml
  83. +53
    -43
      libgpsd.3
  84. +0
    -5
      libgpsd.xml
  85. +19
    -72
      libgpsd_core.c
  86. +26
    -20
      libgpsmm.3
  87. +0
    -101
      mkgmtime_test.c
  88. +259
    -0
      monitor_italk.c
  89. +462
    -0
      monitor_nmea.c
  90. +159
    -0
      monitor_proto.c
  91. +711
    -0
      monitor_sirf.c
  92. +121
    -0
      monitor_superstar2.c
  93. +213
    -0
      monitor_ubx.c
  94. +7
    -0
      packaging/etc_default_gpsd
  95. +73
    -0
      packaging/etc_init.d_gpsd
  96. +88
    -0
      packaging/etc_init.d_gpsd_rpm
  97. +26
    -12
      packaging/gpsd.spec
  98. +25
    -11
      packaging/gpsd.spec.in
  99. +36
    -0
      packaging/gpsd.spec.in.rej
  100. +19
    -9
      packet.c

+ 15
- 5
INSTALL View File

@@ -12,6 +12,13 @@ X windows + lesstif -> two test clients depend on this
ncurses -> two more test clients depend on this
Python -> most of the test and profiling tools are in Python

For building from SVN, or if you change the man page source, xslt and
docbook xsl style files are used to generate nroff -man source from
docbook xml. The following packages are used in this process:

libxslt -> xsltproc is used to build man pages from xml
docbook-xsl -> style file for xml to man translation

The build degrades gracefully in the absence of any of these. You should
be able to tell from configure messages which extensions you will get.

@@ -115,7 +122,10 @@ undo this.

(You won't need to "make install" if you installed from a binary package.)

9. Check out the list of supported hardware at
9. To enable hotplugging of USB GPSes under Linux, do a 'make udev-install' or
equivalent to put the appropriate udev rules and wrapper files in plases.

10. Check out the list of supported hardware at

http://gpsd.berlios.de/hardware.html

@@ -125,18 +135,18 @@ line to the table. Directions are included on that page.
We can also use updates of the latest version number known to work with
hardware already supported.

10. Note for small embedded systems and those without threading. It is
11. Note for small embedded systems and those without threading. It is
possible to build gpsd without thread support if you configure with
--disable-pps. You'll lose support for updating the clock from PPS pulses.
It's also possible to build without Python via --disable-python, in which
case you'd build won't make Python libraries and "make install" won't
try to install Python tools.

11. Note for systems using DBUS: gpsd includes support for shipping fixes
12. Note for systems using DBUS: gpsd includes support for shipping fixes
as DBUS notifications, but it is not compiled in by default. Configure
with the option "--enable-dbus" to get it working.

12. The distribution includes a PHP script that you can use to
13. The distribution includes a PHP script that you can use to
generate a PHP status page for your GPS. You will need php and php-gd
installed. To install it, copy the file 'gpsd.php' to your HTTP
document directory. The first time it's invoked, it will generate a
@@ -144,7 +154,7 @@ file called 'gpsd_config.inc' containing configuration information;
edit to taste. Note that for the Google Maps feature work you need
to set a valid Google API key in your config file.

13. There are regression tests to verify proper operation of gpsd, and
14. There are regression tests to verify proper operation of gpsd, and
it can be useful to run these to verify that all is well. To run the
regression tests, first build gpsd from sources, and then run "make
testregress". It is not necessary to install first. Python is


+ 169
- 104
Makefile.am View File

@@ -1,5 +1,5 @@
# Automake description for gpsd
# $Id: Makefile.am 5108 2009-01-30 18:30:34Z esr $
# $Id: Makefile.am 5494 2009-03-18 15:16:41Z esr $

#SUBDIRS = contrib

@@ -9,7 +9,7 @@ XMLTO = xmlto
# Conditionally add programs depending on libraries that may or may not be present.
#
if HAVE_NCURSES
CURSESPROGS = cgps sirfmon
CURSESPROGS = cgps gpsmon
endif
if HAVE_MOTIF
MOTIF_PROGS = xgps
@@ -20,18 +20,16 @@ endif

if HAVE_DBUS
INCLUDES = $(DBUS_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_API_SUBJECT_TO_CHANGE=1
DBUSPROGS = gpxlogger
gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm
endif

if HAVE_RTCM104V2
RTCM104PROGS = rtcmdecode
RTCM104PAGES = rtcmdecode.1
RTCM104PROGS = gpsdecode
RTCM104PAGES = gpsdecode.1
endif

bin_PROGRAMS = $(DBUSPROGS) $(MOTIF_PROGS) $(XAW_PROGS) $(RTCM104PROGS) $(CURSESPROGS) gpsctl gpspipe gpsflash cgpxlogger gpsdlcdd
bin_PROGRAMS = $(MOTIF_PROGS) $(XAW_PROGS) $(RTCM104PROGS) $(CURSESPROGS) gpsctl gpspipe gpsflash gpxlogger lcdgps
sbin_PROGRAMS = gpsd
check_PROGRAMS = bits_test gpsmm_test packet_test mkgmtime_test geoid_test
check_PROGRAMS = test_bits test_gpsmm test_packet test_mkgmtime test_geoid
if HAVE_PYTHON
dist_bin_SCRIPTS = gpsprof gpsfake gpscat
python_PYTHON = gps.py gpsfake.py gpscap.py
@@ -42,7 +40,7 @@ endif
#
# Build xgps
#
xgps_SOURCES = display.c display.h xgps.c
xgps_SOURCES = xgps.c
xgps_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(XM_LIBS) $(XT_LIBS) $(X_LIBS) $(X_PRE_LIBS) libgps.la -lm $(LIBPTHREAD)

#
@@ -65,10 +63,10 @@ cgps_SOURCES = cgps.c
cgps_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build cgpxlogger
# Build gpxlogger
#
cgpxlogger_SOURCES = cgpxlogger.c
cgpxlogger_LDADD = $(LIBC) $(LIBNSL) $(LIBSOCKET) libgps.la -lm $(LIBPTHREAD)
gpxlogger_SOURCES = gpxlogger.c
gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm

#
# Build gpsd
@@ -90,22 +88,23 @@ gpspipe_SOURCES = gpspipe.c
gpspipe_LDADD = $(DBUS_LIBS) $(LIBM) libgps.la -lm

#
# Build gpsdlcdd
# Build lcdgps
#
gpsdlcdd_SOURCES = gpsdlcdd.c
gpsdlcdd_LDADD = $(LIBM) libgps.la -lm
lcdgps_SOURCES = lcdgps.c
lcdgps_LDADD = $(LIBM) libgps.la -lm

#
# Build sirfmon
# Build gpsmon
#
sirfmon_SOURCES = sirfmon.c
sirfmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)
gpsmon_SOURCES = gpsmon.c monitor_nmea.c monitor_sirf.c \
monitor_italk.c monitor_ubx.c monitor_superstar2.c
gpsmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build rtcmdecode
# Build gpsdecode
#
rtcmdecode_SOURCES = rtcmdecode.c
rtcmdecode_LDADD = $(LIBM) libgps.la -lm $(LIBPTHREAD)
gpsdecode_SOURCES = gpsdecode.c
gpsdecode_LDADD = $(LIBM) libgps.la -lm $(LIBPTHREAD)

#
# Build gpsflash
@@ -116,51 +115,51 @@ gpsflash_LDADD = $(LIBM) libgps.la -lm
#
# Build shared libraries
#
libgps_la_LDFLAGS = -version-number 17:0:0
libgps_la_LDFLAGS = -version-number 18:0:0
lib_LTLIBRARIES = libgps.la

libgpsd_c_sources = \
netlib.c \
nmea_parse.c \
serial.c \
libgpsd_core.c \
subframe.c \
ntpshm.c \
libgps.c \
packet.c \
gpsutils.c \
geoid.c \
bits.c \
bsd-base64.c \
crc24q.c \
dgnss.c \
dgpsip.c \
ntrip.c \
sirf.c \
superstar2.c \
report.c \
gpsd_report.c \
gpsutils.c \
geoid.c \
hex.c \
isgps.c \
rtcm2.c \
rtcm3.c \
libgps.c \
gpsdclient.c \
libgpsd_core.c \
netlib.c \
ntpshm.c \
ntrip.c \
packet.c \
serial.c \
srecord.c \
bsd-base64.c \
strl.c \
hex.c \
subframe.c \
drivers.c \
zodiac.c \
ubx.c \
garmin.c \
garmin_txt.c \
tsip.c \
evermore.c \
italk.c \
navcom.c \
bits.c \
crc24q.c
driver_aivdm.c \
driver_evermore.c \
driver_garmin.c \
driver_garmin_txt.c \
driver_italk.c \
driver_navcom.c \
driver_nmea.c \
driver_rtcm2.c \
driver_rtcm3.c \
driver_sirf.c \
driver_superstar2.c \
driver_tsip.c \
driver_ubx.c \
driver_zodiac.c

libgpsd_h_sources = \
italk.h \
bsd-base64.h \
timebase.h \
bits.h \
rtcm2.h \
crc24q.h

BUILT_SOURCES = packet_names.h gpsd.h
@@ -175,7 +174,7 @@ gpsd.h: gpsd.h-head gpsd.h-tail gpsd_config.h
cat $(srcdir)/gpsd.h-tail >>gpsd.h

libgps_la_SOURCES = $(libgpsd_c_sources) $(libgpsd_h_sources) \
rtcm2.h libgpsmm.cpp packet_states.h
driver_rtcm2.h libgpsmm.cpp packet_states.h
nodist_libgps_la_SOURCES = packet_names.h
libgps_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)

@@ -196,40 +195,40 @@ clean-local:
rm -rf build

#
# Build gpsmm_test
# Build test_gpsmm
#
gpsmm_test_SOURCES = gpsmm_test.cpp
gpsmm_test_LDADD = $(LIBC) libgps.la -lm
test_gpsmm_SOURCES = test_gpsmm.cpp
test_gpsmm_LDADD = $(LIBC) libgps.la -lm

#
# Build bits_test tester
# Build test_bits tester
#
bits_test_SOURCES = bits_test.c
bits_test_LDADD = $(LIBC) libgps.la
test_bits_SOURCES = test_bits.c
test_bits_LDADD = $(LIBC) libgps.la

#
# Build packets tester
#
packet_test_SOURCES = packet_test.c
packet_test_LDADD = $(LIBC) libgps.la -lm
test_packet_SOURCES = test_packet.c
test_packet_LDADD = $(LIBC) libgps.la -lm

#
# Build geoid model tester
#
geoid_test_SOURCES = geoid_test.c
geoid_test_LDADD = $(LIBC) libgps.la -lm
test_geoid_SOURCES = test_geoid.c
test_geoid_LDADD = $(LIBC) libgps.la -lm

#
# Build time functions tester
#
mkgmtime_test_SOURCES = mkgmtime_test.c
mkgmtime_test_LDADD = $(LIBC) libgps.la -lm
test_mkgmtime_SOURCES = test_mkgmtime.c
test_mkgmtime_LDADD = $(LIBC) libgps.la -lm

if HAVE_XSLT_PROCESSOR
#
# Create Manpages
#
man_MANS = \
BUILT_MANPAGES = \
gpsd.8 \
gps.1 \
xgps.1 \
@@ -239,7 +238,7 @@ man_MANS = \
libgps.3 \
libgpsmm.3 \
libgpsd.3 \
sirfmon.1 \
gpsmon.1 \
$(RTCM104PAGES) \
$(PYTHONPAGES) \
gpsctl.1 \
@@ -248,6 +247,9 @@ man_MANS = \
rtcm-104.5 \
srec.5

man_MANS = \
$(BUILT_MANPAGES)

.xml.1:
$(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<

@@ -278,11 +280,11 @@ gpsprof.1: gpsprof.xml

gpsfake.1: gpsfake.xml

sirfmon.1: sirfmon.xml
gpsmon.1: gpsmon.xml

gpspipe.1: gpspipe.xml

rtcmdecode.1: rtcmdecode.xml
gpsdecode.1: gpsdecode.xml

rtcm-104.5: rtcm-104.xml

@@ -292,7 +294,9 @@ gpsflash.1: gpsflash.xml

endif

noinst_HEADERS = ubx.h
noinst_HEADERS = driver_italk.h driver_rtcm2.h driver_superstar2.h \
driver_ubx.h gpsmon.h gpsdclient.h

nodist_include_HEADERS = gpsd.h
include_HEADERS = gps.h libgpsmm.h

@@ -305,7 +309,7 @@ EXTRA_DIST = \
NEWS \
AUTHORS \
dgpsip-servers \
floattest.c \
test_float.c \
gpsd.php \
gpsd.xml \
gpsd.h-head \
@@ -317,17 +321,16 @@ EXTRA_DIST = \
gpsprof.xml \
gpsfake.xml \
gpsctl.xml \
sirfmon.xml \
gpsmon.xml \
gpspipe.xml \
rtcmdecode.xml \
gpsdecode.xml \
rtcm-104.xml \
srec.xml \
gpsflash.xml \
$(man_MANS) \
xgps.ad \
xgpsspeed.ad \
gpsd.spec.in \
gpsd.spec \
gpsd.rules \
gpsd.hotplug \
gpsd.usermap \
valgrind-audit \
@@ -335,15 +338,18 @@ EXTRA_DIST = \
gpspacket.c \
gpslib.c \
driver_proto.c \
monitor_proto.c \
logextract \
striplog \
setup.py \
packet_states.h \
libgps.pc.in \
libgpsd.pc.in \
gpscap.ini
gpscap.ini \
contrib/* \
packaging/*

CLEANFILES = $(BUILT_SOURCES) floattest *.core $(PYEXTENSIONS)
CLEANFILES = $(BUILT_SOURCES) test_float *.core $(PYEXTENSIONS) $(BUILT_MANPAGES)

pkgconfig_DATA = libgps.pc libgpsd.pc
pkgconfigdir = $(libdir)/pkgconfig
@@ -365,20 +371,20 @@ splint: gpsd.h packet_names.h
-splint $(SPLINTOPTS) -exportlocal $(xgpsspeed_c_sources)
@echo "Running splint on gpsctl..."
-splint $(SPLINTOPTS) $(gpsctl_SOURCES)
@echo "Running splint on sirfmon..."
-splint $(SPLINTOPTS) $(sirfmon_SOURCES)
@echo "Running splint on gpsmon..."
-splint $(SPLINTOPTS) -exportlocal $(gpsmon_SOURCES)
@echo "Running splint on gpspipe..."
-splint $(SPLINTOPTS) $(gpspipe_SOURCES)
@echo "Running splint on rtcmdecode..."
-splint $(SPLINTOPTS) -exportlocal rtcmdecode.c
@echo "Running splint on gpsdecode..."
-splint $(SPLINTOPTS) -exportlocal gpsdecode.c
@echo "Running splint on gpsflash..."
-splint $(SPLINTOPTS) $(gpsflash_SOURCES)
@echo "Running splint on bits_test test harness..."
-splint $(SPLINTOPTS) $(bits_test_SOURCES)
@echo "Running splint on packet_test test harness..."
-splint $(SPLINTOPTS) $(packet_test_SOURCES)
@echo "Running splint on geoid_test test harness..."
-splint $(SPLINTOPTS) $(geoid_test_SOURCES)
@echo "Running splint on test_bits test harness..."
-splint $(SPLINTOPTS) $(test_bits_SOURCES)
@echo "Running splint on test_packet test harness..."
-splint $(SPLINTOPTS) $(test_packet_SOURCES)
@echo "Running splint on test_geoid test harness..."
-splint $(SPLINTOPTS) $(test_geoid_SOURCES)

# Bogon-checking the Python tools
pychecker:
@@ -416,56 +422,86 @@ gps-makeregress: gpsd
# regress-driver -b test/stable/foo.log

# Regression-test the RTCM decoder.
rtcm-regress: rtcmdecode
rtcm-regress: gpsdecode
@echo "Testing RTCM decoding..."
@mkdir -p test
@for f in $(srcdir)/test/*.rtcm2; do \
echo "Testing $${f}..."; \
$(srcdir)/rtcmdecode <$${f} >test/test.chk; \
$(srcdir)/gpsdecode <$${f} >test/test.chk; \
diff -ub $${f}.chk test/test.chk; \
done; \
rm test/test.chk

# Rebuild the RTCM regression tests.
rtcm-makeregress: rtcmdecode
rtcm-makeregress: gpsdecode
@for f in $(srcdir)/test/*.rtcm2; do \
$(srcdir)/rtcmdecode < $${f} > $${f}.chk; \
$(srcdir)/gpsdecode < $${f} > $${f}.chk; \
done


# Regression-test the AIVDM decoder.
aivdm-regress: gpsdecode
@echo "Testing AIVDM decoding..."
@mkdir -p test
@for f in $(srcdir)/test/*.aivdm; do \
echo "Testing $${f}..."; \
$(srcdir)/gpsdecode <$${f} >test/test.chk; \
diff -ub $${f}.chk test/test.chk; \
done; \
rm test/test.chk

# Rebuild the AIVDM regression tests.
aivdm-makeregress: gpsdecode
@for f in $(srcdir)/test/*.aivdm; do \
$(srcdir)/gpsdecode < $${f} > $${f}.chk; \
done


# Regression-test the packet getter.
packet-regress: packet_test
packet-regress: test_packet
@echo "Testing detection of invalid packets..."
@$(srcdir)/packet_test | diff -u $(srcdir)/test/packet.test.chk -
@$(srcdir)/test_packet | diff -u $(srcdir)/test/packet.test.chk -

# Rebuild the packet-getter regression test
packet-makeregress: packet_test
packet-makeregress: test_packet
@mkdir -p test
$(srcdir)/packet_test >test/packet.test.chk
$(srcdir)/test_packet >test/packet.test.chk

# Regression-test the geoid tester.
geoid-regress: geoid_test
geoid-regress: test_geoid
@echo "Testing the geoid model..."
@$(srcdir)/geoid_test 37.371192 122.014965 | diff -u $(srcdir)/test/geoid.test.chk -
@$(srcdir)/test_geoid 37.371192 122.014965 | diff -u $(srcdir)/test/geoid.test.chk -

# Rebuild the packet-getter regression test
geoid-makeregress: geoid_test
geoid-makeregress: test_geoid
@mkdir -p test
$(srcdir)/geoid_test 37.371192 122.014965 >test/geoid.test.chk
$(srcdir)/test_geoid 37.371192 122.014965 >test/geoid.test.chk

# Test RTCM encoding using passthrough mode.
undump-regress: rtcmdecode
undump-regress: gpsdecode
@echo "Testing RTCM encoding..."
@mkdir -p test
@$(srcdir)/rtcmdecode -p < $(srcdir)/test/undump.sample > test/undump.test
@$(srcdir)/gpsdecode -p < $(srcdir)/test/undump.sample > test/undump.test
@diff -u $(srcdir)/test/undump.sample test/undump.test
@rm test/undump.test

# Regression-test the calendar functions
time_regress: mkgmtime_test
./mkgmtime_test
time-regress: test_mkgmtime
./test_mkgmtime

# Regression test the unpacking code in libgps
unpack-regress: libgps
@echo "Testing the clent sentence unpacker..."
@$(srcdir)/libgps -u >test/test.chk
@diff -u test/unpack.chk test/test.chk

# Build the regressiuin test for the sentence unpacker
unpack-makeregress: libgps
@echo "Rebuilding the clent sentence-unpacker test..."
@$(srcdir)/libgps -u >test/unpack.chk

# Do all normal regression tests
testregress: gps-regress rtcm-regress packet-regress undump-regress time_regress
testregress: gps-regress rtcm-regress aivdm-regress packet-regress undump-regress time-regress unpack-regress
@echo "Regressions complete."

# We would like "${MAKE} check" to run the regression tests. automake
@@ -474,6 +510,27 @@ testregress: gps-regress rtcm-regress packet-regress undump-regress time_regress
# clear how to deal with $(srcdir).
# TESTS=testregress

# Productions for setting up and performing udev tests.
#
# Requires root. Do "udev-install", then "tail -f /var/run/syslog" in
# another window, then run 'make udev-test', then plug and unplug the
# GPS ad libitum. All is well when you get fix reports each time a GPS
# is plugged in.

udev-install:
cp $(srcdir)/gpsd.rules /etc/udev/
ln -sf /etc/udev/gpsd.rules /etc/udev/rules.d/025_gpsd.rules
cp $(srcdir)/gpsd.hotplug /lib/udev/
cp $(srcdir)/gpsd.hotplug.wrapper /lib/udev/
chmod a+x /lib/udev/gpsd.hotplug /lib/udev/gpsd.hotplug.wrapper

udev-uninstall:
rm -f /etc/udev/{gpsd.rules,gpsd.hotplug,gpsd.hotplug.wrapper}
rm -f /etc/udev/rules.d/025_gpsd.rules

udev-test:
$(srcdir)/gpsd -N -F /var/run/gpsd.sock -D 4

#
# Productions for testing unstable drivers.
#
@@ -487,6 +544,13 @@ unstable-makeregress: gpsd

# Release machinery begins here
#

# Make RPM from the specfile in packaging
dist-rpm: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
rpmbuild -ta $(distdir).tar.gz
$(am__remove_distdir)

# This is how to ship a release to Berlios incomoing.
# It requires developer access verified via ssh.
#
@@ -506,3 +570,4 @@ svn-tag:
# Ship a release, providing all regression tests pass.
#
ship: testregress dist upload-ftp svn-tag


+ 289
- 225
Makefile.in View File

@@ -15,7 +15,7 @@
@SET_MAKE@

# Automake description for gpsd
# $Id: Makefile.am 5108 2009-01-30 18:30:34Z esr $
# $Id: Makefile.am 5494 2009-03-18 15:16:41Z esr $

#SUBDIRS = contrib

@@ -42,22 +42,21 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
$(am__EXEEXT_4) $(am__EXEEXT_5) gpsctl$(EXEEXT) \
gpspipe$(EXEEXT) gpsflash$(EXEEXT) cgpxlogger$(EXEEXT) \
gpsdlcdd$(EXEEXT)
$(am__EXEEXT_4) gpsctl$(EXEEXT) gpspipe$(EXEEXT) \
gpsflash$(EXEEXT) gpxlogger$(EXEEXT) lcdgps$(EXEEXT)
sbin_PROGRAMS = gpsd$(EXEEXT)
check_PROGRAMS = bits_test$(EXEEXT) gpsmm_test$(EXEEXT) \
packet_test$(EXEEXT) mkgmtime_test$(EXEEXT) \
geoid_test$(EXEEXT)
check_PROGRAMS = test_bits$(EXEEXT) test_gpsmm$(EXEEXT) \
test_packet$(EXEEXT) test_mkgmtime$(EXEEXT) \
test_geoid$(EXEEXT)
subdir = .
DIST_COMMON = README $(am__configure_deps) \
$(am__dist_bin_SCRIPTS_DIST) $(am__python_PYTHON_DIST) \
$(include_HEADERS) $(noinst_HEADERS) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/gpsd.spec.in \
$(srcdir)/gpsd_config.h.in $(srcdir)/libgps.pc.in \
$(srcdir)/libgpsd.pc.in $(top_srcdir)/configure AUTHORS \
COPYING INSTALL NEWS TODO config.guess config.sub depcomp \
install-sh ltmain.sh missing py-compile
$(srcdir)/Makefile.in $(srcdir)/gpsd_config.h.in \
$(srcdir)/libgps.pc.in $(srcdir)/libgpsd.pc.in \
$(top_srcdir)/configure $(top_srcdir)/packaging/gpsd.spec.in \
AUTHORS COPYING INSTALL NEWS TODO config.guess config.sub \
depcomp install-sh ltmain.sh missing py-compile
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac
am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
@@ -66,7 +65,7 @@ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
configure.lineno config.status.lineno
mkinstalldirs = $(install_sh) -d
CONFIG_HEADER = gpsd_config.h
CONFIG_CLEAN_FILES = gpsd.spec libgps.pc libgpsd.pc
CONFIG_CLEAN_FILES = packaging/gpsd.spec libgps.pc libgpsd.pc
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
am__vpath_adj = case $$p in \
$(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
@@ -86,12 +85,15 @@ am__DEPENDENCIES_1 =
libgps_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
am__objects_1 = netlib.lo nmea_parse.lo serial.lo libgpsd_core.lo \
subframe.lo ntpshm.lo libgps.lo packet.lo gpsutils.lo geoid.lo \
dgnss.lo dgpsip.lo ntrip.lo sirf.lo superstar2.lo report.lo \
isgps.lo rtcm2.lo rtcm3.lo srecord.lo bsd-base64.lo strl.lo \
hex.lo drivers.lo zodiac.lo ubx.lo garmin.lo garmin_txt.lo \
tsip.lo evermore.lo italk.lo navcom.lo bits.lo crc24q.lo
am__objects_1 = bits.lo bsd-base64.lo crc24q.lo dgnss.lo dgpsip.lo \
gpsd_report.lo gpsutils.lo geoid.lo hex.lo isgps.lo libgps.lo \
gpsdclient.lo libgpsd_core.lo netlib.lo ntpshm.lo ntrip.lo \
packet.lo serial.lo srecord.lo strl.lo subframe.lo drivers.lo \
driver_aivdm.lo driver_evermore.lo driver_garmin.lo \
driver_garmin_txt.lo driver_italk.lo driver_navcom.lo \
driver_nmea.lo driver_rtcm2.lo driver_rtcm3.lo driver_sirf.lo \
driver_superstar2.lo driver_tsip.lo driver_ubx.lo \
driver_zodiac.lo
am__objects_2 =
am_libgps_la_OBJECTS = $(am__objects_1) $(am__objects_2) libgpsmm.lo
nodist_libgps_la_OBJECTS =
@@ -100,29 +102,18 @@ libgps_la_OBJECTS = $(am_libgps_la_OBJECTS) \
libgps_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(libgps_la_LDFLAGS) $(LDFLAGS) -o $@
@HAVE_DBUS_TRUE@am__EXEEXT_1 = gpxlogger$(EXEEXT)
@HAVE_MOTIF_TRUE@am__EXEEXT_2 = xgps$(EXEEXT)
@HAVE_XAW_TRUE@am__EXEEXT_3 = xgpsspeed$(EXEEXT)
@HAVE_RTCM104V2_TRUE@am__EXEEXT_4 = rtcmdecode$(EXEEXT)
@HAVE_NCURSES_TRUE@am__EXEEXT_5 = cgps$(EXEEXT) sirfmon$(EXEEXT)
@HAVE_MOTIF_TRUE@am__EXEEXT_1 = xgps$(EXEEXT)
@HAVE_XAW_TRUE@am__EXEEXT_2 = xgpsspeed$(EXEEXT)
@HAVE_RTCM104V2_TRUE@am__EXEEXT_3 = gpsdecode$(EXEEXT)
@HAVE_NCURSES_TRUE@am__EXEEXT_4 = cgps$(EXEEXT) gpsmon$(EXEEXT)
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
am_bits_test_OBJECTS = bits_test.$(OBJEXT)
bits_test_OBJECTS = $(am_bits_test_OBJECTS)
bits_test_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_cgps_OBJECTS = cgps.$(OBJEXT)
cgps_OBJECTS = $(am_cgps_OBJECTS)
cgps_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) libgps.la $(am__DEPENDENCIES_1)
am_cgpxlogger_OBJECTS = cgpxlogger.$(OBJEXT)
cgpxlogger_OBJECTS = $(am_cgpxlogger_OBJECTS)
cgpxlogger_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) libgps.la $(am__DEPENDENCIES_1)
am_geoid_test_OBJECTS = geoid_test.$(OBJEXT)
geoid_test_OBJECTS = $(am_geoid_test_OBJECTS)
geoid_test_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_gpsctl_OBJECTS = gpsctl.$(OBJEXT)
gpsctl_OBJECTS = $(am_gpsctl_OBJECTS)
gpsctl_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la \
@@ -132,38 +123,45 @@ am_gpsd_OBJECTS = $(am__objects_3)
gpsd_OBJECTS = $(am_gpsd_OBJECTS)
gpsd_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
libgps.la $(am__DEPENDENCIES_1)
am_gpsdlcdd_OBJECTS = gpsdlcdd.$(OBJEXT)
gpsdlcdd_OBJECTS = $(am_gpsdlcdd_OBJECTS)
gpsdlcdd_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_gpsdecode_OBJECTS = gpsdecode.$(OBJEXT)
gpsdecode_OBJECTS = $(am_gpsdecode_OBJECTS)
gpsdecode_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la \
$(am__DEPENDENCIES_1)
am_gpsflash_OBJECTS = gpsflash.$(OBJEXT) sirfflash.$(OBJEXT)
gpsflash_OBJECTS = $(am_gpsflash_OBJECTS)
gpsflash_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_gpsmm_test_OBJECTS = gpsmm_test.$(OBJEXT)
gpsmm_test_OBJECTS = $(am_gpsmm_test_OBJECTS)
gpsmm_test_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_gpsmon_OBJECTS = gpsmon.$(OBJEXT) monitor_nmea.$(OBJEXT) \
monitor_sirf.$(OBJEXT) monitor_italk.$(OBJEXT) \
monitor_ubx.$(OBJEXT) monitor_superstar2.$(OBJEXT)
gpsmon_OBJECTS = $(am_gpsmon_OBJECTS)
gpsmon_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
libgps.la $(am__DEPENDENCIES_1)
am_gpspipe_OBJECTS = gpspipe.$(OBJEXT)
gpspipe_OBJECTS = $(am_gpspipe_OBJECTS)
gpspipe_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
libgps.la
gpxlogger_SOURCES = gpxlogger.c
gpxlogger_OBJECTS = gpxlogger.$(OBJEXT)
@HAVE_DBUS_TRUE@gpxlogger_DEPENDENCIES = $(am__DEPENDENCIES_1) \
@HAVE_DBUS_TRUE@ libgps.la
am_mkgmtime_test_OBJECTS = mkgmtime_test.$(OBJEXT)
mkgmtime_test_OBJECTS = $(am_mkgmtime_test_OBJECTS)
mkgmtime_test_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_packet_test_OBJECTS = packet_test.$(OBJEXT)
packet_test_OBJECTS = $(am_packet_test_OBJECTS)
packet_test_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_rtcmdecode_OBJECTS = rtcmdecode.$(OBJEXT)
rtcmdecode_OBJECTS = $(am_rtcmdecode_OBJECTS)
rtcmdecode_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la \
$(am__DEPENDENCIES_1)
am_sirfmon_OBJECTS = sirfmon.$(OBJEXT)
sirfmon_OBJECTS = $(am_sirfmon_OBJECTS)
sirfmon_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
libgps.la $(am__DEPENDENCIES_1)
am_xgps_OBJECTS = display.$(OBJEXT) xgps.$(OBJEXT)
am_gpxlogger_OBJECTS = gpxlogger.$(OBJEXT)
gpxlogger_OBJECTS = $(am_gpxlogger_OBJECTS)
gpxlogger_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_lcdgps_OBJECTS = lcdgps.$(OBJEXT)
lcdgps_OBJECTS = $(am_lcdgps_OBJECTS)
lcdgps_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_test_bits_OBJECTS = test_bits.$(OBJEXT)
test_bits_OBJECTS = $(am_test_bits_OBJECTS)
test_bits_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_test_geoid_OBJECTS = test_geoid.$(OBJEXT)
test_geoid_OBJECTS = $(am_test_geoid_OBJECTS)
test_geoid_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_test_gpsmm_OBJECTS = test_gpsmm.$(OBJEXT)
test_gpsmm_OBJECTS = $(am_test_gpsmm_OBJECTS)
test_gpsmm_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_test_mkgmtime_OBJECTS = test_mkgmtime.$(OBJEXT)
test_mkgmtime_OBJECTS = $(am_test_mkgmtime_OBJECTS)
test_mkgmtime_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_test_packet_OBJECTS = test_packet.$(OBJEXT)
test_packet_OBJECTS = $(am_test_packet_OBJECTS)
test_packet_DEPENDENCIES = $(am__DEPENDENCIES_1) libgps.la
am_xgps_OBJECTS = xgps.$(OBJEXT)
xgps_OBJECTS = $(am_xgps_OBJECTS)
xgps_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
@@ -202,19 +200,18 @@ CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
$(LDFLAGS) -o $@
SOURCES = $(libgps_la_SOURCES) $(nodist_libgps_la_SOURCES) \
$(bits_test_SOURCES) $(cgps_SOURCES) $(cgpxlogger_SOURCES) \
$(geoid_test_SOURCES) $(gpsctl_SOURCES) $(gpsd_SOURCES) \
$(gpsdlcdd_SOURCES) $(gpsflash_SOURCES) $(gpsmm_test_SOURCES) \
$(gpspipe_SOURCES) gpxlogger.c $(mkgmtime_test_SOURCES) \
$(packet_test_SOURCES) $(rtcmdecode_SOURCES) \
$(sirfmon_SOURCES) $(xgps_SOURCES) $(xgpsspeed_SOURCES)
DIST_SOURCES = $(libgps_la_SOURCES) $(bits_test_SOURCES) \
$(cgps_SOURCES) $(cgpxlogger_SOURCES) $(geoid_test_SOURCES) \
$(gpsctl_SOURCES) $(gpsd_SOURCES) $(gpsdlcdd_SOURCES) \
$(gpsflash_SOURCES) $(gpsmm_test_SOURCES) $(gpspipe_SOURCES) \
gpxlogger.c $(mkgmtime_test_SOURCES) $(packet_test_SOURCES) \
$(rtcmdecode_SOURCES) $(sirfmon_SOURCES) $(xgps_SOURCES) \
$(xgpsspeed_SOURCES)
$(cgps_SOURCES) $(gpsctl_SOURCES) $(gpsd_SOURCES) \
$(gpsdecode_SOURCES) $(gpsflash_SOURCES) $(gpsmon_SOURCES) \
$(gpspipe_SOURCES) $(gpxlogger_SOURCES) $(lcdgps_SOURCES) \
$(test_bits_SOURCES) $(test_geoid_SOURCES) \
$(test_gpsmm_SOURCES) $(test_mkgmtime_SOURCES) \
$(test_packet_SOURCES) $(xgps_SOURCES) $(xgpsspeed_SOURCES)
DIST_SOURCES = $(libgps_la_SOURCES) $(cgps_SOURCES) $(gpsctl_SOURCES) \
$(gpsd_SOURCES) $(gpsdecode_SOURCES) $(gpsflash_SOURCES) \
$(gpsmon_SOURCES) $(gpspipe_SOURCES) $(gpxlogger_SOURCES) \
$(lcdgps_SOURCES) $(test_bits_SOURCES) $(test_geoid_SOURCES) \
$(test_gpsmm_SOURCES) $(test_mkgmtime_SOURCES) \
$(test_packet_SOURCES) $(xgps_SOURCES) $(xgpsspeed_SOURCES)
nodist_pythonPYTHON_INSTALL = $(INSTALL_DATA)
am__python_PYTHON_DIST = gps.py gpsfake.py gpscap.py
pythonPYTHON_INSTALL = $(INSTALL_DATA)
@@ -314,7 +311,9 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PYTHON = @PYTHON@
PYTHON_CFLAGS = @PYTHON_CFLAGS@
PYTHON_EXEC_PREFIX = @PYTHON_EXEC_PREFIX@
PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
@@ -399,14 +398,12 @@ XMLTO = xmlto
#
# Conditionally add programs depending on libraries that may or may not be present.
#
@HAVE_NCURSES_TRUE@CURSESPROGS = cgps sirfmon
@HAVE_NCURSES_TRUE@CURSESPROGS = cgps gpsmon
@HAVE_MOTIF_TRUE@MOTIF_PROGS = xgps
@HAVE_XAW_TRUE@XAW_PROGS = xgpsspeed
@HAVE_DBUS_TRUE@INCLUDES = $(DBUS_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_API_SUBJECT_TO_CHANGE=1
@HAVE_DBUS_TRUE@DBUSPROGS = gpxlogger
@HAVE_DBUS_TRUE@gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm
@HAVE_RTCM104V2_TRUE@RTCM104PROGS = rtcmdecode
@HAVE_RTCM104V2_TRUE@RTCM104PAGES = rtcmdecode.1
@HAVE_RTCM104V2_TRUE@RTCM104PROGS = gpsdecode
@HAVE_RTCM104V2_TRUE@RTCM104PAGES = gpsdecode.1
@HAVE_PYTHON_TRUE@dist_bin_SCRIPTS = gpsprof gpsfake gpscat
@HAVE_PYTHON_TRUE@python_PYTHON = gps.py gpsfake.py gpscap.py
@HAVE_PYTHON_TRUE@nodist_python_PYTHON = gpspacket.so gpslib.so
@@ -415,7 +412,7 @@ XMLTO = xmlto
#
# Build xgps
#
xgps_SOURCES = display.c display.h xgps.c
xgps_SOURCES = xgps.c
xgps_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(XM_LIBS) $(XT_LIBS) $(X_LIBS) $(X_PRE_LIBS) libgps.la -lm $(LIBPTHREAD)

#
@@ -440,10 +437,10 @@ cgps_SOURCES = cgps.c
cgps_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build cgpxlogger
# Build gpxlogger
#
cgpxlogger_SOURCES = cgpxlogger.c
cgpxlogger_LDADD = $(LIBC) $(LIBNSL) $(LIBSOCKET) libgps.la -lm $(LIBPTHREAD)
gpxlogger_SOURCES = gpxlogger.c
gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm

#
# Build gpsd
@@ -465,22 +462,24 @@ gpspipe_SOURCES = gpspipe.c
gpspipe_LDADD = $(DBUS_LIBS) $(LIBM) libgps.la -lm

#
# Build gpsdlcdd
# Build lcdgps
#
gpsdlcdd_SOURCES = gpsdlcdd.c
gpsdlcdd_LDADD = $(LIBM) libgps.la -lm
lcdgps_SOURCES = lcdgps.c
lcdgps_LDADD = $(LIBM) libgps.la -lm

#
# Build sirfmon
# Build gpsmon
#
sirfmon_SOURCES = sirfmon.c
sirfmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)
gpsmon_SOURCES = gpsmon.c monitor_nmea.c monitor_sirf.c \
monitor_italk.c monitor_ubx.c monitor_superstar2.c

gpsmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build rtcmdecode
# Build gpsdecode
#
rtcmdecode_SOURCES = rtcmdecode.c
rtcmdecode_LDADD = $(LIBM) libgps.la -lm $(LIBPTHREAD)
gpsdecode_SOURCES = gpsdecode.c
gpsdecode_LDADD = $(LIBM) libgps.la -lm $(LIBPTHREAD)

#
# Build gpsflash
@@ -491,55 +490,55 @@ gpsflash_LDADD = $(LIBM) libgps.la -lm
#
# Build shared libraries
#
libgps_la_LDFLAGS = -version-number 17:0:0
libgps_la_LDFLAGS = -version-number 18:0:0
lib_LTLIBRARIES = libgps.la
libgpsd_c_sources = \
netlib.c \
nmea_parse.c \
serial.c \
libgpsd_core.c \
subframe.c \
ntpshm.c \
libgps.c \
packet.c \
gpsutils.c \
geoid.c \
bits.c \
bsd-base64.c \
crc24q.c \
dgnss.c \
dgpsip.c \
ntrip.c \
sirf.c \
superstar2.c \
report.c \
gpsd_report.c \
gpsutils.c \
geoid.c \
hex.c \
isgps.c \
rtcm2.c \
rtcm3.c \
libgps.c \
gpsdclient.c \
libgpsd_core.c \
netlib.c \
ntpshm.c \
ntrip.c \
packet.c \
serial.c \
srecord.c \
bsd-base64.c \
strl.c \
hex.c \
subframe.c \
drivers.c \
zodiac.c \
ubx.c \
garmin.c \
garmin_txt.c \
tsip.c \
evermore.c \
italk.c \
navcom.c \
bits.c \
crc24q.c
driver_aivdm.c \
driver_evermore.c \
driver_garmin.c \
driver_garmin_txt.c \
driver_italk.c \
driver_navcom.c \
driver_nmea.c \
driver_rtcm2.c \
driver_rtcm3.c \
driver_sirf.c \
driver_superstar2.c \
driver_tsip.c \
driver_ubx.c \
driver_zodiac.c

libgpsd_h_sources = \
italk.h \
bsd-base64.h \
timebase.h \
bits.h \
rtcm2.h \
crc24q.h

BUILT_SOURCES = packet_names.h gpsd.h
libgps_la_SOURCES = $(libgpsd_c_sources) $(libgpsd_h_sources) \
rtcm2.h libgpsmm.cpp packet_states.h
driver_rtcm2.h libgpsmm.cpp packet_states.h

nodist_libgps_la_SOURCES = packet_names.h
libgps_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
@@ -553,39 +552,39 @@ libgps_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
@HAVE_PYTHON_TRUE@noinst_SCRIPTS = gpspacket.so gpslib.so setup.py

#
# Build gpsmm_test
# Build test_gpsmm
#
gpsmm_test_SOURCES = gpsmm_test.cpp
gpsmm_test_LDADD = $(LIBC) libgps.la -lm
test_gpsmm_SOURCES = test_gpsmm.cpp
test_gpsmm_LDADD = $(LIBC) libgps.la -lm

#
# Build bits_test tester
# Build test_bits tester
#
bits_test_SOURCES = bits_test.c
bits_test_LDADD = $(LIBC) libgps.la
test_bits_SOURCES = test_bits.c
test_bits_LDADD = $(LIBC) libgps.la

#
# Build packets tester
#
packet_test_SOURCES = packet_test.c
packet_test_LDADD = $(LIBC) libgps.la -lm
test_packet_SOURCES = test_packet.c
test_packet_LDADD = $(LIBC) libgps.la -lm

#
# Build geoid model tester
#
geoid_test_SOURCES = geoid_test.c
geoid_test_LDADD = $(LIBC) libgps.la -lm
test_geoid_SOURCES = test_geoid.c
test_geoid_LDADD = $(LIBC) libgps.la -lm

#
# Build time functions tester
#
mkgmtime_test_SOURCES = mkgmtime_test.c
mkgmtime_test_LDADD = $(LIBC) libgps.la -lm
test_mkgmtime_SOURCES = test_mkgmtime.c
test_mkgmtime_LDADD = $(LIBC) libgps.la -lm

#
# Create Manpages
#
@HAVE_XSLT_PROCESSOR_TRUE@man_MANS = \
@HAVE_XSLT_PROCESSOR_TRUE@BUILT_MANPAGES = \
@HAVE_XSLT_PROCESSOR_TRUE@ gpsd.8 \
@HAVE_XSLT_PROCESSOR_TRUE@ gps.1 \
@HAVE_XSLT_PROCESSOR_TRUE@ xgps.1 \
@@ -595,7 +594,7 @@ mkgmtime_test_LDADD = $(LIBC) libgps.la -lm
@HAVE_XSLT_PROCESSOR_TRUE@ libgps.3 \
@HAVE_XSLT_PROCESSOR_TRUE@ libgpsmm.3 \
@HAVE_XSLT_PROCESSOR_TRUE@ libgpsd.3 \
@HAVE_XSLT_PROCESSOR_TRUE@ sirfmon.1 \
@HAVE_XSLT_PROCESSOR_TRUE@ gpsmon.1 \
@HAVE_XSLT_PROCESSOR_TRUE@ $(RTCM104PAGES) \
@HAVE_XSLT_PROCESSOR_TRUE@ $(PYTHONPAGES) \
@HAVE_XSLT_PROCESSOR_TRUE@ gpsctl.1 \
@@ -604,7 +603,12 @@ mkgmtime_test_LDADD = $(LIBC) libgps.la -lm
@HAVE_XSLT_PROCESSOR_TRUE@ rtcm-104.5 \
@HAVE_XSLT_PROCESSOR_TRUE@ srec.5

noinst_HEADERS = ubx.h
@HAVE_XSLT_PROCESSOR_TRUE@man_MANS = \
@HAVE_XSLT_PROCESSOR_TRUE@ $(BUILT_MANPAGES)

noinst_HEADERS = driver_italk.h driver_rtcm2.h driver_superstar2.h \
driver_ubx.h gpsmon.h gpsdclient.h

nodist_include_HEADERS = gpsd.h
include_HEADERS = gps.h libgpsmm.h
EXTRA_DIST = \
@@ -616,7 +620,7 @@ EXTRA_DIST = \
NEWS \
AUTHORS \
dgpsip-servers \
floattest.c \
test_float.c \
gpsd.php \
gpsd.xml \
gpsd.h-head \
@@ -628,17 +632,16 @@ EXTRA_DIST = \
gpsprof.xml \
gpsfake.xml \
gpsctl.xml \
sirfmon.xml \
gpsmon.xml \
gpspipe.xml \
rtcmdecode.xml \
gpsdecode.xml \
rtcm-104.xml \
srec.xml \
gpsflash.xml \
$(man_MANS) \
xgps.ad \
xgpsspeed.ad \
gpsd.spec.in \
gpsd.spec \
gpsd.rules \
gpsd.hotplug \
gpsd.usermap \
valgrind-audit \
@@ -646,15 +649,18 @@ EXTRA_DIST = \
gpspacket.c \
gpslib.c \
driver_proto.c \
monitor_proto.c \
logextract \
striplog \
setup.py \
packet_states.h \
libgps.pc.in \
libgpsd.pc.in \
gpscap.ini
gpscap.ini \
contrib/* \
packaging/*

CLEANFILES = $(BUILT_SOURCES) floattest *.core $(PYEXTENSIONS)
CLEANFILES = $(BUILT_SOURCES) test_float *.core $(PYEXTENSIONS) $(BUILT_MANPAGES)
pkgconfig_DATA = libgps.pc libgpsd.pc
pkgconfigdir = $(libdir)/pkgconfig

@@ -721,7 +727,7 @@ $(srcdir)/gpsd_config.h.in: $(am__configure_deps)

distclean-hdr:
-rm -f gpsd_config.h stamp-h1
gpsd.spec: $(top_builddir)/config.status $(srcdir)/gpsd.spec.in
packaging/gpsd.spec: $(top_builddir)/config.status $(top_srcdir)/packaging/gpsd.spec.in
cd $(top_builddir) && $(SHELL) ./config.status $@
libgps.pc: $(top_builddir)/config.status $(srcdir)/libgps.pc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
@@ -819,51 +825,48 @@ clean-sbinPROGRAMS:
echo " rm -f $$p $$f"; \
rm -f $$p $$f ; \
done
bits_test$(EXEEXT): $(bits_test_OBJECTS) $(bits_test_DEPENDENCIES)
@rm -f bits_test$(EXEEXT)
$(LINK) $(bits_test_OBJECTS) $(bits_test_LDADD) $(LIBS)
cgps$(EXEEXT): $(cgps_OBJECTS) $(cgps_DEPENDENCIES)
@rm -f cgps$(EXEEXT)
$(LINK) $(cgps_OBJECTS) $(cgps_LDADD) $(LIBS)
cgpxlogger$(EXEEXT): $(cgpxlogger_OBJECTS) $(cgpxlogger_DEPENDENCIES)
@rm -f cgpxlogger$(EXEEXT)
$(LINK) $(cgpxlogger_OBJECTS) $(cgpxlogger_LDADD) $(LIBS)
geoid_test$(EXEEXT): $(geoid_test_OBJECTS) $(geoid_test_DEPENDENCIES)
@rm -f geoid_test$(EXEEXT)
$(LINK) $(geoid_test_OBJECTS) $(geoid_test_LDADD) $(LIBS)
gpsctl$(EXEEXT): $(gpsctl_OBJECTS) $(gpsctl_DEPENDENCIES)
@rm -f gpsctl$(EXEEXT)
$(LINK) $(gpsctl_OBJECTS) $(gpsctl_LDADD) $(LIBS)
gpsd$(EXEEXT): $(gpsd_OBJECTS) $(gpsd_DEPENDENCIES)
@rm -f gpsd$(EXEEXT)
$(LINK) $(gpsd_OBJECTS) $(gpsd_LDADD) $(LIBS)
gpsdlcdd$(EXEEXT): $(gpsdlcdd_OBJECTS) $(gpsdlcdd_DEPENDENCIES)
@rm -f gpsdlcdd$(EXEEXT)
$(LINK) $(gpsdlcdd_OBJECTS) $(gpsdlcdd_LDADD) $(LIBS)
gpsdecode$(EXEEXT): $(gpsdecode_OBJECTS) $(gpsdecode_DEPENDENCIES)
@rm -f gpsdecode$(EXEEXT)
$(LINK) $(gpsdecode_OBJECTS) $(gpsdecode_LDADD) $(LIBS)
gpsflash$(EXEEXT): $(gpsflash_OBJECTS) $(gpsflash_DEPENDENCIES)
@rm -f gpsflash$(EXEEXT)
$(LINK) $(gpsflash_OBJECTS) $(gpsflash_LDADD) $(LIBS)
gpsmm_test$(EXEEXT): $(gpsmm_test_OBJECTS) $(gpsmm_test_DEPENDENCIES)
@rm -f gpsmm_test$(EXEEXT)
$(CXXLINK) $(gpsmm_test_OBJECTS) $(gpsmm_test_LDADD) $(LIBS)
gpsmon$(EXEEXT): $(gpsmon_OBJECTS) $(gpsmon_DEPENDENCIES)
@rm -f gpsmon$(EXEEXT)
$(LINK) $(gpsmon_OBJECTS) $(gpsmon_LDADD) $(LIBS)
gpspipe$(EXEEXT): $(gpspipe_OBJECTS) $(gpspipe_DEPENDENCIES)
@rm -f gpspipe$(EXEEXT)
$(LINK) $(gpspipe_OBJECTS) $(gpspipe_LDADD) $(LIBS)
gpxlogger$(EXEEXT): $(gpxlogger_OBJECTS) $(gpxlogger_DEPENDENCIES)
@rm -f gpxlogger$(EXEEXT)
$(LINK) $(gpxlogger_OBJECTS) $(gpxlogger_LDADD) $(LIBS)
mkgmtime_test$(EXEEXT): $(mkgmtime_test_OBJECTS) $(mkgmtime_test_DEPENDENCIES)
@rm -f mkgmtime_test$(EXEEXT)
$(LINK) $(mkgmtime_test_OBJECTS) $(mkgmtime_test_LDADD) $(LIBS)
packet_test$(EXEEXT): $(packet_test_OBJECTS) $(packet_test_DEPENDENCIES)
@rm -f packet_test$(EXEEXT)
$(LINK) $(packet_test_OBJECTS) $(packet_test_LDADD) $(LIBS)
rtcmdecode$(EXEEXT): $(rtcmdecode_OBJECTS) $(rtcmdecode_DEPENDENCIES)
@rm -f rtcmdecode$(EXEEXT)
$(LINK) $(rtcmdecode_OBJECTS) $(rtcmdecode_LDADD) $(LIBS)
sirfmon$(EXEEXT): $(sirfmon_OBJECTS) $(sirfmon_DEPENDENCIES)
@rm -f sirfmon$(EXEEXT)
$(LINK) $(sirfmon_OBJECTS) $(sirfmon_LDADD) $(LIBS)
lcdgps$(EXEEXT): $(lcdgps_OBJECTS) $(lcdgps_DEPENDENCIES)
@rm -f lcdgps$(EXEEXT)
$(LINK) $(lcdgps_OBJECTS) $(lcdgps_LDADD) $(LIBS)
test_bits$(EXEEXT): $(test_bits_OBJECTS) $(test_bits_DEPENDENCIES)
@rm -f test_bits$(EXEEXT)
$(LINK) $(test_bits_OBJECTS) $(test_bits_LDADD) $(LIBS)
test_geoid$(EXEEXT): $(test_geoid_OBJECTS) $(test_geoid_DEPENDENCIES)
@rm -f test_geoid$(EXEEXT)
$(LINK) $(test_geoid_OBJECTS) $(test_geoid_LDADD) $(LIBS)
test_gpsmm$(EXEEXT): $(test_gpsmm_OBJECTS) $(test_gpsmm_DEPENDENCIES)
@rm -f test_gpsmm$(EXEEXT)
$(CXXLINK) $(test_gpsmm_OBJECTS) $(test_gpsmm_LDADD) $(LIBS)
test_mkgmtime$(EXEEXT): $(test_mkgmtime_OBJECTS) $(test_mkgmtime_DEPENDENCIES)
@rm -f test_mkgmtime$(EXEEXT)
$(LINK) $(test_mkgmtime_OBJECTS) $(test_mkgmtime_LDADD) $(LIBS)
test_packet$(EXEEXT): $(test_packet_OBJECTS) $(test_packet_DEPENDENCIES)
@rm -f test_packet$(EXEEXT)
$(LINK) $(test_packet_OBJECTS) $(test_packet_LDADD) $(LIBS)
xgps$(EXEEXT): $(xgps_OBJECTS) $(xgps_DEPENDENCIES)
@rm -f xgps$(EXEEXT)
$(LINK) $(xgps_OBJECTS) $(xgps_LDADD) $(LIBS)
@@ -898,60 +901,65 @@ distclean-compile:

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tachometer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bits.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bits_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsd-base64.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgps.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cgpxlogger.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/crc24q.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgnss.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dgpsip.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/display.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_aivdm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_evermore.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_garmin.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_garmin_txt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_italk.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_navcom.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_nmea.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_rtcm2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_rtcm3.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_sirf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_superstar2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_tsip.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_ubx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/driver_zodiac.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/drivers.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/evermore.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garmin.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/garmin_txt.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geoid.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geoid_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsctl.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsd_dbus.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsdlcdd.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsd_report.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsdclient.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsdecode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsflash.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsmm_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsmon.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpspipe.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpsutils.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpxlogger.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hex.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/isgps.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/italk.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lcdgps.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgps.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgpsd_core.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgpsmm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mkgmtime_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/navcom.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor_italk.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor_nmea.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor_sirf.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor_superstar2.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/monitor_ubx.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/netlib.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/nmea_parse.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntpshm.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ntrip.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/packet_test.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/report.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtcm2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtcm3.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rtcmdecode.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/serial.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sirf.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sirfflash.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sirfmon.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srecord.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strl.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/subframe.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/superstar2.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tsip.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ubx.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_bits.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_geoid.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_gpsmm.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_mkgmtime.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/test_packet.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgps.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgpsspeed.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/zodiac.Plo@am__quote@

.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1657,11 +1665,11 @@ clean-local:

@HAVE_XSLT_PROCESSOR_TRUE@gpsfake.1: gpsfake.xml

@HAVE_XSLT_PROCESSOR_TRUE@sirfmon.1: sirfmon.xml
@HAVE_XSLT_PROCESSOR_TRUE@gpsmon.1: gpsmon.xml

@HAVE_XSLT_PROCESSOR_TRUE@gpspipe.1: gpspipe.xml

@HAVE_XSLT_PROCESSOR_TRUE@rtcmdecode.1: rtcmdecode.xml
@HAVE_XSLT_PROCESSOR_TRUE@gpsdecode.1: gpsdecode.xml

@HAVE_XSLT_PROCESSOR_TRUE@rtcm-104.5: rtcm-104.xml

@@ -1683,20 +1691,20 @@ splint: gpsd.h packet_names.h
-splint $(SPLINTOPTS) -exportlocal $(xgpsspeed_c_sources)
@echo "Running splint on gpsctl..."
-splint $(SPLINTOPTS) $(gpsctl_SOURCES)
@echo "Running splint on sirfmon..."
-splint $(SPLINTOPTS) $(sirfmon_SOURCES)
@echo "Running splint on gpsmon..."
-splint $(SPLINTOPTS) -exportlocal $(gpsmon_SOURCES)
@echo "Running splint on gpspipe..."
-splint $(SPLINTOPTS) $(gpspipe_SOURCES)
@echo "Running splint on rtcmdecode..."
-splint $(SPLINTOPTS) -exportlocal rtcmdecode.c
@echo "Running splint on gpsdecode..."
-splint $(SPLINTOPTS) -exportlocal gpsdecode.c
@echo "Running splint on gpsflash..."
-splint $(SPLINTOPTS) $(gpsflash_SOURCES)
@echo "Running splint on bits_test test harness..."
-splint $(SPLINTOPTS) $(bits_test_SOURCES)
@echo "Running splint on packet_test test harness..."
-splint $(SPLINTOPTS) $(packet_test_SOURCES)
@echo "Running splint on geoid_test test harness..."
-splint $(SPLINTOPTS) $(geoid_test_SOURCES)
@echo "Running splint on test_bits test harness..."
-splint $(SPLINTOPTS) $(test_bits_SOURCES)
@echo "Running splint on test_packet test harness..."
-splint $(SPLINTOPTS) $(test_packet_SOURCES)
@echo "Running splint on test_geoid test harness..."
-splint $(SPLINTOPTS) $(test_geoid_SOURCES)

# Bogon-checking the Python tools
pychecker:
@@ -1734,56 +1742,84 @@ gps-makeregress: gpsd
# regress-driver -b test/stable/foo.log

# Regression-test the RTCM decoder.
rtcm-regress: rtcmdecode
rtcm-regress: gpsdecode
@echo "Testing RTCM decoding..."
@mkdir -p test
@for f in $(srcdir)/test/*.rtcm2; do \
echo "Testing $${f}..."; \
$(srcdir)/rtcmdecode <$${f} >test/test.chk; \
$(srcdir)/gpsdecode <$${f} >test/test.chk; \
diff -ub $${f}.chk test/test.chk; \
done; \
rm test/test.chk

# Rebuild the RTCM regression tests.
rtcm-makeregress: rtcmdecode
rtcm-makeregress: gpsdecode
@for f in $(srcdir)/test/*.rtcm2; do \
$(srcdir)/rtcmdecode < $${f} > $${f}.chk; \
$(srcdir)/gpsdecode < $${f} > $${f}.chk; \
done

# Regression-test the AIVDM decoder.
aivdm-regress: gpsdecode
@echo "Testing AIVDM decoding..."
@mkdir -p test
@for f in $(srcdir)/test/*.aivdm; do \
echo "Testing $${f}..."; \
$(srcdir)/gpsdecode <$${f} >test/test.chk; \
diff -ub $${f}.chk test/test.chk; \
done; \
rm test/test.chk

# Rebuild the AIVDM regression tests.
aivdm-makeregress: gpsdecode
@for f in $(srcdir)/test/*.aivdm; do \
$(srcdir)/gpsdecode < $${f} > $${f}.chk; \
done

# Regression-test the packet getter.
packet-regress: packet_test
packet-regress: test_packet
@echo "Testing detection of invalid packets..."
@$(srcdir)/packet_test | diff -u $(srcdir)/test/packet.test.chk -
@$(srcdir)/test_packet | diff -u $(srcdir)/test/packet.test.chk -

# Rebuild the packet-getter regression test
packet-makeregress: packet_test
packet-makeregress: test_packet
@mkdir -p test
$(srcdir)/packet_test >test/packet.test.chk
$(srcdir)/test_packet >test/packet.test.chk

# Regression-test the geoid tester.
geoid-regress: geoid_test
geoid-regress: test_geoid
@echo "Testing the geoid model..."
@$(srcdir)/geoid_test 37.371192 122.014965 | diff -u $(srcdir)/test/geoid.test.chk -
@$(srcdir)/test_geoid 37.371192 122.014965 | diff -u $(srcdir)/test/geoid.test.chk -

# Rebuild the packet-getter regression test
geoid-makeregress: geoid_test
geoid-makeregress: test_geoid
@mkdir -p test
$(srcdir)/geoid_test 37.371192 122.014965 >test/geoid.test.chk
$(srcdir)/test_geoid 37.371192 122.014965 >test/geoid.test.chk

# Test RTCM encoding using passthrough mode.
undump-regress: rtcmdecode
undump-regress: gpsdecode
@echo "Testing RTCM encoding..."
@mkdir -p test
@$(srcdir)/rtcmdecode -p < $(srcdir)/test/undump.sample > test/undump.test
@$(srcdir)/gpsdecode -p < $(srcdir)/test/undump.sample > test/undump.test
@diff -u $(srcdir)/test/undump.sample test/undump.test
@rm test/undump.test

# Regression-test the calendar functions
time_regress: mkgmtime_test
./mkgmtime_test
time-regress: test_mkgmtime
./test_mkgmtime

# Regression test the unpacking code in libgps
unpack-regress: libgps
@echo "Testing the clent sentence unpacker..."
@$(srcdir)/libgps -u >test/test.chk
@diff -u test/unpack.chk test/test.chk

# Build the regressiuin test for the sentence unpacker
unpack-makeregress: libgps
@echo "Rebuilding the clent sentence-unpacker test..."
@$(srcdir)/libgps -u >test/unpack.chk

# Do all normal regression tests
testregress: gps-regress rtcm-regress packet-regress undump-regress time_regress
testregress: gps-regress rtcm-regress aivdm-regress packet-regress undump-regress time-regress unpack-regress
@echo "Regressions complete."

# We would like "${MAKE} check" to run the regression tests. automake
@@ -1792,6 +1828,27 @@ testregress: gps-regress rtcm-regress packet-regress undump-regress time_regress
# clear how to deal with $(srcdir).
# TESTS=testregress

# Productions for setting up and performing udev tests.
#
# Requires root. Do "udev-install", then "tail -f /var/run/syslog" in
# another window, then run 'make udev-test', then plug and unplug the
# GPS ad libitum. All is well when you get fix reports each time a GPS
# is plugged in.

udev-install:
cp $(srcdir)/gpsd.rules /etc/udev/
ln -sf /etc/udev/gpsd.rules /etc/udev/rules.d/025_gpsd.rules
cp $(srcdir)/gpsd.hotplug /lib/udev/
cp $(srcdir)/gpsd.hotplug.wrapper /lib/udev/
chmod a+x /lib/udev/gpsd.hotplug /lib/udev/gpsd.hotplug.wrapper

udev-uninstall:
rm -f /etc/udev/{gpsd.rules,gpsd.hotplug,gpsd.hotplug.wrapper}
rm -f /etc/udev/rules.d/025_gpsd.rules

udev-test:
$(srcdir)/gpsd -N -F /var/run/gpsd.sock -D 4

#
# Productions for testing unstable drivers.
#
@@ -1804,6 +1861,13 @@ unstable-makeregress: gpsd

# Release machinery begins here
#

# Make RPM from the specfile in packaging
dist-rpm: distdir
tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
rpmbuild -ta $(distdir).tar.gz
$(am__remove_distdir)

# This is how to ship a release to Berlios incomoing.
# It requires developer access verified via ssh.
#


+ 18
- 2
NEWS View File

@@ -1,4 +1,20 @@
* Tue Feb 10 Eric S. Raymond <esr@snark.thyrsus.com> - 2.38
* Wed Mar 18 2009 Eric S. Raymond <esr@snark.thyrsus.com> - 2.39
Fixed potential core dump in C client handling of "K" responses.
Made device hotplugging work again; had been broken by changes in udev.
Introduced major and minor API version symbols into the public interfaces.
The sirfmon utility is gone, replaced by gpsmon which does the same
job for multiple GPS types. Fixed a two-year old error in NMEA parsing
that nobody noticed because its only effect was to trash VDOP values from
GSA sentences, and gpsd computes those with an internal error model
when they look wonky. cgpxlogger has been merged into gpxlogger.
Speed-setting commands now allow parity and stop-bit setting if the
GPS chipset and adaptor can support it. Specfile and other packaging
paraphenalia now live in a packaging subdirectory. rtcmdecode becomes
gpsdecode and can now de-armor and dump AIDVM packets. The client
library now work correctly in locales where the decimal separator is
not a period.

* Tue Feb 10 2009 Eric S. Raymond <esr@snark.thyrsus.com> - 2.38
Regression test load for RoyalTek RGM3800 and Blumax GPS-009 added.
Scaling on E error-estimate fields fixed to match O. Listen on
localhost only by default to avoid security problems; this can be
@@ -12,7 +28,7 @@
control channel with the new "&" command. Experimental new driver
for Novatel SuperStarII. The 'g' mode switch command now requires,
and returns, 'rtcm104v2' rather than 'rtcm104'; this is design forward
for when RTCM104v2 is fully working.
for when RTCM104v3 is fully working.

* Sun Feb 17 2008 Chris Kuethe <ckuethe@mail.berlios.de> - 2.37
The C++ bindings, Garmin USB support, and multiple instances of ntp


+ 69
- 5
TODO View File

@@ -1,4 +1,4 @@
$Id: TODO 5047 2009-01-21 08:50:40Z esr $
$Id: TODO 5355 2009-03-04 15:07:01Z esr $

This is the gpsd to-do list. If you're viewing it with Emacs, try
doing Ctl-C Ctl-t and browsing through the outline headers. Ctl-C Ctl-a
@@ -10,6 +10,9 @@ For contribution guidelines and internals documentation, please see
The list of bugs exposed by gpsd in other software has moved to
<http://gpsd.berlios.de/upstream-bugs.html>.

See also the GPSD bug tracker at
<https://developer.berlios.de/bugs/?group_id=2116>

** Bugs in gpsd and its clients:

*** Support for the True North magnetic compass is currently broken
@@ -23,10 +26,33 @@ to reverse his refusal to send us an eval unit.

** To do:

*** Complete and test the speed/parity/stopbit methods in the drivers

These are used for the 'B' command. All work for 8N1.

**** superstar2: not implemented (driver is unfinished)
**** italk: not implemented (but could be)
**** tsip: speed tested, parity and stop-bit switching not tested
**** sirf: speed tested, parity and stop-bit switching not tested
**** evermore: speed tested, rejects parity/stopbit setting
**** ubx: fully implemented, parity and stop-bit switching not tested
**** zodiac: fully implemented, not tested
**** navcom.c: speed tested, rejects parity/stopbit setting

SiRF, UBX, TSIP, and even Zodiac can support non-8N1 modes; these need
to be tested.

*** Support the D-Bus signals recognized by libgypsy

Ian Holmes's Gypsy daemon is a pale shadow of GPSD, but his ideas
about signalling D-Bus client apps only on fix changes are good. We
should support the signal set described here:
<http://gypsy.freedesktop.org/why-not-gpsd.html>.

*** Command to ship RTCM corrections to a specified device

At the moment, if a GPS accepts RTCM corrections and they are
available, gpsd ships them to the device from which the GPS is
available, gpsd ships them to the serial device from which the GPS is
reporting fix data. Some GPSes have auxiliary ports for RTCM;
there should be a (privileged) command to redirect RTCM connections.

@@ -57,7 +83,7 @@ addition to the library. Applications will commonly use the file
descriptor to detect incoming data, and this file descriptor will
change on reconnect.

So I rephrase my wish, and ask for reconnect funcionality in xgps
So I rephrase my wish, and ask for reconnect functionality in xgps
instead. It will make sure the library support reconnects, and also
provide an example for other clients using the library.

@@ -152,8 +178,12 @@ packet-oriented format, rather than a file-oriented format like RINEX.
*** RTCM3 support.

Previous plans for more RTCM2 support seem to have been overtaken by
events, e.g. the world moving to RTCM3. There is an incomplete
decoder which needs to be finished.
events, e.g. the world moving to RTCM3. We have support for analyzing
RTCM3 messages, but it's entirely theoretical - written from the
standard. We need to find a pair of files consisting of a
representative set of RTCM3 sentences and some sort of ASCII dump of
thgem so we can test whether our analyzer gets all the bitfield
boundaries right.

*** Do the research to figure out just what is going on with status bits

@@ -191,6 +221,40 @@ News flash: it develops that the "Navigation receiver warning" is
supposed to indicate a valid fix that has a DOP too high or fails
an elevation test.

*** IPv6 Support

gpsd should have support for IPv6. Steps to get to full IPv6 support
include:

**** Detect IPv6 support and getaddrinfo(3) in configure.ac

This web page may be helpful, but is probably overkill - the world has
gotten simper since then:
http://cvs.deepspace6.net/view/example-ipv6-package/configure.ac?rev=1.2&content-type=text/vnd.viewcvs-markup

**** Change from one listening socket to N

Having multiple sockets will also support future changes to listen on
specific addresses, rather than the -G option for INADDR_ANY instead
of INADDR_LOCAL.

**** If v6 support is present, open both AF_INET and AF_INET6.

If either fails, just skip it. gpsd should run on systems without
"options INET" but with only "options INET6" (BSD) or the Linux
equivalent.

**** In libgps, if getaddrinfo is present, use it instead of gethostbyname.

Loop through all the returned addresses until one works. See telnet
in NetBSD for an example (src/usr.bin/telnet/commands.c).

**** (perhaps) Add a flag to connection libraries to force v4 or v6.

Also add command line flags to force the library flags. Perhaps this
is not necessary; telnet and ntp have this feature but postfix and
sendmail don't seem to.

** Future features (?)

*** Support for more survey / professional / up-scale receivers.


+ 38
- 23
bits.c View File

@@ -1,7 +1,9 @@
/* $Id: bits.c 5498 2009-03-18 17:37:53Z esr $ */
/*
* Bitfield extraction functions. In each, start is a bit index (not a byte
* index) and width is a bit width (bounded above by the bit width of long
* long).
* Bitfield extraction functions. In each, start is a bit index (not
* a byte index) and width is a bit width. The width bounded above by
* the bit width of a long long, which s 64 bits in all standard data
* models for 32- and 64-bit processors.
*
* The sbits() function assumes twos-complement arithmetic.
*/
@@ -14,12 +16,10 @@
#include "gpsd.h"
#endif /* DEBUG */



#define BITS_PER_BYTE 8

unsigned long long ubits(char buf[], unsigned int start, unsigned int width)
/* extract a bitfield from the buffer as an unsigned big-endian long */
/* extract a bitfield from the buffer as an unsigned big-endian long long */
{
unsigned long long fld = 0;
unsigned int i;
@@ -31,23 +31,30 @@ unsigned long long ubits(char buf[], unsigned int start, unsigned int width)
fld |= (unsigned char)buf[i];
}
#ifdef DEBUG
printf("Extracting %d:%d from %s: segment 0x%llx = %lld\n", start, width,
gpsd_hexdump(buf, 12), fld, fld);
#endif /* DEBUG */
(void)printf("%d:%d from %s:\n", start, width, gpsd_hexdump(buf, 32));
#endif

#ifdef DEBUG
(void)printf(" segment=0x%llx,", fld);
#endif /* DEBUG */
end = (start + width) % BITS_PER_BYTE;
if (end != 0) {
fld >>= (BITS_PER_BYTE - end);
#ifdef DEBUG
printf("After downshifting by %d bits: 0x%llx = %lld\n",
BITS_PER_BYTE - end, fld, fld);
#endif /* DEBUG */
(void)printf(" after downshifting by %d bits: 0x%llx",
BITS_PER_BYTE - end, fld);
#endif /* UDEBUG */
}
#ifdef DEBUG
(void)printf(" = %lld\n", fld);
#endif /* UDEBUG */

fld &= ~(0xffffffff << width);
/*@ -shiftimplementation @*/
fld &= ~(-1LL << width);
/*@ +shiftimplementation @*/
#ifdef DEBUG
printf("After selecting out the bottom %u bits: 0x%llx = %lld\n",
width, fld, fld);
(void)printf(" after selecting out the bottom %u bits: 0x%llx = %lld\n",
width, fld, fld);
#endif /* DEBUG */

return fld;
@@ -56,16 +63,24 @@ unsigned long long ubits(char buf[], unsigned int start, unsigned int width)
signed long long sbits(char buf[], unsigned int start, unsigned int width)
/* extract a bitfield from the buffer as a signed big-endian long */
{
unsigned long long un = ubits(buf, start, width);
signed long long fld;
unsigned long long fld = ubits(buf, start, width);

#ifdef SDEBUG
(void)fprintf(stderr, "sbits(%d, %d) extracts %llx\n", start, width, fld);
#endif /* SDEBUG */
/*@ +relaxtypes */
if (un & (1 << width))
fld = -(un & ~(1 << width));
else
fld = (signed long long)un;
return fld;
if (fld & (1 << (width-1))) {
#ifdef SDEBUG
(void)fprintf(stderr, "%llx is signed\n", fld);
#endif /* SDEBUG */
/*@ -shiftimplementation @*/
fld |= (-1LL << (width-1));
/*@ +shiftimplementation @*/
}
#ifdef SDEBUG
(void)fprintf(stderr, "sbits(%d, %d) returns %lld\n", start, width, (signed long long)fld);
#endif /* SDEBUG */
return (signed long long)fld;
/*@ -relaxtypes */
}


+ 11
- 28
cgps.c View File

@@ -1,4 +1,4 @@
/* $Id: cgps.c 5053 2009-01-21 11:44:35Z esr $ */
/* $Id: cgps.c 5496 2009-03-18 16:43:52Z jfrancis $ */
/*
* Copyright (c) 2005 Jeff Francis <jeff@gritch.org>
*
@@ -105,6 +105,7 @@
#endif /* HAVE_NCURSES_H */

#include "gps.h"
#include "gpsdclient.h"

static struct gps_data_t *gpsdata;
static time_t status_timer; /* Time of last state change. */
@@ -649,6 +650,7 @@ static void usage( char *prog)
" -h Show this help, then exit\n"
" -V Show version, then exit\n"
" -s Be silent (don't print raw gpsd data)\n"
" -j Turn on anti-jitter buffering\n"
" -l {d|m|s} Select lat/lon format\n"
" d = DD.dddddd\n"
" m = DD MM.mmmm'\n"
@@ -663,7 +665,7 @@ static void usage( char *prog)
int main(int argc, char *argv[])
{
int option;
char *arg = NULL, *colon1, *colon2, *device = NULL, *server = NULL, *port = DEFAULT_GPSD_PORT;
struct fixsource_t source;
char *err_str = NULL;
int c;

@@ -684,7 +686,7 @@ int main(int argc, char *argv[])
fixclear_flag=1;
break;
case 'V':
(void)fprintf(stderr, "SVN ID: $Id: cgps.c 5053 2009-01-21 11:44:35Z esr $ \n");
(void)fprintf(stderr, "SVN ID: $Id: cgps.c 5496 2009-03-18 16:43:52Z jfrancis $ \n");
exit(0);
case 'l':
switch ( optarg[0] ) {
@@ -708,29 +710,10 @@ int main(int argc, char *argv[])
}

/* Grok the server, port, and device. */
/*@ -branchstate @*/
if (optind < argc) {
arg = strdup(argv[optind]);
/*@i@*/colon1 = strchr(arg, ':');
server = arg;
if (colon1 != NULL) {
if (colon1 == arg)
server = NULL;
else
*colon1 = '\0';
port = colon1 + 1;
colon2 = strchr(port, ':');
if (colon2 != NULL) {
if (colon2 == port)
port = NULL;
else
*colon2 = '\0';
device = colon2 + 1;
}
}
colon1 = colon2 = NULL;
}
/*@ +branchstate @*/
gpsd_source_spec(argv[optind], &source);
} else
gpsd_source_spec(NULL, &source);

/*@ -observertrans @*/
switch (gpsd_units())
@@ -760,7 +743,7 @@ int main(int argc, char *argv[])
/*@ +observertrans @*/

/* Open the stream to gpsd. */
/*@i@*/gpsdata = gps_open(server, port);
/*@i@*/gpsdata = gps_open(source.server, source.port);
if (!gpsdata) {
switch ( errno ) {
case NL_NOSERVICE: err_str = "can't get service entry"; break;
@@ -782,8 +765,8 @@ int main(int argc, char *argv[])
misc_timer = status_timer;

/* If the user requested a specific device, try to change to it. */
if (device)
(void)gps_query(gpsdata, "F=%s\n", device);
if (source.device != NULL)
(void)gps_query(gpsdata, "F=%s\n", source.device);

/* Here's where updates go until we figure out what we're dealing
with. */


+ 0
- 280
cgpxlogger.c View File

@@ -1,280 +0,0 @@
/* $Id: cgpxlogger.c 4685 2008-02-17 02:57:48Z ckuethe $ */
/*
* Copyright (c) 2005,2006 Chris Kuethe <chris.kuethe@gmail.com>
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*/

#include <sys/types.h>
#include <sys/cdefs.h>
#include <sys/ioctl.h>
#include <sys/time.h>

#include <ctype.h>
#include <err.h>
#include <errno.h>
#include <fcntl.h>
#include <netdb.h>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include "gpsd_config.h"
#include "gps.h"

#define BS 512

#define NUM 8
char *pollstr = "SPAMDQTV\n";
char *host = "127.0.0.1";
char *port = "2947";
unsigned int sl = 5;

struct gps_data_t *gpsdata;

char *progname;

void process(struct gps_data_t *, char *, size_t, int);
void usage(void);
void bye(int);
void write_record(struct gps_data_t *gpsdata);
void header(void);
void footer(void);
void track_start(void);
void track_end(void);
int tracking = 0;

struct {
double latitude;
double longitude;
float altitude;
float speed;
float course;
float hdop;
short svs;
char status;
char mode;
char time[32];
} gps_ctx;


int
main(int argc, char **argv){
int ch;
fd_set fds;
int casoc = 0;

progname = argv[0];
while ((ch = getopt(argc, argv, "hVi:j:s:p:")) != -1){
switch (ch) {
case 'i':
sl = (unsigned int)atoi(optarg);
if (sl < 1)
sl = 1;
if (sl >= 3600)
fprintf(stderr,
"WARNING: polling interval is an hour or more!\n");
break;
case 'j':
casoc = (unsigned int)atoi(optarg);
casoc = casoc ? 1 : 0;
break;
case 's':
host = optarg;
break;
case 'p':
port = optarg;
break;
case 'V':
(void)fprintf(stderr, "SVN ID: $Id: cgpxlogger.c 4685 2008-02-17 02:57:48Z ckuethe $ \n");
exit(0);
default:
usage();
/* NOTREACHED */
}
}