xref: /OK3568_Linux_fs/buildroot/package/gpsd/gpsd.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1################################################################################
2#
3# gpsd
4#
5################################################################################
6
7GPSD_VERSION = 3.23.1
8GPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd
9GPSD_LICENSE = BSD-2-Clause
10GPSD_LICENSE_FILES = COPYING
11GPSD_CPE_ID_VENDOR = gpsd_project
12GPSD_SELINUX_MODULES = gpsd
13GPSD_INSTALL_STAGING = YES
14
15GPSD_DEPENDENCIES = host-python3 host-scons host-pkgconf
16
17GPSD_LDFLAGS = $(TARGET_LDFLAGS)
18GPSD_CFLAGS = $(TARGET_CFLAGS)
19GPSD_CXXFLAGS = $(TARGET_CXXFLAGS)
20
21GPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS)
22
23GPSD_SCONS_OPTS = \
24	arch=$(ARCH) \
25	manbuild=no \
26	prefix=/usr \
27	sysroot=$(STAGING_DIR) \
28	strip=no \
29	qt=no \
30	systemd=$(if $(BR2_INIT_SYSTEMD),yes,no)
31
32ifeq ($(BR2_PACKAGE_NCURSES),y)
33GPSD_DEPENDENCIES += ncurses
34else
35GPSD_SCONS_OPTS += ncurses=no
36endif
37
38# Build libgpsmm if we've got C++
39ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
40GPSD_LDFLAGS += -lstdc++
41GPSD_CFLAGS += -std=gnu++98
42GPSD_CXXFLAGS += -std=gnu++98
43GPSD_SCONS_OPTS += libgpsmm=yes
44else
45GPSD_SCONS_OPTS += libgpsmm=no
46endif
47
48ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_68485),y)
49GPSD_CFLAGS += -O0
50GPSD_CXXFLAGS += -O0
51endif
52
53# If libusb is available build it before so the package can use it
54ifeq ($(BR2_PACKAGE_LIBUSB),y)
55GPSD_DEPENDENCIES += libusb
56else
57GPSD_SCONS_OPTS += usb=no
58endif
59
60# If bluetooth is available build it before so the package can use it
61ifeq ($(BR2_PACKAGE_BLUEZ5_UTILS),y)
62GPSD_DEPENDENCIES += bluez5_utils
63else
64GPSD_SCONS_OPTS += bluez=no
65endif
66
67# If pps-tools is available, build it before so the package can use it
68# (HAVE_SYS_TIMEPPS_H).
69ifeq ($(BR2_PACKAGE_PPS_TOOLS),y)
70GPSD_DEPENDENCIES += pps-tools
71endif
72
73ifeq ($(BR2_PACKAGE_DBUS_GLIB),y)
74GPSD_SCONS_OPTS += dbus_export=yes
75GPSD_DEPENDENCIES += dbus-glib
76endif
77
78# Protocol support
79ifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y)
80GPSD_SCONS_OPTS += ashtech=no
81endif
82ifneq ($(BR2_PACKAGE_GPSD_AIVDM),y)
83GPSD_SCONS_OPTS += aivdm=no
84endif
85ifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y)
86GPSD_SCONS_OPTS += earthmate=no
87endif
88ifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y)
89GPSD_SCONS_OPTS += evermore=no
90endif
91ifneq ($(BR2_PACKAGE_GPSD_FURY),y)
92GPSD_SCONS_OPTS += fury=no
93endif
94ifneq ($(BR2_PACKAGE_GPSD_FV18),y)
95GPSD_SCONS_OPTS += fv18=no
96endif
97ifneq ($(BR2_PACKAGE_GPSD_GARMIN),y)
98GPSD_SCONS_OPTS += garmin=no
99endif
100ifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y)
101GPSD_SCONS_OPTS += garmintxt=no
102endif
103ifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y)
104GPSD_SCONS_OPTS += geostar=no
105endif
106ifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y)
107GPSD_SCONS_OPTS += gpsclock=no
108endif
109ifneq ($(BR2_PACKAGE_GPSD_GREIS),y)
110GPSD_SCONS_OPTS += greis=no
111endif
112ifneq ($(BR2_PACKAGE_GPSD_ISYNC),y)
113GPSD_SCONS_OPTS += isync=no
114endif
115ifneq ($(BR2_PACKAGE_GPSD_ITRAX),y)
116GPSD_SCONS_OPTS += itrax=no
117endif
118ifneq ($(BR2_PACKAGE_GPSD_MTK3301),y)
119GPSD_SCONS_OPTS += mtk3301=no
120endif
121ifneq ($(BR2_PACKAGE_GPSD_NMEA),y)
122GPSD_SCONS_OPTS += nmea0183=no
123endif
124ifneq ($(BR2_PACKAGE_GPSD_NTRIP),y)
125GPSD_SCONS_OPTS += ntrip=no
126endif
127ifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y)
128GPSD_SCONS_OPTS += navcom=no
129endif
130ifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y)
131GPSD_SCONS_OPTS += nmea2000=no
132endif
133ifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y)
134GPSD_SCONS_OPTS += oceanserver=no
135endif
136ifneq ($(BR2_PACKAGE_GPSD_ONCORE),y)
137GPSD_SCONS_OPTS += oncore=no
138endif
139ifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y)
140GPSD_SCONS_OPTS += rtcm104v2=no
141endif
142ifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y)
143GPSD_SCONS_OPTS += rtcm104v3=no
144endif
145ifneq ($(BR2_PACKAGE_GPSD_SIRF),y)
146GPSD_SCONS_OPTS += sirf=no
147endif
148ifneq ($(BR2_PACKAGE_GPSD_SKYTRAQ),y)
149GPSD_SCONS_OPTS += skytraq=no
150endif
151ifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y)
152GPSD_SCONS_OPTS += superstar2=no
153endif
154ifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y)
155GPSD_SCONS_OPTS += tsip=no
156endif
157ifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y)
158GPSD_SCONS_OPTS += tripmate=no
159endif
160ifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y)
161GPSD_SCONS_OPTS += tnt=no
162endif
163ifneq ($(BR2_PACKAGE_GPSD_UBX),y)
164GPSD_SCONS_OPTS += ublox=no
165endif
166
167# Features
168ifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y)
169GPSD_SCONS_OPTS += squelch=yes
170endif
171ifneq ($(BR2_PACKAGE_GPSD_OLDSTYLE),y)
172GPSD_SCONS_OPTS += oldstyle=no
173endif
174ifeq ($(BR2_PACKAGE_GPSD_PROFILING),y)
175GPSD_SCONS_OPTS += profiling=yes
176endif
177ifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y)
178GPSD_SCONS_OPTS += clientdebug=no
179endif
180ifeq ($(BR2_PACKAGE_GPSD_USER),y)
181GPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE)
182endif
183ifeq ($(BR2_PACKAGE_GPSD_GROUP),y)
184GPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE)
185endif
186ifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y)
187GPSD_SCONS_OPTS += max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE)
188endif
189ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y)
190GPSD_SCONS_OPTS += max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE)
191endif
192
193ifeq ($(BR2_PACKAGE_PYTHON3),y)
194GPSD_SCONS_OPTS += \
195	python=yes \
196	python_libdir="/usr/lib/python$(PYTHON3_VERSION_MAJOR)/site-packages"
197else ifeq ($(BR2_PACKAGE_PYTHON),y)
198GPSD_SCONS_OPTS += \
199	python=yes \
200	python_libdir="/usr/lib/python$(PYTHON_VERSION_MAJOR)/site-packages"
201else
202GPSD_SCONS_OPTS += python=no
203endif
204
205GPSD_SCONS_ENV += \
206	LDFLAGS="$(GPSD_LDFLAGS)" \
207	CFLAGS="$(GPSD_CFLAGS)" \
208	CCFLAGS="$(GPSD_CFLAGS)" \
209	CXXFLAGS="$(GPSD_CXXFLAGS)"
210
211define GPSD_BUILD_CMDS
212	(cd $(@D); \
213		$(GPSD_SCONS_ENV) \
214		$(HOST_DIR)/bin/python3 $(SCONS) \
215		$(GPSD_SCONS_OPTS))
216endef
217
218define GPSD_INSTALL_TARGET_CMDS
219	(cd $(@D); \
220		$(GPSD_SCONS_ENV) \
221		DESTDIR=$(TARGET_DIR) \
222		$(HOST_DIR)/bin/python3 $(SCONS) \
223		$(GPSD_SCONS_OPTS) \
224		$(if $(BR2_PACKAGE_HAS_UDEV),udev-install,install))
225endef
226
227define GPSD_INSTALL_INIT_SYSV
228	$(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd
229	$(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd
230endef
231
232# systemd unit files are installed automatically, but need to update the
233# /usr/local path references in the provided files to /usr.
234define GPSD_INSTALL_INIT_SYSTEMD
235	$(SED) 's%/usr/local%/usr%' \
236		$(TARGET_DIR)/usr/lib/systemd/system/gpsd.service \
237		$(TARGET_DIR)/usr/lib/systemd/system/gpsdctl@.service
238endef
239
240define GPSD_INSTALL_STAGING_CMDS
241	(cd $(@D); \
242		$(GPSD_SCONS_ENV) \
243		DESTDIR=$(STAGING_DIR) \
244		$(HOST_DIR)/bin/python3 $(SCONS) \
245		$(GPSD_SCONS_OPTS) \
246		install)
247endef
248
249# After the udev rule is installed, make it writable so that this
250# package can be re-built/re-installed.
251ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
252define GPSD_INSTALL_UDEV_RULES
253	chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules
254endef
255
256GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES
257endif
258
259$(eval $(generic-package))
260