Browse Source

Imported Upstream version 2.95

master
Bernd Zeimetz 10 years ago
parent
commit
69222c2b16
100 changed files with 4872 additions and 3874 deletions
  1. +13
    -7
      INSTALL
  2. +225
    -89
      Makefile.am
  3. +271
    -162
      Makefile.in
  4. +87
    -67
      NEWS
  5. +8
    -27
      TODO
  6. +0
    -567
      Tachometer.c
  7. +191
    -16
      aclocal.m4
  8. +2
    -2
      ais_json.c
  9. +6
    -2
      ais_json.i
  10. +37
    -6
      autogen.sh
  11. +1
    -1
      bits.c
  12. +29
    -28
      cgps.c
  13. +15
    -43
      config.guess
  14. +11
    -4
      config.sub
  15. +620
    -1155
      configure
  16. +93
    -102
      configure.ac
  17. +1
    -1
      crc24q.c
  18. +164
    -64
      driver_aivdm.c
  19. +52
    -20
      driver_evermore.c
  20. +59
    -56
      driver_garmin.c
  21. +63
    -17
      driver_italk.c
  22. +44
    -6
      driver_italk.h
  23. +8
    -9
      driver_navcom.c
  24. +62
    -38
      driver_nmea.c
  25. +2
    -2
      driver_oncore.c
  26. +67
    -13
      driver_proto.c
  27. +0
    -218
      driver_rtcm2.c
  28. +55
    -41
      driver_sirf.c
  29. +11
    -6
      driver_superstar2.c
  30. +49
    -20
      driver_tsip.c
  31. +12
    -7
      driver_ubx.c
  32. +4
    -3
      driver_zodiac.c
  33. +31
    -16
      drivers.c
  34. +17
    -8
      gps.1
  35. +13
    -6
      gps.h
  36. +9
    -10
      gps.xml
  37. +202
    -0
      gps/client.py
  38. +131
    -69
      gps/fake.py
  39. +31
    -223
      gps/gps.py
  40. +200
    -24
      gpscap.ini
  41. +9
    -9
      gpscat
  42. +13
    -4
      gpscat.1
  43. +3
    -2
      gpscat.xml
  44. +14
    -5
      gpsctl.1
  45. +39
    -38
      gpsctl.c
  46. +59
    -42
      gpsd.8
  47. +382
    -292
      gpsd.c
  48. +41
    -38
      gpsd.h
  49. +0
    -8
      gpsd.h-head
  50. +34
    -14
      gpsd.h-tail
  51. +8
    -0
      gpsd.hotplug.wrapper
  52. +2
    -3
      gpsd.rules
  53. +20
    -6
      gpsd.xml
  54. +7
    -16
      gpsd_config.h
  55. +5
    -14
      gpsd_config.h.in
  56. +13
    -10
      gpsd_json.c
  57. +3
    -2
      gpsd_maskdump.c
  58. +18
    -5
      gpsdecode.1
  59. +41
    -49
      gpsdecode.c
  60. +11
    -8
      gpsdecode.xml
  61. +8
    -9
      gpsfake
  62. +23
    -4
      gpsfake.1
  63. +22
    -4
      gpsfake.xml
  64. +20
    -11
      gpsmon.1
  65. +13
    -5
      gpsmon.c
  66. +1
    -1
      gpsmon.xml
  67. +16
    -3
      gpspipe.1
  68. +19
    -8
      gpspipe.c
  69. +6
    -1
      gpspipe.xml
  70. +14
    -7
      gpsprof
  71. +13
    -2
      gpsprof.1
  72. +3
    -0
      gpsprof.xml
  73. +13
    -18
      gpxlogger.c
  74. +0
    -1
      isgps.c
  75. +4
    -1
      json.c
  76. +4
    -2
      jsongen.py.in
  77. +8
    -10
      lcdgps.c
  78. +3
    -0
      libQgpsmm/gpsutils.cpp
  79. +98
    -0
      libQgpsmm/libQgpsmm.pro
  80. +12
    -0
      libQgpsmm/libQgpsmm_global.h
  81. +3
    -0
      libQgpsmm/libgps_core.cpp
  82. +503
    -0
      libQgpsmm/mingw/ais_json.i
  83. +260
    -0
      libQgpsmm/mingw/gpsd_config.h
  84. +18
    -0
      libQgpsmm/mingw/test_qgpsmm.pro
  85. +1
    -0
      libQgpsmm/mingw/version.h
  86. +1
    -0
      libQgpsmm/mingw/version.pri
  87. +13
    -4
      libgps.3
  88. +1
    -1
      libgps.xml
  89. +25
    -13
      libgps_core.c
  90. +11
    -2
      libgpsd.3
  91. +60
    -24
      libgpsd_core.c
  92. +17
    -5
      libgpsmm.3
  93. +5
    -3
      libgpsmm.xml
  94. +4
    -4
      ltmain.sh
  95. +6
    -1
      monitor_sirf.c
  96. +2
    -2
      net_dgpsip.c
  97. +2
    -2
      net_ntrip.c
  98. +20
    -4
      netlib.c
  99. +2
    -2
      ntpshm.c
  100. BIN
      packaging/X11/gpsd-logo.png

+ 13
- 7
INSTALL View File

@@ -28,7 +28,6 @@ various additional capabilities and extensions:
C++ compiler -> libgpsmm C++ wrapper for the library
pthreads library -> support for PPS timekeeping on serial GPSes
DBUS -> gpsd will issue DBUS notifications
X windows -> one test client depends on this
ncurses -> a test client and the GPS monitor depend on this
libusb-1.0.x or later -> better USB device discovery
Qt + qmake -> libQgpsmm depends on this
@@ -61,6 +60,7 @@ If you are going to modify the build, you will need these:
autoconf 2.61 or later
automake 1.10 or later
libtool 2.26 or later
pkg-config

Once you have fetched the software prerequisites:

@@ -110,9 +110,8 @@ are in the same group.

3. Install prerequisites

Under Ubuntu, you will require libxp-dev and libxaw7-dev
in addition to the standard build-support packages. You can get
all the build prerequisites installed with "apt-get build-dep gpsd".
Under Debian and Ubuntu ou can get all the build prerequisites
installed with "apt-get build-dep gpsd".

Note: if you are going to use the RTCM-104 support, you should compile
with gcc4; if you don't have it installed as your default
@@ -127,9 +126,6 @@ from a binary package). As usual, the sequence is:

Mac OS X users may need to do "./configure --x-includes=/usr/X11R6/include"

Optionally, copy the app-defaults files xgpsspeed.ad to your
home directory or to the system-wide X app-defaults directory.

5. Start gpsd. You'll need to give it as an argument a path to
a serial or USB port with a GPS attached to it.

@@ -214,3 +210,13 @@ regression tests, first build gpsd from sources, and then run "make
check". It is not necessary to install first, but you do need
to have "." in your $PATH to run regressions uninstalled. Python is
required for regression tests.

17. If you installed from a .deb under Debian or a Debian-derived
system, you may need to `dpkg-reconfigure -plow gpsd' to enable the
hotplug magic ("Start gpsd automatically").

18. Note for people using gpsd as time source for ntpd: In case you're
using dhcp3-client to configure your system, make sure you disable
/etc/dhcp3/dhclient-exit-hooks.d/ntp as dhclient would restart
ntpd with an automatically created ntp.conf otherwise - and gpsd
would not be ablt to talk with ntpd anymore.

+ 225
- 89
Makefile.am View File

@@ -4,12 +4,6 @@
# BSD terms apply: see the file COPYING in the distribution root for details.
#

# Exclude version-control state from the tarball. Needed because we
# grab the test directory wholesale. Hack appropriately when and if we
# change version control systems.
# \bug This is non-portable and depends on GNU tar beyond-POSIX extensions.
am__tar += --exclude '*git*'

CLEANFILES =

# For a detailed explanation of what this ugly code is doing, see
@@ -37,15 +31,15 @@ XMLTO = xmlto
if HAVE_NCURSES
CURSESPROGS = cgps gpsmon
endif
if HAVE_XAW
XAW_PROGS = xgpsspeed
endif

# Conditional includes.
INCLUDES = $(INCUSB)
INCLUDES = $(LIBUSB_CFLAGS)
if HAVE_DBUS
INCLUDES += $(DBUS_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_API_SUBJECT_TO_CHANGE=1
endif
if HAVE_BLUEZ
INCLUDES += $(BLUEZ_CFLAGS)
endif

RTCM104PAGES_DIST = gpsdecode.1
if HAVE_RTCM104V2
@@ -65,28 +59,23 @@ check_PROGRAMS = test_float test_trig test_bits test_packet test_mkgmtime test_g
if LIBGPSMM_ENABLE
check_PROGRAMS += test_gpsmm
endif
if LIB_Q_GPSMM_ENABLE
check_PROGRAMS += test_qgpsmm
endif

PYTHONSCRIPTS_DIST = gpscat gpsfake gpsprof xgps
PYTHONMODULES_DIST = gps/__init__.py gps/misc.py gps/fake.py gps/gps.py
# List of Python scripts and modules, which are handled by setup.py.
# Required to ensure that the extensions/modules/scripts are rebuilt via
# setup.py in case they changed.
# Also used to specify which files to include during make dist.
PYTHONSCRIPTS_DIST = gpscat gpsfake gpsprof xgps xgpsspeed
PYTHONMODULES_DIST = gps/__init__.py gps/misc.py gps/fake.py gps/gps.py gps/client.py

PYTHONPAGES_DIST = gpsprof.1 gpsfake.1 gpscat.1
PYTHONPAGES_DIST = gpsprof.1 gpsfake.1 gpscat.1 xgpsspeed.1 xgps.1
if HAVE_PYTHON
python_PYTHON = gpscap.py
PYTHONPAGES = $(PYTHONPAGES_DIST)
endif

#
# Build xgpsspeed
#
xgpsspeed_c_sources = \
xgpsspeed.c \
Tachometer.c \
TachometerP.h \
Tachometer.h
xgpsspeed_SOURCES = \
$(xgpsspeed_c_sources) \
xgpsspeed.icon
xgpsspeed_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(XAW_LIBS) $(XT_LIBS) $(X_LIBS) $(X_PRE_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build cgps
@@ -105,13 +94,13 @@ gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm
#
gpsd_c_sources = gpsd_dbus.c gpsd.c
gpsd_SOURCES = $(gpsd_c_sources) gpsd_dbus.h
gpsd_LDADD = $(DBUS_LIBS) $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsd_LDADD = $(DBUS_LIBS) $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build gpsctl
#
gpsctl_SOURCES = gpsctl.c
gpsctl_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsctl_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build gpspipe
@@ -131,20 +120,39 @@ lcdgps_LDADD = $(LIBM) libgps.la -lm
gpsmon_SOURCES = gpsmon.c monitor_nmea.c monitor_sirf.c \
monitor_italk.c monitor_ubx.c monitor_superstar2.c \
monitor_oncore.c monitor_tnt.c
gpsmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsmon_LDADD = $(LIBM) $(NCURSES_LIBS) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build gpsdecode
#
gpsdecode_SOURCES = gpsdecode.c
gpsdecode_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsdecode_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build shared libraries
#
libgps_la_LDFLAGS = -version-number 19:0:0
# As we need to retrieve the version from qmake to build the Qt library,
# we provide targets to print the necessary informations.
libgps_VERSION_CURRENT = 19
libgps_VERSION__REVISION = 0
libgps_VERSION_AGE = 0
libgps_VERSION_NUMBER = $(libgps_VERSION_AGE):$(libgps_VERSION__REVISION):$(libgps_VERSION_AGE)
libgps_la_LDFLAGS = -version-number $(libgps_VERSION_CURRENT):$(libgps_VERSION__REVISION):$(libgps_VERSION_AGE)
lib_LTLIBRARIES = libgps.la libgpsd.la

libgps_SONAME = $(shell expr $(libgps_VERSION_CURRENT) - $(libgps_VERSION_AGE))
libgps_VERSION = $(libgps_SONAME).$(libgps_VERSION_AGE).$(libgps_VERSION__REVISION)
print_libgps_VERSION_CURRENT:
echo $(libgps_VERSION_CURRENT)
print_libgps_VERSION__REVISION:
echo $(libgps_VERSION__REVISION)
print_libgps_VERSION_AGE:
echo $(libgps_VERSION_AGE)
print_libgps_SONAME:
echo $(libgps_SONAME)
print_libgps_VERSION:
echo $(libgps_VERSION)

libgps_c_sources = \
ais_json.c \
gpsd_report.c \
@@ -232,7 +240,7 @@ gps_maskdump.c: gps.h maskaudit.py
$(PYTHON) maskaudit.py -c >gps_maskdump.c && \
chmod a-w gps_maskdump.c

gpsd_maskdump.c: gpsd.h-tail maskaudit.py
gpsd_maskdump.c: gpsd.h maskaudit.py
rm -f gpsd_maskdump.c && \
$(PYTHON) maskaudit.py -d >gpsd_maskdump.c && \
chmod a-w gpsd_maskdump.c
@@ -252,22 +260,30 @@ endif

nodist_libgpsd_la_SOURCES = packet_names.h ais_json.i
libgps_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
libgpsd_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
libgpsd_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD) $(BLUEZ_LIBS) libgps.la

noinst_SCRIPTS =

#
# Build Python binding
#
if HAVE_PYTHON
PYEXTENSIONS = gpspacket.so gpslib.so
noinst_SCRIPTS = stamp-python-modules setup.py
noinst_SCRIPTS += stamp-python setup.py

# Multiple-outputs hack. See
# http://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs
$(PYEXTENSIONS): stamp-python-modules
+@WITNESS=stamp-python-modules; $(MULTIOUT_RECOVER_DELETED)
$(PYEXTENSIONS): stamp-python
+@WITNESS=stamp-python; $(MULTIOUT_RECOVER_DELETED)
# TODO: Should the dependency on libgps.la be enforced inside
# setup.py? (See the variable 'needed_files' in setup.py.)
stamp-python-modules: gpspacket.c gpsclient.c libgps.la setup.py
stamp-python: gpspacket.c gpsclient.c libgps.la setup.py $(PYTHONMODULES_DIST) $(PYTHONSCRIPTS_DIST)
# Build Python modules and scripts using distutils via setup.py.
# We define build-lib and build-scripts as distutils might have been
# configured to use different directories, but we want to use the
# produced files within the regress-driver script - therefore we
# need to build them in directories we know about.
# See configure.ac for the definition of PYTHON_DISTUTILS_LIBDIR
# and PYTHON_DISTUTILS_SCRIPTDIR.
@rm -f '$@' '$@.tmp'
@echo 'timestamp for $@' > '$@.tmp'
(cd '$(srcdir)' && \
@@ -276,20 +292,96 @@ stamp-python-modules: gpspacket.c gpsclient.c libgps.la setup.py
$(PYTHON) setup.py build \
--build-lib '$(srcdir)/$(PYTHON_DISTUTILS_LIBDIR)' \
--build-scripts '$(srcdir)/$(PYTHON_DISTUTILS_SCRIPTDIR)' \
--mangenerator '$(MANGENERATOR)') && \
--mangenerator '$(XMLPROC)') && \
(cd '$(srcdir)/gps' && \
rm -f *.so && \
ln -s ../$(PYTHON_DISTUTILS_LIBDIR)/gps/*.so . ) && \
mv -f '$@.tmp' '$@'
CLEANFILES += stamp-python-modules stamp-python-modules.tmp
CLEANFILES += stamp-python stamp-python.tmp
endif

QTLIB_DIST = libQgpsmm/libQgpsmm.pro \
libQgpsmm/gpsutils.cpp \
libQgpsmm/libgps_core.cpp \
libQgpsmm/libQgpsmm_global.h

QTLIB_DIST_MINGW = libQgpsmm/mingw/gpsd_config.h \
libQgpsmm/mingw/test_qgpsmm.pro

if LIB_Q_GPSMM_ENABLE
noinst_SCRIPTS += stamp-qt
QTLIBS = libQgpsmm/binaries/libQgpsmm.so \
libQgpsmm/binaries/libQgpsmm.so.$(libgps_SONAME) \
libQgpsmm/binaries/libQgpsmm.so.$(libgps_SONAME).$(libgps_VERSION_AGE) \
libQgpsmm/binaries/libQgpsmm.so.$(libgps_VERSION)

QTLIB_sources = gpsutils.c \
libgps_core.c \
libgpsmm.cpp \
libgps_json.c \
hex.c \
gpsd_report.c \
strl.c \
shared_json.c \
rtcm2_json.c \
ais_json.c \
json.c \
gps.h \
libgpsmm.h \
gps_json.h \
json.h \
ais_json.i \
gpsd.h \
$(QTLIB_DIST)

QMAKE_OPTS = "PREFIX=${prefix}" \
"MAKE=$(MAKE)" \
"QMAKE_CXX=$(CXX)" \
"QMAKE_CC=$(CC)" \
"QMAKE_CFLAGS+=$(CFLAGS)" \
"QMAKE_LFLAGS+=$(LDFLAGS)" \
"VERSION=$(libgps_VERSION)" \
"TARGET_LIBDIR=${libdir}" \
"TARGET_INCLUDEDIR=${includedir}"

libQgpsmm/Makefile: libQgpsmm/libQgpsmm.pro gpsd.h ais_json.i
cd $(srcdir)/libQgpsmm && $(QMAKE) $(QMAKE_OPTS)
# Yet another multiple-outputs hack:
$(QTLIBS): stamp-qt
+@WITNESS=stamp-qt; $(MULTIOUT_RECOVER_DELETED)
stamp-qt: $(QTLIB_sources) libQgpsmm/Makefile
$(MAKE) -C $(srcdir)/libQgpsmm
touch $@
CLEANFILES += stamp-qt
endif

# Clean up after Python
# Clean up after Python and QT
clean-local:
if HAVE_PYTHON
rm -rf build gps/*.so
endif
if LIB_Q_GPSMM_ENABLE
if test -r $(srcdir)/libQgpsmm/Makefile; then \
$(MAKE) -C $(srcdir)/libQgpsmm distclean || true; \
fi
rm -rf $(srcdir)/libQgpsmm/binaries
rm -f $(srcdir)/libQgpsmm/*.o $(srcdir)/libQgpsmm/Makefile
endif

# Install Python modules
# Install Python modules and QT library
install-exec-local:
$(PYTHON) setup.py install --prefix=${prefix} --root=$(DESTDIR)
if HAVE_PYTHON
# Make sure we do not use --root as option to setup.py install
# when DESTDIR is not defined as distutils would use the current
# working directory as root directory and not install to ${prefix}.
if test -z "$(DESTDIR)"; then \
$(PYTHON) setup.py install --prefix=${prefix} ;\
else \
$(PYTHON) setup.py install --prefix=${prefix} --root=$(DESTDIR) ;\
fi
endif
if LIB_Q_GPSMM_ENABLE
$(MAKE) -C libQgpsmm install INSTALL_ROOT=$(DESTDIR)
endif

#
@@ -309,20 +401,30 @@ if LIBGPSMM_ENABLE
# Build test_gpsmm
#
test_gpsmm_SOURCES = test_gpsmm.cpp
test_gpsmm_LDADD = $(LIBC) libgps.la -lm $(LIBUSB)
test_gpsmm_LDADD = $(LIBC) libgps.la -lm $(LIBUSB_LIBS)
endif

if LIB_Q_GPSMM_ENABLE
#
# Build test_qgpsmm
#
test_qgpsmm_SOURCES = test_gpsmm.cpp
test_qgpsmm_LDFLAGS = -Wl,-rpath,$(srcdir)/libQgpsmm/binaries
test_qgpsmm_LDADD = $(LIBC) $(LIBUSB) $(QtNetwork_LIBS) -LlibQgpsmm/binaries -lQgpsmm
test_qgpsmm_DEPENDENCIES = libQgpsmm/binaries/libQgpsmm.so
endif

#
# Build test_bits tester
#
test_bits_SOURCES = test_bits.c
test_bits_LDADD = $(LIBC) libgpsd.la libgps.la $(LIBUSB)
test_bits_LDADD = $(LIBC) libgpsd.la libgps.la $(LIBUSB_LIBS)

#
# Build packets tester
#
test_packet_SOURCES = test_packet.c
test_packet_LDADD = $(LIBC) libgpsd.la libgps.la -lm $(LIBUSB)
test_packet_LDADD = $(LIBC) libgpsd.la libgps.la -lm $(LIBUSB_LIBS)

#
# Build geoid model tester
@@ -344,8 +446,6 @@ test_json_LDADD = $(LIBC) libgps.la -lm
MANPAGES_BASE = \
gpsd.8 \
gps.1 \
xgps.1 \
xgpsspeed.1 \
cgps.1 \
lcdgps.1 \
libgps.3 \
@@ -374,16 +474,16 @@ man_MANS = \
BUILT_MANPAGES = $(MANPAGES_DIST)

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

.xml.3:
$(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
$(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

.xml.5:
$(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
$(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

.xml.8:
$(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
$(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

# Another instance of the multiple-outputs hack.
gps.1 xgps.1 xgpsspeed.1 cgps.1 lcdgps.1: stamp-gps-manpages
@@ -391,7 +491,7 @@ gps.1 xgps.1 xgpsspeed.1 cgps.1 lcdgps.1: stamp-gps-manpages
stamp-gps-manpages: gps.xml
@rm -f '$@' '$@.tmp'
echo 'timestamp for $@' > '$@.tmp' && \
$(MANGENERATOR) $(MANFLAGS) $(MANTARGET) '$(srcdir)/gps.xml' && \
$(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) '$(srcdir)/gps.xml' && \
mv -f '$@.tmp' '$@'
CLEANFILES += stamp-gps-manpages stamp-gps-manpages.tmp
endif
@@ -399,8 +499,7 @@ endif
noinst_HEADERS = gpsd_config.h \
driver_italk.h driver_rtcm2.h driver_superstar2.h \
driver_ubx.h gpsmon.h gpsdclient.h json.h gps_json.h \
revision.h

revision.h TachometerP.h Tachometer.h
nodist_include_HEADERS = gpsd.h

if LIBGPSMM_ENABLE
@@ -425,8 +524,8 @@ XML = \
rtcm-104.xml \
srec.xml

# Note: packaging/gpsd.spec is generated, but it needs to be in the
# tarball in order for 'make diat-rpm' to work. The BUILT_SOURCES
# Note: packaging/rpm/gpsd.spec is generated, but it needs to be in the
# tarball in order for 'make dist-rpm' to work. The BUILT_SOURCES
# files are here in order to minimize build dependencies for package
# builders who never alter anything, especially the Python dependency.
# Also note that the test and gps directories are here rather than
@@ -453,7 +552,6 @@ EXTRA_DIST = \
$(XML) \
$(BUILT_SOURCES) \
$(MANPAGES_DIST) \
xgpsspeed.ad \
gpsd.rules \
gpsd.hotplug \
gpsd.hotplug.wrapper \
@@ -469,21 +567,33 @@ EXTRA_DIST = \
libgps.pc.in \
libgpsd.pc.in \
gpscap.ini \
packaging/gpsd.spec \
packaging/etc_default_gpsd \
packaging/etc_init.d_gpsd \
packaging/etc_init.d_gpsd_rpm \
packaging/deb/etc_default_gpsd \
packaging/deb/etc_init.d_gpsd \
packaging/rpm/gpsd.spec \
packaging/rpm/gpsd.init \
packaging/rpm/gpsd.sysconfig \
packaging/X11/xgps.desktop \
packaging/X11/xgpsspeed.desktop \
packaging/X11/gpsd-logo.png \
do-tests \
regress-driver \
$(PYTHONSCRIPTS_DIST) \
$(PYTHONMODULES_DIST) \
$(QTLIB_DIST) \
$(QTLIB_DIST_MINGW) \
test

#dist-hook:
# $(MKDIR_P) '$(distdir)/contrib' && \
# cp -p '$(srcdir)/contrib/'* '$(distdir)/contrib'
#distclean-local:
# rm -rf '$(distdir)/contrib'

# Prepare necessary files to build the mingw-port of libQgpsmm
# while creating the dist tarball.
dist-hook: ais_json.i gpsd_config.h
$(MKDIR_P) '$(distdir)/libQgpsmm/mingw'
cp -p ais_json.i $(distdir)/libQgpsmm/mingw
grep "#define VERSION" gpsd_config.h > $(distdir)/libQgpsmm/mingw/version.h
echo "VERSION=$(libgps_VERSION)" > $(distdir)/libQgpsmm/mingw/version.pri
distclean-local:
rm -f $(distdir)/libQgpsmm/mingw/version.* $(distdir)/libQgpsmm/mingw/ais_json.i


CLEANFILES += $(BUILT_SOURCES) *.core $(PYEXTENSIONS) $(BUILT_MANPAGES)

@@ -495,14 +605,12 @@ libgps: libgps_core.c gps.h .libs/libgps.a
$(CC) $(CFLAGS) -o libgps -lm -DTESTMAIN $(LIBPTHREAD) -g libgps_core.c .libs/libgps.a

# Report splint warnings
SPLINTOPTS = -I/usr/include/dbus-1.0/ $(INCUSB) +quiet
SPLINTOPTS = -I/usr/include/dbus-1.0/ $(LIBUSB_CFLAGS) +quiet
splint: gpsd.h packet_names.h
@echo "Running splint on daemon and libraries..."
-splint $(SPLINTOPTS) -exportlocal -redef $(gpsd_c_sources) $(libgpsd_c_sources) $(libgps_c_sources)
@echo "Running splint on cgps..."
-splint $(SPLINTOPTS) -exportlocal $(cgps_SOURCES)
@echo "Running splint on xgpsspeed..."
-splint $(SPLINTOPTS) -exportlocal $(xgpsspeed_c_sources)
@echo "Running splint on gpsctl..."
-splint $(SPLINTOPTS) $(gpsctl_SOURCES)
@echo "Running splint on gpsmon..."
@@ -528,8 +636,11 @@ splint: gpsd.h packet_names.h
cppcheck: gpsd.h packet_names.h
cppcheck --template gcc --all --force .

# Re-indent the codebase in aa uniform style for readability.
# FIXME: Except for xgpsspeed - Tachometer.c makes GNI indent lose it.
# Check the documentation for bogons, too
xmllint: $(XML)
for xml in $(XML); do xmllint --nonet --noout --valid $$xml; done

# Re-indent the codebase in a uniform style for readability.
INDENT_FILES = $(gpsd_c_sources) $(libgpsd_c_sources) $(libgps_c_sources) \
$(cgps_SOURCES) $(gpsmon_SOURCES) $(gpspipe_SOURCES) \
$(gpxlogger_SOURCES) $(gpsdecode_SOURCES) \
@@ -581,20 +692,22 @@ version:
# depends on each TEST as well as invokes it (with TESTS_ENVIRONMENT)
# the entire list of tests is run twice.

run_regress_driver = PYTHON=$(PYTHON) $(srcdir)/regress-driver
# Use make REGRESSOPTS=-u to force running with UDP rather than pty devices

run_regress_driver = PYTHON=$(PYTHON) $(srcdir)/regress-driver $(REGRESSOPTS)

# Regression-test the daemon
gps-regress: gpsd
gps-regress: gpsd stamp-python
$(run_regress_driver) $(srcdir)/test/daemon/*.log

# Test that super-raw mode works. Compare each logfile against itself
# dumped through the daemon running in R=2 mode. (This test is not
# included in the normal regressions.)
raw-regress:
raw-regress: stamp-python
$(run_regress_driver) -r $(srcdir)/test/daemon/*.log

# Build the regression tests for the daemon.
gps-makeregress: gpsd
gps-makeregress: gpsd stamp-python
$(run_regress_driver) -b $(srcdir)/test/daemon/*.log

# To build an individual test for a load named foo.log, put it in
@@ -696,18 +809,25 @@ TESTS = do-tests
#
# None of these productions are fired by 'make all'.

# FIXME: Needs to be replaced by a $(MANGENERATOR) rule
%.html: %.xml
xmlto xhtml-nochunks $<
if XMLTOSTDOUT
www/%.html: %.xml
$(XMLPROC) $(XMLPROCFLAGS) $(HTMLTARGET) $< >$(<:.xml=.html) ; cp $(<:.xml=.html) $@
else
www/%.html: %.xml
$(XMLPROC) $(XMLPROCFLAGS) $(HTMLTARGET) $<; cp $(<:.xml=.html) $@
endif

website: $(XML:.xml=.html) \
website: www/gpscat.html www/gpsctl.html www/gpsdecode.html \
www/gpsd.html www/gpsfake.html www/gpsmon.html \
www/gpspipe.html www/gpsprof.html www/gps.html \
www/libgpsd.html www/libgpsmm.html www/libgps.html \
www/rtcm-104.html www/srec.html \
www/AIVDM.html www/NMEA.html \
www/protocol-evolution.html www/protocol-transition.html \
www/client-howto.html www/writing-a-driver.html \
www/index.html www/hardware.html \
www/performance/performance.html \
www/internals.html
@cp $(XML:.xml=.html) www

www/AIVDM.html: www/AIVDM.txt
asciidoc -a toc -o www/AIVDM.html www/AIVDM.txt
@@ -739,15 +859,26 @@ www/performance/performance.html: www/performance/performance.xml
www/internals.html: $(shell ls doc/*.xml)
cd doc; xmlto xhtml-nochunks explanation.xml; cp explanation.html ../www/internals.html

if HAVE_PYTHON
# Experimenting with pydoc. Not yet fired by any other productions.

pydoc: www/pydoc/index.html

www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python-modules
# We need to run epydoc with the Python version we built the modules for.
# So we define our on epydoc instead of using /usr/bin/epydoc
EPYDOC = $(PYTHON) -c 'from epydoc.cli import cli; cli()'

# We have pre-compiled python scripts in the script directory, so we exclude
# all files ending on c here. Needs a better solution as soon as we have a
# script ending with c.
EPYDOCSCRIPTS = $(shell find $(PYTHON_DISTUTILS_SCRIPTDIR) -name '*c' -o -type f -print)
EPYDOCMODULES = $(PYTHON_DISTUTILS_LIBDIR)/gps

www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python
mkdir -p www/pydoc
epydoc -v -q --html --graph all -n GPSD gps gpsfake gpscat gpsprof -o www/pydoc
$(EPYDOC) -v --html --graph all -n GPSD $(EPYDOCSCRIPTS) $(EPYDOCMODULES) -o www/pydoc

.PHONY: pydoc
endif

# Productions for setting up and performing udev tests.
#
@@ -757,15 +888,13 @@ www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python-modules
# 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/
cp $(srcdir)/gpsd.rules /lib/udev/rules.d/025_gpsd.rules
cp $(srcdir)/gpsd.hotplug $(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
rm -f /lib/udev/{gpsd.hotplug,gpsd.hotplug.wrapper}
rm -f /lib/udev/rules.d/025_gpsd.rules

udev-test:
$(srcdir)/gpsd -N -F /var/run/gpsd.sock -D 4
@@ -801,3 +930,10 @@ release-tag:
#
ship: testregress clean dist upload-ftp release-tag


.PHONY: print_libgps_VERSION_CURRENT \
print_libgps_VERSION__REVISION \
print_libgps_VERSION_AGE \
print_libgps_SONAME \
print_libgps_VERSION \
pydoc

+ 271
- 162
Makefile.in View File

@@ -1,4 +1,4 @@
# Makefile.in generated by automake 1.11 from Makefile.am.
# Makefile.in generated by automake 1.11.1 from Makefile.am.
# @configure_input@

# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
@@ -45,19 +45,24 @@ POST_UNINSTALL = :
build_triplet = @build@
host_triplet = @host@
@HAVE_DBUS_TRUE@am__append_1 = $(DBUS_CFLAGS) $(DBUS_GLIB_CFLAGS) -DDBUS_API_SUBJECT_TO_CHANGE=1
bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) $(am__EXEEXT_3) \
gpsctl$(EXEEXT) gpspipe$(EXEEXT) gpxlogger$(EXEEXT) \
lcdgps$(EXEEXT)
@HAVE_BLUEZ_TRUE@am__append_2 = $(BLUEZ_CFLAGS)
bin_PROGRAMS = $(am__EXEEXT_1) $(am__EXEEXT_2) gpsctl$(EXEEXT) \
gpspipe$(EXEEXT) gpxlogger$(EXEEXT) lcdgps$(EXEEXT)
sbin_PROGRAMS = gpsd$(EXEEXT)
check_PROGRAMS = test_float$(EXEEXT) test_trig$(EXEEXT) \
test_bits$(EXEEXT) test_packet$(EXEEXT) test_mkgmtime$(EXEEXT) \
test_geoid$(EXEEXT) test_json$(EXEEXT) $(am__EXEEXT_4)
@LIBGPSMM_ENABLE_TRUE@am__append_2 = test_gpsmm
test_geoid$(EXEEXT) test_json$(EXEEXT) $(am__EXEEXT_3) \
$(am__EXEEXT_4)
@LIBGPSMM_ENABLE_TRUE@am__append_3 = test_gpsmm
@LIB_Q_GPSMM_ENABLE_TRUE@am__append_4 = test_qgpsmm

# Warning: This overrides autoconf's normal link-line generation process
@LIBGPSMM_ENABLE_TRUE@am__append_3 = libgpsmm.cpp
@HAVE_PYTHON_TRUE@am__append_4 = stamp-python-modules stamp-python-modules.tmp
@HAVE_XSLT_PROCESSOR_TRUE@am__append_5 = stamp-gps-manpages stamp-gps-manpages.tmp
@LIBGPSMM_ENABLE_TRUE@am__append_5 = libgpsmm.cpp
@HAVE_PYTHON_TRUE@am__append_6 = stamp-python setup.py
@HAVE_PYTHON_TRUE@am__append_7 = stamp-python stamp-python.tmp
@LIB_Q_GPSMM_ENABLE_TRUE@am__append_8 = stamp-qt
@LIB_Q_GPSMM_ENABLE_TRUE@am__append_9 = stamp-qt
@HAVE_XSLT_PROCESSOR_TRUE@am__append_10 = stamp-gps-manpages stamp-gps-manpages.tmp
subdir = .
DIST_COMMON = README $(am__configure_deps) $(am__include_HEADERS_DIST) \
$(am__python_PYTHON_DIST) $(noinst_HEADERS) \
@@ -65,9 +70,10 @@ DIST_COMMON = README $(am__configure_deps) $(am__include_HEADERS_DIST) \
$(srcdir)/gpsd_config.h.in $(srcdir)/jsongen.py.in \
$(srcdir)/libgps.pc.in $(srcdir)/libgpsd.pc.in \
$(srcdir)/maskaudit.py.in $(srcdir)/valgrind-audit.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
$(top_srcdir)/configure \
$(top_srcdir)/packaging/rpm/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) \
@@ -76,7 +82,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 = packaging/gpsd.spec libgps.pc libgpsd.pc \
CONFIG_CLEAN_FILES = packaging/rpm/gpsd.spec libgps.pc libgpsd.pc \
jsongen.py maskaudit.py valgrind-audit
CONFIG_CLEAN_VPATH_FILES =
am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
@@ -123,7 +129,7 @@ am_libgps_la_OBJECTS = $(am__objects_1) $(am__objects_2)
libgps_la_OBJECTS = $(am_libgps_la_OBJECTS)
libgpsd_la_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1)
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) libgps.la
am__objects_3 = bits.lo bsd-base64.lo crc24q.lo gpsd_json.lo isgps.lo \
gpsd_maskdump.lo libgpsd_core.lo net_dgpsip.lo \
net_gnss_dispatch.lo net_ntrip.lo ntpshm.lo packet.lo \
@@ -138,10 +144,10 @@ am_libgpsd_la_OBJECTS = $(am__objects_3) $(am__objects_4)
nodist_libgpsd_la_OBJECTS =
libgpsd_la_OBJECTS = $(am_libgpsd_la_OBJECTS) \
$(nodist_libgpsd_la_OBJECTS)
@HAVE_XAW_TRUE@am__EXEEXT_1 = xgpsspeed$(EXEEXT)
@HAVE_AIVDM_TRUE@@HAVE_RTCM104V2_TRUE@@HAVE_RTCM104V3_TRUE@am__EXEEXT_2 = gpsdecode$(EXEEXT)
@HAVE_NCURSES_TRUE@am__EXEEXT_3 = cgps$(EXEEXT) gpsmon$(EXEEXT)
@LIBGPSMM_ENABLE_TRUE@am__EXEEXT_4 = test_gpsmm$(EXEEXT)
@HAVE_AIVDM_TRUE@@HAVE_RTCM104V2_TRUE@@HAVE_RTCM104V3_TRUE@am__EXEEXT_1 = gpsdecode$(EXEEXT)
@HAVE_NCURSES_TRUE@am__EXEEXT_2 = cgps$(EXEEXT) gpsmon$(EXEEXT)
@LIBGPSMM_ENABLE_TRUE@am__EXEEXT_3 = test_gpsmm$(EXEEXT)
@LIB_Q_GPSMM_ENABLE_TRUE@am__EXEEXT_4 = test_qgpsmm$(EXEEXT)
PROGRAMS = $(bin_PROGRAMS) $(sbin_PROGRAMS)
am_cgps_OBJECTS = cgps.$(OBJEXT)
cgps_OBJECTS = $(am_cgps_OBJECTS)
@@ -205,17 +211,16 @@ am_test_packet_OBJECTS = test_packet.$(OBJEXT)
test_packet_OBJECTS = $(am_test_packet_OBJECTS)
test_packet_DEPENDENCIES = $(am__DEPENDENCIES_1) libgpsd.la libgps.la \
$(am__DEPENDENCIES_1)
am__test_qgpsmm_SOURCES_DIST = test_gpsmm.cpp
@LIB_Q_GPSMM_ENABLE_TRUE@am_test_qgpsmm_OBJECTS = \
@LIB_Q_GPSMM_ENABLE_TRUE@ test_gpsmm.$(OBJEXT)
test_qgpsmm_OBJECTS = $(am_test_qgpsmm_OBJECTS)
test_qgpsmm_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
$(CXXFLAGS) $(test_qgpsmm_LDFLAGS) $(LDFLAGS) -o $@
am_test_trig_OBJECTS = test_trig.$(OBJEXT)
test_trig_OBJECTS = $(am_test_trig_OBJECTS)
test_trig_DEPENDENCIES = $(am__DEPENDENCIES_1)
am__objects_6 = xgpsspeed.$(OBJEXT) Tachometer.$(OBJEXT)
am_xgpsspeed_OBJECTS = $(am__objects_6)
xgpsspeed_OBJECTS = $(am_xgpsspeed_OBJECTS)
xgpsspeed_DEPENDENCIES = $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
$(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) libgps.la \
$(am__DEPENDENCIES_1)
SCRIPTS = $(noinst_SCRIPTS)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp = $(SHELL) $(top_srcdir)/depcomp
@@ -246,8 +251,8 @@ SOURCES = $(libgps_la_SOURCES) $(libgpsd_la_SOURCES) \
$(test_bits_SOURCES) $(test_float_SOURCES) \
$(test_geoid_SOURCES) $(test_gpsmm_SOURCES) \
$(test_json_SOURCES) $(test_mkgmtime_SOURCES) \
$(test_packet_SOURCES) $(test_trig_SOURCES) \
$(xgpsspeed_SOURCES)
$(test_packet_SOURCES) $(test_qgpsmm_SOURCES) \
$(test_trig_SOURCES)
DIST_SOURCES = $(am__libgps_la_SOURCES_DIST) $(libgpsd_la_SOURCES) \
$(cgps_SOURCES) $(gpsctl_SOURCES) $(gpsd_SOURCES) \
$(gpsdecode_SOURCES) $(gpsmon_SOURCES) $(gpspipe_SOURCES) \
@@ -255,7 +260,7 @@ DIST_SOURCES = $(am__libgps_la_SOURCES_DIST) $(libgpsd_la_SOURCES) \
$(test_float_SOURCES) $(test_geoid_SOURCES) \
$(am__test_gpsmm_SOURCES_DIST) $(test_json_SOURCES) \
$(test_mkgmtime_SOURCES) $(test_packet_SOURCES) \
$(test_trig_SOURCES) $(xgpsspeed_SOURCES)
$(am__test_qgpsmm_SOURCES_DIST) $(test_trig_SOURCES)
am__python_PYTHON_DIST = gpscap.py
py_compile = $(top_srcdir)/py-compile
man1dir = $(mandir)/man1
@@ -291,6 +296,8 @@ AUTOCONF = @AUTOCONF@
AUTOHEADER = @AUTOHEADER@
AUTOMAKE = @AUTOMAKE@
AWK = @AWK@
BLUEZ_CFLAGS = @BLUEZ_CFLAGS@
BLUEZ_LIBS = @BLUEZ_LIBS@
CC = @CC@
CCDEPMODE = @CCDEPMODE@
CFLAGS = @CFLAGS@
@@ -316,7 +323,7 @@ EGREP = @EGREP@
EXEEXT = @EXEEXT@
FGREP = @FGREP@
GREP = @GREP@
INCUSB = @INCUSB@
HTMLTARGET = @HTMLTARGET@
INSTALL = @INSTALL@
INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@
@@ -332,13 +339,12 @@ LIBPTHREAD = @LIBPTHREAD@
LIBS = @LIBS@
LIBSOCKET = @LIBSOCKET@
LIBTOOL = @LIBTOOL@
LIBUSB = @LIBUSB@
LIBUSB_CFLAGS = @LIBUSB_CFLAGS@
LIBUSB_LIBS = @LIBUSB_LIBS@
LIPO = @LIPO@
LN_S = @LN_S@
LTLIBOBJS = @LTLIBOBJS@
MAKEINFO = @MAKEINFO@
MANFLAGS = @MANFLAGS@
MANGENERATOR = @MANGENERATOR@
MANTARGET = @MANTARGET@
MKDIR_P = @MKDIR_P@
NCURSES_LIBS = @NCURSES_LIBS@
@@ -356,6 +362,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
PACKAGE_URL = @PACKAGE_URL@
PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@
PYTHON = @PYTHON@
PYTHON_CFLAGS = @PYTHON_CFLAGS@
PYTHON_DISTUTILS_LIBDIR = @PYTHON_DISTUTILS_LIBDIR@
@@ -365,6 +372,9 @@ PYTHON_LIBS = @PYTHON_LIBS@
PYTHON_PLATFORM = @PYTHON_PLATFORM@
PYTHON_PREFIX = @PYTHON_PREFIX@
PYTHON_VERSION = @PYTHON_VERSION@
QMAKE = @QMAKE@
QtNetwork_CFLAGS = @QtNetwork_CFLAGS@
QtNetwork_LIBS = @QtNetwork_LIBS@
RANLIB = @RANLIB@
SED = @SED@
SET_MAKE = @SET_MAKE@
@@ -373,16 +383,8 @@ STRIP = @STRIP@
VERSION = @VERSION@
WITH_XMLTO = @WITH_XMLTO@
WITH_XSLTPROC = @WITH_XSLTPROC@
X11_LIBS = @X11_LIBS@
XAW_LIBS = @XAW_LIBS@
XEXT_LIBS = @XEXT_LIBS@
XMKMF = @XMKMF@
XPM_LIBS = @XPM_LIBS@
XT_LIBS = @XT_LIBS@
X_CFLAGS = @X_CFLAGS@
X_EXTRA_LIBS = @X_EXTRA_LIBS@
X_LIBS = @X_LIBS@
X_PRE_LIBS = @X_PRE_LIBS@
XMLPROC = @XMLPROC@
XMLPROCFLAGS = @XMLPROCFLAGS@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@
@@ -393,12 +395,7 @@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
am__include = @am__include@
am__leading_dot = @am__leading_dot@
am__quote = @am__quote@

# Exclude version-control state from the tarball. Needed because we
# grab the test directory wholesale. Hack appropriately when and if we
# change version control systems.
# \bug This is non-portable and depends on GNU tar beyond-POSIX extensions.
am__tar = @am__tar@ --exclude '*git*'
am__tar = @am__tar@
am__untar = @am__untar@
bindir = @bindir@
build = @build@
@@ -445,14 +442,8 @@ target_alias = @target_alias@
top_build_prefix = @top_build_prefix@
top_builddir = @top_builddir@
top_srcdir = @top_srcdir@

#dist-hook:
# $(MKDIR_P) '$(distdir)/contrib' && \
# cp -p '$(srcdir)/contrib/'* '$(distdir)/contrib'
#distclean-local:
# rm -rf '$(distdir)/contrib'
CLEANFILES = $(am__append_4) $(am__append_5) $(BUILT_SOURCES) *.core \
$(PYEXTENSIONS) $(BUILT_MANPAGES)
CLEANFILES = $(am__append_7) $(am__append_9) $(am__append_10) \
$(BUILT_SOURCES) *.core $(PYEXTENSIONS) $(BUILT_MANPAGES)

# For a detailed explanation of what this ugly code is doing, see
# http://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs
@@ -477,34 +468,23 @@ XMLTO = xmlto
# Conditionally add programs depending on libraries that may or may not be present.
#
@HAVE_NCURSES_TRUE@CURSESPROGS = cgps gpsmon
@HAVE_XAW_TRUE@XAW_PROGS = xgpsspeed

# Conditional includes.
INCLUDES = $(INCUSB) $(am__append_1)
INCLUDES = $(LIBUSB_CFLAGS) $(am__append_1) $(am__append_2)
RTCM104PAGES_DIST = gpsdecode.1
@HAVE_AIVDM_TRUE@@HAVE_RTCM104V2_TRUE@@HAVE_RTCM104V3_TRUE@RTCM104PROGS = gpsdecode
@HAVE_AIVDM_TRUE@@HAVE_RTCM104V2_TRUE@@HAVE_RTCM104V3_TRUE@RTCM104PAGES = $(RTCM104PAGES_DIST)
PYTHONSCRIPTS_DIST = gpscat gpsfake gpsprof xgps
PYTHONMODULES_DIST = gps/__init__.py gps/misc.py gps/fake.py gps/gps.py
PYTHONPAGES_DIST = gpsprof.1 gpsfake.1 gpscat.1

# List of Python scripts and modules, which are handled by setup.py.
# Required to ensure that the extensions/modules/scripts are rebuilt via
# setup.py in case they changed.
# Also used to specify which files to include during make dist.
PYTHONSCRIPTS_DIST = gpscat gpsfake gpsprof xgps xgpsspeed
PYTHONMODULES_DIST = gps/__init__.py gps/misc.py gps/fake.py gps/gps.py gps/client.py
PYTHONPAGES_DIST = gpsprof.1 gpsfake.1 gpscat.1 xgpsspeed.1 xgps.1
@HAVE_PYTHON_TRUE@python_PYTHON = gpscap.py
@HAVE_PYTHON_TRUE@PYTHONPAGES = $(PYTHONPAGES_DIST)

#
# Build xgpsspeed
#
xgpsspeed_c_sources = \
xgpsspeed.c \
Tachometer.c \
TachometerP.h \
Tachometer.h

xgpsspeed_SOURCES = \
$(xgpsspeed_c_sources) \
xgpsspeed.icon

xgpsspeed_LDADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(XAW_LIBS) $(XT_LIBS) $(X_LIBS) $(X_PRE_LIBS) libgps.la -lm $(LIBPTHREAD)

#
# Build cgps
#
@@ -522,13 +502,13 @@ gpxlogger_LDADD = $(DBUS_GLIB_LIBS) libgps.la -lm
#
gpsd_c_sources = gpsd_dbus.c gpsd.c
gpsd_SOURCES = $(gpsd_c_sources) gpsd_dbus.h
gpsd_LDADD = $(DBUS_LIBS) $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsd_LDADD = $(DBUS_LIBS) $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build gpsctl
#
gpsctl_SOURCES = gpsctl.c
gpsctl_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsctl_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build gpspipe
@@ -549,19 +529,27 @@ gpsmon_SOURCES = gpsmon.c monitor_nmea.c monitor_sirf.c \
monitor_italk.c monitor_ubx.c monitor_superstar2.c \
monitor_oncore.c monitor_tnt.c

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

#
# Build gpsdecode
#
gpsdecode_SOURCES = gpsdecode.c
gpsdecode_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB)
gpsdecode_LDADD = $(LIBM) libgpsd.la libgps.la -lm $(LIBPTHREAD) $(LIBUSB_LIBS)

#
# Build shared libraries
#
libgps_la_LDFLAGS = -version-number 19:0:0
# As we need to retrieve the version from qmake to build the Qt library,
# we provide targets to print the necessary informations.
libgps_VERSION_CURRENT = 19
libgps_VERSION__REVISION = 0
libgps_VERSION_AGE = 0
libgps_VERSION_NUMBER = $(libgps_VERSION_AGE):$(libgps_VERSION__REVISION):$(libgps_VERSION_AGE)
libgps_la_LDFLAGS = -version-number $(libgps_VERSION_CURRENT):$(libgps_VERSION__REVISION):$(libgps_VERSION_AGE)
lib_LTLIBRARIES = libgps.la libgpsd.la
libgps_SONAME = $(shell expr $(libgps_VERSION_CURRENT) - $(libgps_VERSION_AGE))
libgps_VERSION = $(libgps_SONAME).$(libgps_VERSION_AGE).$(libgps_VERSION__REVISION)
libgps_c_sources = \
ais_json.c \
gpsd_report.c \
@@ -620,7 +608,7 @@ libgpsd_h_sources = \
crc24q.h

BUILT_SOURCES = packet_names.h gpsd.h revision.h ais_json.i gps_maskdump.c gpsd_maskdump.c
libgps_la_SOURCES = $(libgps_c_sources) $(am__append_3)
libgps_la_SOURCES = $(libgps_c_sources) $(am__append_5)
libgpsd_la_SOURCES = $(libgpsd_c_sources) $(libgpsd_h_sources) \
driver_rtcm2.h packet_states.h

@@ -628,13 +616,54 @@ libgpsd_la_SOURCES = $(libgpsd_c_sources) $(libgpsd_h_sources) \
@LIBGPSMM_ENABLE_TRUE@libgps_la_LINK = /bin/sh ./libtool --tag=CXX --mode=link g++ $(libgps_la_LDFLAGS) -o $@
nodist_libgpsd_la_SOURCES = packet_names.h ais_json.i
libgps_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
libgpsd_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD)
libgpsd_la_LIBADD = $(LIBM) $(LIBC) $(LIBNSL) $(LIBSOCKET) $(LIBPTHREAD) $(BLUEZ_LIBS) libgps.la
noinst_SCRIPTS = $(am__append_6) $(am__append_8)

#
# Build Python binding
#
@HAVE_PYTHON_TRUE@PYEXTENSIONS = gpspacket.so gpslib.so
@HAVE_PYTHON_TRUE@noinst_SCRIPTS = stamp-python-modules setup.py
QTLIB_DIST = libQgpsmm/libQgpsmm.pro \
libQgpsmm/gpsutils.cpp \
libQgpsmm/libgps_core.cpp \
libQgpsmm/libQgpsmm_global.h

QTLIB_DIST_MINGW = libQgpsmm/mingw/gpsd_config.h \
libQgpsmm/mingw/test_qgpsmm.pro

@LIB_Q_GPSMM_ENABLE_TRUE@QTLIBS = libQgpsmm/binaries/libQgpsmm.so \
@LIB_Q_GPSMM_ENABLE_TRUE@ libQgpsmm/binaries/libQgpsmm.so.$(libgps_SONAME) \
@LIB_Q_GPSMM_ENABLE_TRUE@ libQgpsmm/binaries/libQgpsmm.so.$(libgps_SONAME).$(libgps_VERSION_AGE) \
@LIB_Q_GPSMM_ENABLE_TRUE@ libQgpsmm/binaries/libQgpsmm.so.$(libgps_VERSION)

@LIB_Q_GPSMM_ENABLE_TRUE@QTLIB_sources = gpsutils.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ libgps_core.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ libgpsmm.cpp \
@LIB_Q_GPSMM_ENABLE_TRUE@ libgps_json.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ hex.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ gpsd_report.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ strl.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ shared_json.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ rtcm2_json.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ ais_json.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ json.c \
@LIB_Q_GPSMM_ENABLE_TRUE@ gps.h \
@LIB_Q_GPSMM_ENABLE_TRUE@ libgpsmm.h \
@LIB_Q_GPSMM_ENABLE_TRUE@ gps_json.h \
@LIB_Q_GPSMM_ENABLE_TRUE@ json.h \
@LIB_Q_GPSMM_ENABLE_TRUE@ ais_json.i \
@LIB_Q_GPSMM_ENABLE_TRUE@ gpsd.h \
@LIB_Q_GPSMM_ENABLE_TRUE@ $(QTLIB_DIST)

@LIB_Q_GPSMM_ENABLE_TRUE@QMAKE_OPTS = "PREFIX=${prefix}" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "MAKE=$(MAKE)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "QMAKE_CXX=$(CXX)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "QMAKE_CC=$(CC)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "QMAKE_CFLAGS+=$(CFLAGS)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "QMAKE_LFLAGS+=$(LDFLAGS)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "VERSION=$(libgps_VERSION)" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "TARGET_LIBDIR=${libdir}" \
@LIB_Q_GPSMM_ENABLE_TRUE@ "TARGET_INCLUDEDIR=${includedir}"


#
# Build test_float
@@ -652,19 +681,27 @@ test_trig_LDADD = $(LIBC) -lm
# Build test_gpsmm
#
@LIBGPSMM_ENABLE_TRUE@test_gpsmm_SOURCES = test_gpsmm.cpp
@LIBGPSMM_ENABLE_TRUE@test_gpsmm_LDADD = $(LIBC) libgps.la -lm $(LIBUSB)
@LIBGPSMM_ENABLE_TRUE@test_gpsmm_LDADD = $(LIBC) libgps.la -lm $(LIBUSB_LIBS)

#
# Build test_qgpsmm
#
@LIB_Q_GPSMM_ENABLE_TRUE@test_qgpsmm_SOURCES = test_gpsmm.cpp
@LIB_Q_GPSMM_ENABLE_TRUE@test_qgpsmm_LDFLAGS = -Wl,-rpath,$(srcdir)/libQgpsmm/binaries
@LIB_Q_GPSMM_ENABLE_TRUE@test_qgpsmm_LDADD = $(LIBC) $(LIBUSB) $(QtNetwork_LIBS) -LlibQgpsmm/binaries -lQgpsmm
@LIB_Q_GPSMM_ENABLE_TRUE@test_qgpsmm_DEPENDENCIES = libQgpsmm/binaries/libQgpsmm.so

#
# Build test_bits tester
#
test_bits_SOURCES = test_bits.c
test_bits_LDADD = $(LIBC) libgpsd.la libgps.la $(LIBUSB)
test_bits_LDADD = $(LIBC) libgpsd.la libgps.la $(LIBUSB_LIBS)

#
# Build packets tester
#
test_packet_SOURCES = test_packet.c
test_packet_LDADD = $(LIBC) libgpsd.la libgps.la -lm $(LIBUSB)
test_packet_LDADD = $(LIBC) libgpsd.la libgps.la -lm $(LIBUSB_LIBS)

#
# Build geoid model tester
@@ -685,8 +722,6 @@ test_json_LDADD = $(LIBC) libgps.la -lm
MANPAGES_BASE = \
gpsd.8 \
gps.1 \
xgps.1 \
xgpsspeed.1 \
cgps.1 \
lcdgps.1 \
libgps.3 \
@@ -716,7 +751,7 @@ MANPAGES_BASE = \
noinst_HEADERS = gpsd_config.h \
driver_italk.h driver_rtcm2.h driver_superstar2.h \
driver_ubx.h gpsmon.h gpsdclient.h json.h gps_json.h \
revision.h
revision.h TachometerP.h Tachometer.h

nodist_include_HEADERS = gpsd.h
@LIBGPSMM_ENABLE_FALSE@include_HEADERS = gps.h
@@ -738,8 +773,8 @@ XML = \
srec.xml


# Note: packaging/gpsd.spec is generated, but it needs to be in the
# tarball in order for 'make diat-rpm' to work. The BUILT_SOURCES
# Note: packaging/rpm/gpsd.spec is generated, but it needs to be in the
# tarball in order for 'make dist-rpm' to work. The BUILT_SOURCES
# files are here in order to minimize build dependencies for package
# builders who never alter anything, especially the Python dependency.
# Also note that the test and gps directories are here rather than
@@ -766,7 +801,6 @@ EXTRA_DIST = \
$(XML) \
$(BUILT_SOURCES) \
$(MANPAGES_DIST) \
xgpsspeed.ad \
gpsd.rules \
gpsd.hotplug \
gpsd.hotplug.wrapper \
@@ -782,24 +816,29 @@ EXTRA_DIST = \
libgps.pc.in \
libgpsd.pc.in \
gpscap.ini \
packaging/gpsd.spec \
packaging/etc_default_gpsd \
packaging/etc_init.d_gpsd \
packaging/etc_init.d_gpsd_rpm \
packaging/deb/etc_default_gpsd \
packaging/deb/etc_init.d_gpsd \
packaging/rpm/gpsd.spec \
packaging/rpm/gpsd.init \
packaging/rpm/gpsd.sysconfig \
packaging/X11/xgps.desktop \
packaging/X11/xgpsspeed.desktop \
packaging/X11/gpsd-logo.png \
do-tests \
regress-driver \
$(PYTHONSCRIPTS_DIST) \
$(PYTHONMODULES_DIST) \
$(QTLIB_DIST) \
$(QTLIB_DIST_MINGW) \
test

pkgconfig_DATA = libgps.pc libgpsd.pc
pkgconfigdir = $(libdir)/pkgconfig

# Report splint warnings
SPLINTOPTS = -I/usr/include/dbus-1.0/ $(INCUSB) +quiet
SPLINTOPTS = -I/usr/include/dbus-1.0/ $(LIBUSB_CFLAGS) +quiet

# Re-indent the codebase in aa uniform style for readability.
# FIXME: Except for xgpsspeed - Tachometer.c makes GNI indent lose it.
# Re-indent the codebase in a uniform style for readability.
INDENT_FILES = $(gpsd_c_sources) $(libgpsd_c_sources) $(libgps_c_sources) \
$(cgps_SOURCES) $(gpsmon_SOURCES) $(gpspipe_SOURCES) \
$(gpxlogger_SOURCES) $(gpsdecode_SOURCES) \
@@ -839,12 +878,24 @@ INDENT_OPTIONS = --indent-level4 \
# around this, but because the generated rule (check-TESTS) both
# depends on each TEST as well as invokes it (with TESTS_ENVIRONMENT)
# the entire list of tests is run twice.
run_regress_driver = PYTHON=$(PYTHON) $(srcdir)/regress-driver

# Use make REGRESSOPTS=-u to force running with UDP rather than pty devices
run_regress_driver = PYTHON=$(PYTHON) $(srcdir)/regress-driver $(REGRESSOPTS)

# do-tests is a shell script that invokes make with target testregress.
# This works around automake's lack of support for make targets as tests.
TESTS_ENVIRONMENT = MAKE=$(MAKE) PYTHON=$(PYTHON)
TESTS = do-tests

# We need to run epydoc with the Python version we built the modules for.
# So we define our on epydoc instead of using /usr/bin/epydoc
@HAVE_PYTHON_TRUE@EPYDOC = $(PYTHON) -c 'from epydoc.cli import cli; cli()'

# We have pre-compiled python scripts in the script directory, so we exclude
# all files ending on c here. Needs a better solution as soon as we have a
# script ending with c.
@HAVE_PYTHON_TRUE@EPYDOCSCRIPTS = $(shell find $(PYTHON_DISTUTILS_SCRIPTDIR) -name '*c' -o -type f -print)
@HAVE_PYTHON_TRUE@EPYDOCMODULES = $(PYTHON_DISTUTILS_LIBDIR)/gps
all: $(BUILT_SOURCES) gpsd_config.h
$(MAKE) $(AM_MAKEFLAGS) all-am

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

distclean-hdr:
-rm -f gpsd_config.h stamp-h1
packaging/gpsd.spec: $(top_builddir)/config.status $(top_srcdir)/packaging/gpsd.spec.in
packaging/rpm/gpsd.spec: $(top_builddir)/config.status $(top_srcdir)/packaging/rpm/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 $@
@@ -1088,12 +1139,12 @@ test_mkgmtime$(EXEEXT): $(test_mkgmtime_OBJECTS) $(test_mkgmtime_DEPENDENCIES)
test_packet$(EXEEXT): $(test_packet_OBJECTS) $(test_packet_DEPENDENCIES)
@rm -f test_packet$(EXEEXT)
$(LINK) $(test_packet_OBJECTS) $(test_packet_LDADD) $(LIBS)
test_qgpsmm$(EXEEXT): $(test_qgpsmm_OBJECTS) $(test_qgpsmm_DEPENDENCIES)
@rm -f test_qgpsmm$(EXEEXT)
$(test_qgpsmm_LINK) $(test_qgpsmm_OBJECTS) $(test_qgpsmm_LDADD) $(LIBS)
test_trig$(EXEEXT): $(test_trig_OBJECTS) $(test_trig_DEPENDENCIES)
@rm -f test_trig$(EXEEXT)
$(LINK) $(test_trig_OBJECTS) $(test_trig_LDADD) $(LIBS)
xgpsspeed$(EXEEXT): $(xgpsspeed_OBJECTS) $(xgpsspeed_DEPENDENCIES)
@rm -f xgpsspeed$(EXEEXT)
$(LINK) $(xgpsspeed_OBJECTS) $(xgpsspeed_LDADD) $(LIBS)

mostlyclean-compile:
-rm -f *.$(OBJEXT)
@@ -1101,7 +1152,6 @@ mostlyclean-compile:
distclean-compile:
-rm -f *.tab.c

@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/Tachometer.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ais_json.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bits.Plo@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bsd-base64.Plo@am__quote@
@@ -1173,7 +1223,6 @@ distclean-compile:
@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)/test_trig.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xgpsspeed.Po@am__quote@

.c.o:
@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
@@ -1665,8 +1714,12 @@ distdir: $(DISTFILES)
|| exit 1; \
fi; \
done
$(MAKE) $(AM_MAKEFLAGS) \
top_distdir="$(top_distdir)" distdir="$(distdir)" \
dist-hook
-test -n "$(am__skip_mode_fix)" \
|| find "$(distdir)" -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|| find "$(distdir)" -type d ! -perm -755 \
-exec chmod u+rwx,go+rx {} \; -o \
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
@@ -1710,17 +1763,17 @@ dist dist-all: distdir
distcheck: dist
case '$(DIST_ARCHIVES)' in \
*.tar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\
*.tar.bz2*) \
bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\
*.tar.lzma*) \
unlzma -c $(distdir).tar.lzma | $(am__untar) ;;\
lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\
*.tar.xz*) \
xz -dc $(distdir).tar.xz | $(am__untar) ;;\
*.tar.Z*) \
uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
*.shar.gz*) \
GZIP=$(GZIP_ENV) gunzip -c $(distdir).shar.gz | unshar ;;\
GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\
*.zip*) \
unzip $(distdir).zip ;;\
esac
@@ -1820,8 +1873,6 @@ maintainer-clean-generic:
@echo "This command is intended for maintainers to use"
@echo "it deletes files that may require special tools to rebuild."
-test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
@HAVE_PYTHON_FALSE@install-exec-local:
@HAVE_PYTHON_FALSE@clean-local:
clean: clean-am

clean-am: clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
@@ -1833,7 +1884,7 @@ distclean: distclean-am
-rm -rf ./$(DEPDIR)
-rm -f Makefile
distclean-am: clean-am distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-tags
distclean-hdr distclean-libtool distclean-local distclean-tags

dvi: dvi-am

@@ -1912,13 +1963,13 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \
clean clean-binPROGRAMS clean-checkPROGRAMS clean-generic \
clean-libLTLIBRARIES clean-libtool clean-local \
clean-sbinPROGRAMS ctags dist dist-all dist-bzip2 dist-gzip \
dist-lzma dist-shar dist-tarZ dist-xz dist-zip distcheck \
distclean distclean-compile distclean-generic distclean-hdr \
distclean-libtool distclean-tags distcleancheck distdir \
distuninstallcheck dvi dvi-am html html-am info info-am \
install install-am install-binPROGRAMS install-data \
install-data-am install-dvi install-dvi-am install-exec \
install-exec-am install-exec-local install-html \
dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \
distcheck distclean distclean-compile distclean-generic \
distclean-hdr distclean-libtool distclean-local distclean-tags \
distcleancheck distdir distuninstallcheck dvi dvi-am html \
html-am info info-am install install-am install-binPROGRAMS \
install-data install-data-am install-dvi install-dvi-am \
install-exec install-exec-am install-exec-local install-html \
install-html-am install-includeHEADERS install-info \
install-info-am install-libLTLIBRARIES install-man \
install-man1 install-man3 install-man5 install-man8 \
@@ -1935,6 +1986,16 @@ uninstall-man: uninstall-man1 uninstall-man3 uninstall-man5 \
uninstall-pkgconfigDATA uninstall-pythonPYTHON \
uninstall-sbinPROGRAMS

print_libgps_VERSION_CURRENT:
echo $(libgps_VERSION_CURRENT)
print_libgps_VERSION__REVISION:
echo $(libgps_VERSION__REVISION)
print_libgps_VERSION_AGE:
echo $(libgps_VERSION_AGE)
print_libgps_SONAME:
echo $(libgps_SONAME)
print_libgps_VERSION:
echo $(libgps_VERSION)

packet_names.h: packet_states.h
rm -f packet_names.h && \
@@ -1964,18 +2025,25 @@ gps_maskdump.c: gps.h maskaudit.py
$(PYTHON) maskaudit.py -c >gps_maskdump.c && \
chmod a-w gps_maskdump.c

gpsd_maskdump.c: gpsd.h-tail maskaudit.py
gpsd_maskdump.c: gpsd.h maskaudit.py
rm -f gpsd_maskdump.c && \
$(PYTHON) maskaudit.py -d >gpsd_maskdump.c && \
chmod a-w gpsd_maskdump.c

# Multiple-outputs hack. See
# http://www.gnu.org/software/automake/manual/automake.html#Multiple-Outputs
@HAVE_PYTHON_TRUE@$(PYEXTENSIONS): stamp-python-modules
@HAVE_PYTHON_TRUE@ +@WITNESS=stamp-python-modules; $(MULTIOUT_RECOVER_DELETED)
@HAVE_PYTHON_TRUE@$(PYEXTENSIONS): stamp-python
@HAVE_PYTHON_TRUE@ +@WITNESS=stamp-python; $(MULTIOUT_RECOVER_DELETED)
# TODO: Should the dependency on libgps.la be enforced inside
# setup.py? (See the variable 'needed_files' in setup.py.)
@HAVE_PYTHON_TRUE@stamp-python-modules: gpspacket.c gpsclient.c libgps.la setup.py
@HAVE_PYTHON_TRUE@stamp-python: gpspacket.c gpsclient.c libgps.la setup.py $(PYTHONMODULES_DIST) $(PYTHONSCRIPTS_DIST)
# Build Python modules and scripts using distutils via setup.py.
# We define build-lib and build-scripts as distutils might have been
# configured to use different directories, but we want to use the
# produced files within the regress-driver script - therefore we
# need to build them in directories we know about.
# See configure.ac for the definition of PYTHON_DISTUTILS_LIBDIR
# and PYTHON_DISTUTILS_SCRIPTDIR.
@HAVE_PYTHON_TRUE@ @rm -f '$@' '$@.tmp'
@HAVE_PYTHON_TRUE@ @echo 'timestamp for $@' > '$@.tmp'
@HAVE_PYTHON_TRUE@ (cd '$(srcdir)' && \
@@ -1984,31 +2052,53 @@ gpsd_maskdump.c: gpsd.h-tail maskaudit.py
@HAVE_PYTHON_TRUE@ $(PYTHON) setup.py build \
@HAVE_PYTHON_TRUE@ --build-lib '$(srcdir)/$(PYTHON_DISTUTILS_LIBDIR)' \
@HAVE_PYTHON_TRUE@ --build-scripts '$(srcdir)/$(PYTHON_DISTUTILS_SCRIPTDIR)' \
@HAVE_PYTHON_TRUE@ --mangenerator '$(MANGENERATOR)') && \
@HAVE_PYTHON_TRUE@ --mangenerator '$(XMLPROC)') && \
@HAVE_PYTHON_TRUE@ (cd '$(srcdir)/gps' && \
@HAVE_PYTHON_TRUE@ rm -f *.so && \
@HAVE_PYTHON_TRUE@ ln -s ../$(PYTHON_DISTUTILS_LIBDIR)/gps/*.so . ) && \
@HAVE_PYTHON_TRUE@ mv -f '$@.tmp' '$@'

# Clean up after Python
@HAVE_PYTHON_TRUE@clean-local:
@LIB_Q_GPSMM_ENABLE_TRUE@libQgpsmm/Makefile: libQgpsmm/libQgpsmm.pro gpsd.h ais_json.i
@LIB_Q_GPSMM_ENABLE_TRUE@ cd $(srcdir)/libQgpsmm && $(QMAKE) $(QMAKE_OPTS)
# Yet another multiple-outputs hack:
@LIB_Q_GPSMM_ENABLE_TRUE@$(QTLIBS): stamp-qt
@LIB_Q_GPSMM_ENABLE_TRUE@ +@WITNESS=stamp-qt; $(MULTIOUT_RECOVER_DELETED)
@LIB_Q_GPSMM_ENABLE_TRUE@stamp-qt: $(QTLIB_sources) libQgpsmm/Makefile
@LIB_Q_GPSMM_ENABLE_TRUE@ $(MAKE) -C $(srcdir)/libQgpsmm
@LIB_Q_GPSMM_ENABLE_TRUE@ touch $@

# Clean up after Python and QT
clean-local:
@HAVE_PYTHON_TRUE@ rm -rf build gps/*.so

# Install Python modules
@HAVE_PYTHON_TRUE@install-exec-local:
@HAVE_PYTHON_TRUE@ $(PYTHON) setup.py install --prefix=${prefix} --root=$(DESTDIR)
@LIB_Q_GPSMM_ENABLE_TRUE@ if test -r $(srcdir)/libQgpsmm/Makefile; then \
@LIB_Q_GPSMM_ENABLE_TRUE@ $(MAKE) -C $(srcdir)/libQgpsmm distclean || true; \
@LIB_Q_GPSMM_ENABLE_TRUE@ fi
@LIB_Q_GPSMM_ENABLE_TRUE@ rm -rf $(srcdir)/libQgpsmm/binaries
@LIB_Q_GPSMM_ENABLE_TRUE@ rm -f $(srcdir)/libQgpsmm/*.o $(srcdir)/libQgpsmm/Makefile

# Install Python modules and QT library
install-exec-local:
# Make sure we do not use --root as option to setup.py install
# when DESTDIR is not defined as distutils would use the current
# working directory as root directory and not install to ${prefix}.
@HAVE_PYTHON_TRUE@ if test -z "$(DESTDIR)"; then \
@HAVE_PYTHON_TRUE@ $(PYTHON) setup.py install --prefix=${prefix} ;\
@HAVE_PYTHON_TRUE@ else \
@HAVE_PYTHON_TRUE@ $(PYTHON) setup.py install --prefix=${prefix} --root=$(DESTDIR) ;\
@HAVE_PYTHON_TRUE@ fi
@LIB_Q_GPSMM_ENABLE_TRUE@ $(MAKE) -C libQgpsmm install INSTALL_ROOT=$(DESTDIR)

@HAVE_XSLT_PROCESSOR_TRUE@.xml.1:
@HAVE_XSLT_PROCESSOR_TRUE@ $(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
@HAVE_XSLT_PROCESSOR_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

@HAVE_XSLT_PROCESSOR_TRUE@.xml.3:
@HAVE_XSLT_PROCESSOR_TRUE@ $(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
@HAVE_XSLT_PROCESSOR_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

@HAVE_XSLT_PROCESSOR_TRUE@.xml.5:
@HAVE_XSLT_PROCESSOR_TRUE@ $(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
@HAVE_XSLT_PROCESSOR_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

@HAVE_XSLT_PROCESSOR_TRUE@.xml.8:
@HAVE_XSLT_PROCESSOR_TRUE@ $(MANGENERATOR) $(MANFLAGS) $(MANTARGET) $<
@HAVE_XSLT_PROCESSOR_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) $<

# Another instance of the multiple-outputs hack.
@HAVE_XSLT_PROCESSOR_TRUE@gps.1 xgps.1 xgpsspeed.1 cgps.1 lcdgps.1: stamp-gps-manpages
@@ -2016,9 +2106,19 @@ gpsd_maskdump.c: gpsd.h-tail maskaudit.py
@HAVE_XSLT_PROCESSOR_TRUE@stamp-gps-manpages: gps.xml
@HAVE_XSLT_PROCESSOR_TRUE@ @rm -f '$@' '$@.tmp'
@HAVE_XSLT_PROCESSOR_TRUE@ echo 'timestamp for $@' > '$@.tmp' && \
@HAVE_XSLT_PROCESSOR_TRUE@ $(MANGENERATOR) $(MANFLAGS) $(MANTARGET) '$(srcdir)/gps.xml' && \
@HAVE_XSLT_PROCESSOR_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(MANTARGET) '$(srcdir)/gps.xml' && \
@HAVE_XSLT_PROCESSOR_TRUE@ mv -f '$@.tmp' '$@'

# Prepare necessary files to build the mingw-port of libQgpsmm
# while creating the dist tarball.
dist-hook: ais_json.i gpsd_config.h
$(MKDIR_P) '$(distdir)/libQgpsmm/mingw'
cp -p ais_json.i $(distdir)/libQgpsmm/mingw
grep "#define VERSION" gpsd_config.h > $(distdir)/libQgpsmm/mingw/version.h
echo "VERSION=$(libgps_VERSION)" > $(distdir)/libQgpsmm/mingw/version.pri
distclean-local:
rm -f $(distdir)/libQgpsmm/mingw/version.* $(distdir)/libQgpsmm/mingw/ais_json.i

# These are not distributed
libgps: libgps_core.c gps.h .libs/libgps.a
$(CC) $(CFLAGS) -o libgps -lm -DTESTMAIN $(LIBPTHREAD) -g libgps_core.c .libs/libgps.a
@@ -2027,8 +2127,6 @@ splint: gpsd.h packet_names.h
-splint $(SPLINTOPTS) -exportlocal -redef $(gpsd_c_sources) $(libgpsd_c_sources) $(libgps_c_sources)
@echo "Running splint on cgps..."
-splint $(SPLINTOPTS) -exportlocal $(cgps_SOURCES)
@echo "Running splint on xgpsspeed..."
-splint $(SPLINTOPTS) -exportlocal $(xgpsspeed_c_sources)
@echo "Running splint on gpsctl..."
-splint $(SPLINTOPTS) $(gpsctl_SOURCES)
@echo "Running splint on gpsmon..."
@@ -2053,6 +2151,10 @@ splint: gpsd.h packet_names.h
# Report cppcheck warnings. Requires 1.40 or later.
cppcheck: gpsd.h packet_names.h
cppcheck --template gcc --all --force .

# Check the documentation for bogons, too
xmllint: $(XML)
for xml in $(XML); do xmllint --nonet --noout --valid $$xml; done
indent:
chmod u+w *maskdump.c
indent $(INDENT_OPTIONS) $(INDENT_FILES)
@@ -2068,17 +2170,17 @@ version:
@echo $(VERSION)

# Regression-test the daemon
gps-regress: gpsd
gps-regress: gpsd stamp-python
$(run_regress_driver) $(srcdir)/test/daemon/*.log

# Test that super-raw mode works. Compare each logfile against itself
# dumped through the daemon running in R=2 mode. (This test is not
# included in the normal regressions.)
raw-regress:
raw-regress: stamp-python
$(run_regress_driver) -r $(srcdir)/test/daemon/*.log

# Build the regression tests for the daemon.
gps-makeregress: gpsd
gps-makeregress: gpsd stamp-python
$(run_regress_driver) -b $(srcdir)/test/daemon/*.log

# To build an individual test for a load named foo.log, put it in
@@ -2175,18 +2277,22 @@ testregress: gps-regress rtcm-regress aivdm-regress packet-regress time-regress
#
# None of these productions are fired by 'make all'.

# FIXME: Needs to be replaced by a $(MANGENERATOR) rule
%.html: %.xml
xmlto xhtml-nochunks $<
@XMLTOSTDOUT_TRUE@www/%.html: %.xml
@XMLTOSTDOUT_TRUE@ $(XMLPROC) $(XMLPROCFLAGS) $(HTMLTARGET) $< >$(<:.xml=.html) ; cp $(<:.xml=.html) $@
@XMLTOSTDOUT_FALSE@www/%.html: %.xml
@XMLTOSTDOUT_FALSE@ $(XMLPROC) $(XMLPROCFLAGS) $(HTMLTARGET) $<; cp $(<:.xml=.html) $@

website: $(XML:.xml=.html) \
website: www/gpscat.html www/gpsctl.html www/gpsdecode.html \
www/gpsd.html www/gpsfake.html www/gpsmon.html \
www/gpspipe.html www/gpsprof.html www/gps.html \
www/libgpsd.html www/libgpsmm.html www/libgps.html \
www/rtcm-104.html www/srec.html \
www/AIVDM.html www/NMEA.html \
www/protocol-evolution.html www/protocol-transition.html \
www/client-howto.html www/writing-a-driver.html \
www/index.html www/hardware.html \
www/performance/performance.html \
www/internals.html
@cp $(XML:.xml=.html) www

www/AIVDM.html: www/AIVDM.txt
asciidoc -a toc -o www/AIVDM.html www/AIVDM.txt
@@ -2220,13 +2326,11 @@ www/internals.html: $(shell ls doc/*.xml)

# Experimenting with pydoc. Not yet fired by any other productions.

pydoc: www/pydoc/index.html

www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python-modules
mkdir -p www/pydoc
epydoc -v -q --html --graph all -n GPSD gps gpsfake gpscat gpsprof -o www/pydoc
@HAVE_PYTHON_TRUE@pydoc: www/pydoc/index.html

.PHONY: pydoc
@HAVE_PYTHON_TRUE@www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python
@HAVE_PYTHON_TRUE@ mkdir -p www/pydoc
@HAVE_PYTHON_TRUE@ $(EPYDOC) -v --html --graph all -n GPSD $(EPYDOCSCRIPTS) $(EPYDOCMODULES) -o www/pydoc

# Productions for setting up and performing udev tests.
#
@@ -2236,15 +2340,13 @@ www/pydoc/index.html: gps gpsfake gpscat gpsprof stamp-python-modules
# 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/
cp $(srcdir)/gpsd.rules /lib/udev/rules.d/025_gpsd.rules
cp $(srcdir)/gpsd.hotplug $(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
rm -f /lib/udev/{gpsd.hotplug,gpsd.hotplug.wrapper}
rm -f /lib/udev/rules.d/025_gpsd.rules

udev-test:
$(srcdir)/gpsd -N -F /var/run/gpsd.sock -D 4
@@ -2280,6 +2382,13 @@ release-tag:
#
ship: testregress clean dist upload-ftp release-tag

.PHONY: print_libgps_VERSION_CURRENT \
print_libgps_VERSION__REVISION \
print_libgps_VERSION_AGE \
print_libgps_SONAME \
print_libgps_VERSION \
pydoc

# Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT:

+ 87
- 67
NEWS View File

@@ -1,13 +1,33 @@
* Sun Apr 20 2010 Eric S. Raymond <esr@snark.thyrsus.com> - 2.94
* Tue Jul 13 2010 Eric S. Raymond <esr@snark.thyrsus.com> - 2.95
The autonomous robot submarine total world domination release!
Rationalize clearing and generation of DOPs, this makes epx/epy much
more generally available. Fixed the test productions for the udev
magic and added a troubleshooting note in INSTALL. cgps now displays
epx/epy rather than eph. Speed is now always reported if our last
two fixes were good, even if the GPS didn't compute it. Reading
packets from UDP datagrams by specifying a listening address and
port is now supported, and the regression-test driver cam now be
told to force this with -u; this enables regression testing in
chroot jails where access to ptys is locked out. AIS code now
interprets message type 6 and 8 application IDs correctly as a
Designated Area Code and Functional ID pair. gpspipe has a new -T
option for setting the timestamp format. xgpsspeed is completely
rewritten in Python, eliminating some dependencies on ancient X
libraries. We now ship a Qt binding for the client library. Note
a GCC 4.2.1 optimizer bug. gpsdcode now uses | as a field separator
in -c mode, as string fields can contain commas. Corrected error
or reporting of AIS rate-of-turn fields.

* Tue Apr 20 2010 Eric S. Raymond <esr@snark.thyrsus.com> - 2.94
Error-checking in the 50bps subframe code has been greatly improved.
The Garmin GPS driver can now use libusb, if it is present, to do
device discovery. The libgps library has been split apart; the
service functions used by the daemon now live in libgpsd. This
will shave some code volume from GPSD client applications. A packaging
error that resulted in xgps not being shipped in 2.93 has been
corrected. We now have stronger checking for valid ephemeris before
extracting the leap-second offset; they should prevent many cases
where gpsd migh previously have used an invalid leap-second offset.
corrected. We now have stronger checking for valid ephemeris before
extracting the leap-second offset; they should prevent many cases
where gpsd might previously have used an invalid leap-second offset.

* Fri Apr 16 2010 Eric S. Raymond <esr@snark.thyrsus.com> - 2.93
Support for JSON dumping and parsing of AIS message types 25 and 26,
@@ -71,13 +91,13 @@
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
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 works correctly in locales where the decimal separator is
library now works correctly in locales where the decimal separator is
not a period.

* Tue Feb 10 2009 Eric S. Raymond <esr@snark.thyrsus.com> - 2.38
@@ -106,33 +126,33 @@
28 Feb on generic NMEA GPSes, Zodiacs, and SirFs emitting message 0x62.
Integrated Garmin Simple Text Protocol driver from Peter Slansky.
Minor fixes in error modeling and a better NaN guard stabilize the
Trimble regression tests. Remove the wired-in NTP time offset from the
Trimble regression tests. Remove the wired-in NTP time offset from the
NMEA driver, this could only have worked by accident and should be
set in ntpd.conf. Integrated Ashtech driver from Chris Kuethe.

* Mon Dec 10 2007 Eric S. Raymond <esr@snark.thyrsus.com> - 2.35-1
Navcom driver merged. Removed -d -f and -p options of gpsd; these
Navcom driver merged. Removed -d -f and -p options of gpsd; these
have been undocumented for a while. Make gpsd play well with pkgconfig.
Incorrect computation of VDOP when GPSes didn't supply it has been fixed.
The xgps code has been revamped and now has a much nicer interface.
Add -b (no-configuration) option as a sadly clumsy workaround for some
problems with Bluetooth receivers. Added tests for Haicom-305N and Pharos
problems with Bluetooth receivers. Added tests for Haicom-305N and Pharos
360; separated out the tests for the unstable Trimble drivers.
32-vs-64-bit problems in the regression tests have been solved.

* Thu Dec 14 2006 Eric S. Raymond <esr@snark.thyrsus.com> - 2.34-1
Fix for byte-swapping of Zodiac control messages on big-endian hardware.
Fix for byte-swapping of Zodiac control messages on big-endian hardware.
Disable iTalk by default and note that it needs to be tested. Command line
arguments can now be DGPSIP or NTRIP URLs; -d is deprecated. Added udev
rules. Address excessive processor and memory utilization on SBCs; it's
now possible to configure compile-time limits on the number of devices
and client sessions. Eliminate use of fuser(1) in gpsfake. Get gpsd
working with EarthMates again, this had been broken since 2.15. Massive
working with EarthMates again, this had been broken since 2.15. Massive
string safety audit and OpenBSD port by Chris Kuethe. J command added.
The gpsctl and gpscat tools and the gpsd.phps script were added. Switched
to lesstif from openmotif. Better autodetection of DLE-led packet
The gpsctl and gpscat tools and the gpsd.phps script were added. Switched
to lesstif from openmotif. Better autodetection of DLE-led packet
protocols (notably TSIP and Garmin binary) and of SiRFStar I and III
devices. Fixed buggy parsing and generation of PGRME.
devices. Fixed buggy parsing and generation of PGRME.

* Fri Jun 9 2006 Eric S. Raymond <esr@snark.thyrsus.com> - 2.33-1
Fix bad unit conversion in V output. Clean up some man-page messes.
@@ -157,19 +177,19 @@

* Wed Sep 14 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.30-1
Prevent core dump on -d option. The .log extension is no longer required for
test loads. cgps and xgps now have configurable latitude/longitude formats
test loads. cgps and xgps now have configurable latitude/longitude formats
via the -l option. Introduced new 'g' command that allows clients to
specify whether they want GPS or RTCM104 information.

* Fri Aug 19 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.29-1
Added Sony CXD2951 support, untested. All error estimates are
now nailed to 95% confidence interval. Added rtcmdecode and its
documentation; also, gpsd can now monitor serial devices emitting
RTCM104 and display differential-GPS data in a readable format.
Added dangerous alpha version of gpsflash. Work around a nasty bug
in SiRFStar III firmware version < 3.1.1. Added support for True
North Technologies Revolution 2X Digital compass. Added the
gpxlogger client for systems with DBUS support and the gpspipe
documentation; also, gpsd can now monitor serial devices emitting
RTCM104 and display differential-GPS data in a readable format.
Added dangerous alpha version of gpsflash. Work around a nasty bug
in SiRFStar III firmware version < 3.1.1. Added support for True
North Technologies Revolution 2X Digital compass. Added the
gpxlogger client for systems with DBUS support and the gpspipe
and cgps clients for general use.

* Wed Jul 6 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.28-1
@@ -185,7 +205,7 @@
of the gpsfake logic now lives in a module that can be used to write
other test loads; its progress baton is now optional. Fixed
some minor bugs found by valgrind audit, including (1) a slow
memory leak, (2) a possible but unconfirmed file-descriptor leak,
memory leak, (2) a possible but unconfirmed file-descriptor leak,
and (3) a subtle error in the channel-assignment logic that only
showed up with multiple sessions active. In fact, the daemon code
no longer uses dynamic-memory allocation at all. Also, the code
@@ -196,7 +216,7 @@
at odd times.

* Wed Jun 22 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.26
Time DOP and total DOP are now passed on from GPSes that report
Time DOP and total DOP are now passed on from GPSes that report
them. Ensure longitude has a leading zero when <100, for
compatibility with gpsdrive. Synchronous and thread hooks are now
separate in the client library. Packet-sniffing on a new device no
@@ -213,12 +233,12 @@
audited and cleaned with splint (www.splint.org).

* Sat May 21 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.25-1
Various signedness and scaling fixes and an OpenBSD port patch for the
Zodiac driver. Command-line arguments to gpsd are now treated as a default
Various signedness and scaling fixes and an OpenBSD port patch for the
Zodiac driver. Command-line arguments to gpsd are now treated as a default
device list; -f is still supported but deprecated. sirfmon now tries not
changing the line speed first, so it syncs up much faster. Prevent a
changing the line speed first, so it syncs up much faster. Prevent a
potential buffer overrun in the client library. PPS-thread support is now
on by default. Lots of documentation improvements. D-BUS broadcast support
on by default. Lots of documentation improvements. D-BUS broadcast support
by Amaury Jacquot. Added Alfredo Pironti's thread-callback and C++
support. gpsd no longer uses the system clock for anything, so it
can be used to set that clock.
@@ -226,15 +246,15 @@
* Tue May 17 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.24-1
Crazy-speed bug is finally fixed. Autobauding now starts with the
current speed of the device, not the stored gpsd speed; this means
hunting only takes place when device and GPS speed aren't matched.
hunting only takes place when device and GPS speed aren't matched.
xgpsspeed unit-conversion bug introduced in 2.22 is fixed. Satellite
display now really shows 12 channels, not just 11. Major improvements
display now really shows 12 channels, not just 11. Major improvements
in ntp notifications.

* Wed May 4 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.23-1
For better security, the daemon now drops root privileges after startup.
gpsd-clients is now a separate RPM; this is helpful on lean systems
that don't run X. The O command now reports speeds in meters per second
that don't run X. The O command now reports speeds in meters per second
rather than knots, client code has been adjusted so there is no user-visible
change. We now compute the missing components of DOP when using SiRF chips.
/dev/gps is no longer special; there is no default GPS device unless you
@@ -247,37 +267,37 @@
corrections from the SiRF folks. Higher precision in position reports.

* Tue Apr 12 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.21-1
Add tag and timestamp to Y response. Use computed geoid separation as
Add tag and timestamp to Y response. Use computed geoid separation as
SiRF packet 42 is flaky. Security fix: hotplug scripts now do device
add/removes through a separate local control channel. True multi-device
support is in place. When in watcher mode, device switches are announced.

* Thu Mar 31 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.20-1
Rob Janssen's patches to fix timezone issues and improve cooperation
with NTP. License changed to BSD so linking to libgps won't make people
nervous. gpsprobe and gpsd.py are obsolete and have been removed, the
autoprobe and profiling capabilities in the daemon more than replace
with NTP. License changed to BSD so linking to libgps won't make people
nervous. gpsprobe and gpsd.py are obsolete and have been removed, the
autoprobe and profiling capabilities in the daemon more than replace
them. gpsprof now ships self-contained GNUPLOT scripts to stdout,
so they can be saved and redisplayed. Zodiac sort of works again, but
so they can be saved and redisplayed. Zodiac sort of works again, but
occasionally spins madly during autobauding.

* Sat Mar 26 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.19-1
Fix brown-paper-bag bug with NMEA parsing. Set SiRF GPSes to use
SBAS. sirfmon now displays SBAS parameters, and is included in the
installed programs. Add to FAQ a fix for spurious high speeds reported
in XTrac mode. We now interpret GPZDA. We no longer fudge a missing
in XTrac mode. We now interpret GPZDA. We no longer fudge a missing
ddmmyy in NMEA timestamps from the system clock, so replay will work better.

* Wed Mar 23 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.18-1
First cut at cooperating with NTP. Major library restructuring;
a fix is now a data structure of its own, and per-field timestamps
are gone. Use new 'o' command for watcher mode. Compute some estimated
First cut at cooperating with NTP. Major library restructuring;
a fix is now a data structure of its own, and per-field timestamps
are gone. Use new 'o' command for watcher mode. Compute some estimated
error bounds.

* Wed Mar 16 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.17
Fix packet-engine problem that made disconnect/reconnect unreliable
(important!). Fix bonehead error in interpretation of PGRME. We
don't use O_SYNC (it turned out not to be reliable) so remove it to make
(important!). Fix bonehead error in interpretation of PGRME. We
don't use O_SYNC (it turned out not to be reliable) so remove it to make
life easier under Mac OS X. Allow gpsfake to accept subsecond cycle times.
Add a FAQ to the HTML documentation. gps_poll() now handles multi-line
responses. Add N command for switching driver modes.
@@ -285,7 +305,7 @@
* Fri Mar 11 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.16-1
New F command allows changing the GPS device after startup time.
Hotplug scripts to go with it are now installed by the RPM. The
Garmin probe is working. The -T and -s options are gone. We have
Garmin probe is working. The -T and -s options are gone. We have
achieved zero configuration!

* Wed Mar 02 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.15-1
@@ -301,7 +321,7 @@

* Fri Feb 25 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.14-1
Pass zero magnetic variation in generated NMEA from binary GPSes
correctly. Use O_SYNC rather than timeouts to guarantee that
correctly. Use O_SYNC rather than timeouts to guarantee that
baud-rate change strings get to the GPS before changing the line
parameters. Introduced I command. Spatial scattergram plotting
moved from gpsprobe to gpsprof.
@@ -333,8 +353,8 @@
Added gpsprof and the capability to generate GPS latency profiles.
gpsprobe now hunts through plausible baud rates when looking for NMEA
data from a GPS. The -b (baudrate) option fixes a speed, disabling
the baud-matching logic. Also, gpsprobe can now recognize SiRF
protocol, though not speak it. Fixed a math domain error in
the baud-matching logic. Also, gpsprobe can now recognize SiRF
protocol, though not speak it. Fixed a math domain error in
gps.EarthDistance due to numeric blowup on points very close together,
and another in gps.MeterOffset() that was screwing up gpsprobe plots.

@@ -348,8 +368,8 @@

* Thu Jan 27 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.8-1
Embarrassing typo fix in gps.py. Avoid buffer overrun in xgps.c.
Plug Debian security bug 292347, CVE number CAN-2004-1388.
This version issued on an emergency basis without Python libraries,
Plug Debian security bug 292347, CVE number CAN-2004-1388.
This version issued on an emergency basis without Python libraries,
which have packaging problems due to the 2.3/2.4 transition.

* Fri Jan 14 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.7-1
@@ -364,31 +384,31 @@

* Sat Jan 01 2005 Eric S. Raymond <esr@snark.thyrsus.com> - 2.6-1
Petter Reinholdtsen's fix for gps.py buffering. Fix syntax errors
in udev scriptlets. Clean up after GCC warning messages. Drop use of
vsprintf, so we get a link-time error on systems that might produce
in udev scriptlets. Clean up after GCC warning messages. Drop use of
vsprintf, so we get a link-time error on systems that might produce
buffer overruns (all modern Unixes support vsnsprintf which is safe).

* Thu Dec 23 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 2.5.1
Use gmtime instead of localtime when guessing the day or year of a date;
this avoids jitter in the day after 19:00 GMT. Added -v option to dump
this avoids jitter in the day after 19:00 GMT. Added -v option to dump
version and exit. Commented out a crash-causing debug line in gps.py.

* Thu Dec 9 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 2.4-1
Minor bugs in gpsd.py fixed. M now returns 0 status if GPGSA not yet
seen; this change also fixes a bug where gpsd claimed it was confused
if GPGSA had not been seen and status was set. RPM will now install
if GPGSA had not been seen and status was set. RPM will now install
a udevd rule if the host system uses it. Don't set the online flag
on activate. HP port changes and -Wall cleanup. James Cameron's
on activate. HP port changes and -Wall cleanup. James Cameron's
fixes to clean up gps.c and use X timeouts rather than alarms.

* Mon Oct 25 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 2.3-1
Documentation and comment fixes. Last two globals removed from
Documentation and comment fixes. Last two globals removed from
low-level interface; library should now be fully re-entrant. Mac OS X
port fixes. Q command fix from Robin L Darroch <robin@spade-men.com>.

* Mon Oct 18 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 2.2-1
Documentation improvements. BSD port fixes. Bug fix: speed timestamp
wasn't initialized properly in libgps. Device is now an optional
wasn't initialized properly in libgps. Device is now an optional
command-line argument of gpsprobe, in line with the clients. gpsd.py
now should handle fvwm devices correctly. Values in gps data
panel are now labeled with units. Attempted fix for 2.1 bug of DTR
@@ -426,18 +446,18 @@
installs shared libraries. FV18 driver added. Offline timer in GPS.

* Wed Aug 25 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 1.95-1
Fixed broken 'make dist', missing display.c and Tachometer.c
Fixed broken 'make dist', missing display.c and Tachometer.c
are in there now.

* Tue Aug 24 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 1.94-1
Fix embarrassing bug -- watcher mode did not work for more than one
client at a time. Y command now carries information about which
client at a time. Y command now carries information about which
satellites were used in the last fix. New timeout mechanism, no
longer dependent on FIONREAD.

* Mon Aug 23 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 1.93-1
Fourth prerelease. Daemon-side timeouts are gone, they complicated
the interface without adding anything. Command responses now
the interface without adding anything. Command responses now
contain ? to tag invalid data. -D2 feature of 1.92 backed out.

* Sun Aug 22 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 1.92-1
@@ -449,19 +469,19 @@
to be echoed to the client.

* Sat Aug 21 2004 Eric S. Raymond <esr@snark.thyrsus.com> - 1.91-1
Second pre-2.0 release. Features a linkable C library that hides the
Second pre-2.0 release. Features a linkable C library that hides the
details of communicating with the daemon. The daemon now recovers
gracefully from having the GPS unplugged and plugged in at any time;
one of the bits of status it can report is whether the GPS is online.
The gps and xgpsspeed clients now query the daemon; their code
The gps and xgpsspeed clients now query the daemon; their code
for direct access to the serial port has been deliberately removed.