mirror of
https://github.com/godotengine/buildroot.git
synced 2026-01-06 18:09:44 +03:00
When building C++ parts of gpsd (for example Qt bindings) with gcc 6.x following
failure happens, see [1]:
------------------------------>8-------------------------------
<command-line>:0:0: warning: "_LARGEFILE_SOURCE" redefined
<command-line>:0:0: note: this is the location of the previous definition
In file included from clock_gettime.c:10:0:
compiler.h: In function 'void memory_barrier()':
compiler.h:93:25: error: 'memory_order_seq_cst' was not declared in this scope
atomic_thread_fence(memory_order_seq_cst);
^~~~~~~~~~~~~~~~~~~~
compiler.h:93:25: note: suggested alternative:
In file included from .../output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/atomic:41:0,
from compiler.h:75,
from clock_gettime.c:10:
.../output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/bits/atomic_base.h:62:7: note: 'memory_order_seq_cst'
memory_order_seq_cst
^~~~~~~~~~~~~~~~~~~~
In file included from clock_gettime.c:10:0:
compiler.h:93:45: error: 'atomic_thread_fence' was not declared in this scope
atomic_thread_fence(memory_order_seq_cst);
^
compiler.h:93:45: note: suggested alternative:
In file included from .../output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/atomic:41:0,
from compiler.h:75,
from clock_gettime.c:10:
.../output/host/usr/arc-buildroot-linux-uclibc/include/c++/6.2.1/bits/atomic_base.h:101:3: note: 'std::atomic_thread_fence'
atomic_thread_fence(memory_order __m) noexcept
^~~~~~~~~~~~~~~~~~~
scons: *** [qt-clock_gettime.os] Error 1
scons: building terminated because of errors.
------------------------------>8-------------------------------
As discussed on gpsd mailng list here [2] the only work-around as of today is to
add "-std=gnu++98" to both CFLAGS and CXXFLAGS which we implement here.
Fixes:
http://autobuild.buildroot.net/results/e8593a8ebf2f05cc93235a8129a2ba8b839d6d90
http://autobuild.buildroot.net/results/ff766f4f514c9cb4891873167f4e9b7870051883
http://autobuild.buildroot.net/results/1a4/1a4dbd9ee5e0c7255843228731beab030ca005ca
http://autobuild.buildroot.net/results/1a4/1a4dbd9ee5e0c7255843228731beab030ca005ca
and many others, see http://autobuild.buildroot.net/?reason=gpsd-3.16
[1] http://autobuild.buildroot.net/results/e85/e8593a8ebf2f05cc93235a8129a2ba8b839d6d90/build-end.log
[2] http://lists.nongnu.org/archive/html/gpsd-dev/2016-09/msg00082.html
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
Cc: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
Cc: Bernd Kuhls <bernd.kuhls@t-online.de>
Cc: Sergio Prado <sergio.prado@e-labworks.com>
Cc: James Knight <james.knight@rockwellcollins.com>
Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
253 lines
6.0 KiB
Makefile
253 lines
6.0 KiB
Makefile
################################################################################
|
|
#
|
|
# gpsd
|
|
#
|
|
################################################################################
|
|
|
|
GPSD_VERSION = 3.16
|
|
GPSD_SITE = http://download-mirror.savannah.gnu.org/releases/gpsd
|
|
GPSD_LICENSE = BSD-3c
|
|
GPSD_LICENSE_FILES = COPYING
|
|
GPSD_INSTALL_STAGING = YES
|
|
|
|
GPSD_DEPENDENCIES = host-scons host-pkgconf
|
|
|
|
GPSD_LDFLAGS = $(TARGET_LDFLAGS)
|
|
GPSD_CFLAGS = $(TARGET_CFLAGS)
|
|
|
|
GPSD_SCONS_ENV = $(TARGET_CONFIGURE_OPTS)
|
|
|
|
GPSD_SCONS_OPTS = \
|
|
arch=$(ARCH)\
|
|
prefix=/usr\
|
|
sysroot=$(STAGING_DIR)\
|
|
strip=no\
|
|
python=no
|
|
|
|
ifeq ($(BR2_PACKAGE_NCURSES),y)
|
|
GPSD_DEPENDENCIES += ncurses
|
|
else
|
|
GPSD_SCONS_OPTS += ncurses=no
|
|
endif
|
|
|
|
# Build libgpsmm if we've got C++
|
|
ifeq ($(BR2_INSTALL_LIBSTDCPP),y)
|
|
GPSD_LDFLAGS += -lstdc++
|
|
GPSD_CFLAGS += -std=gnu++98
|
|
GPSD_CXXFLAGS += -std=gnu++98
|
|
GPSD_SCONS_OPTS += libgpsmm=yes
|
|
else
|
|
GPSD_SCONS_OPTS += libgpsmm=no
|
|
endif
|
|
|
|
# prevents from triggering GCC ICE
|
|
# A bug was reported to the gcc bug tracker:
|
|
# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68485
|
|
ifeq ($(BR2_microblaze),y)
|
|
GPSD_CFLAGS += -fno-expensive-optimizations -fno-schedule-insns
|
|
endif
|
|
|
|
# Enable or disable Qt binding
|
|
ifeq ($(BR2_PACKAGE_QT_NETWORK),y)
|
|
GPSD_SCONS_ENV += QMAKE="$(QT_QMAKE)"
|
|
GPSD_DEPENDENCIES += qt
|
|
else
|
|
GPSD_SCONS_OPTS += qt=no
|
|
endif
|
|
|
|
# If libusb is available build it before so the package can use it
|
|
ifeq ($(BR2_PACKAGE_LIBUSB),y)
|
|
GPSD_DEPENDENCIES += libusb
|
|
else
|
|
GPSD_SCONS_OPTS += usb=no
|
|
endif
|
|
|
|
# If bluetooth is available build it before so the package can use it
|
|
ifeq ($(BR2_PACKAGE_BLUEZ_UTILS),y)
|
|
GPSD_DEPENDENCIES += bluez_utils
|
|
else
|
|
GPSD_SCONS_OPTS += bluez=no
|
|
endif
|
|
|
|
# If pps-tools is available, build it before so the package can use it
|
|
# (HAVE_SYS_TIMEPPS_H).
|
|
ifeq ($(BR2_PACKAGE_PPS_TOOLS),y)
|
|
GPSD_DEPENDENCIES += pps-tools
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_DBUS_GLIB),y)
|
|
GPSD_SCONS_OPTS += dbus_export=yes
|
|
GPSD_DEPENDENCIES += dbus-glib
|
|
endif
|
|
|
|
# Protocol support
|
|
ifneq ($(BR2_PACKAGE_GPSD_ASHTECH),y)
|
|
GPSD_SCONS_OPTS += ashtech=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_AIVDM),y)
|
|
GPSD_SCONS_OPTS += aivdm=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_EARTHMATE),y)
|
|
GPSD_SCONS_OPTS += earthmate=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_EVERMORE),y)
|
|
GPSD_SCONS_OPTS += evermore=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_FURY),y)
|
|
GPSD_SCONS_OPTS += fury=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_FV18),y)
|
|
GPSD_SCONS_OPTS += fv18=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_GARMIN),y)
|
|
GPSD_SCONS_OPTS += garmin=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_GARMIN_SIMPLE_TXT),y)
|
|
GPSD_SCONS_OPTS += garmintxt=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_GEOSTAR),y)
|
|
GPSD_SCONS_OPTS += geostar=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_GPSCLOCK),y)
|
|
GPSD_SCONS_OPTS += gpsclock=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_ITRAX),y)
|
|
GPSD_SCONS_OPTS += itrax=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_MTK3301),y)
|
|
GPSD_SCONS_OPTS += mtk3301=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_NMEA),y)
|
|
GPSD_SCONS_OPTS += nmea0183=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_NTRIP),y)
|
|
GPSD_SCONS_OPTS += ntrip=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_NAVCOM),y)
|
|
GPSD_SCONS_OPTS += navcom=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_NMEA2000),y)
|
|
GPSD_SCONS_OPTS += nmea2000=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_OCEANSERVER),y)
|
|
GPSD_SCONS_OPTS += oceanserver=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_ONCORE),y)
|
|
GPSD_SCONS_OPTS += oncore=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_RTCM104V2),y)
|
|
GPSD_SCONS_OPTS += rtcm104v2=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_RTCM104V3),y)
|
|
GPSD_SCONS_OPTS += rtcm104v3=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_SIRF),y)
|
|
GPSD_SCONS_OPTS += sirf=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_SUPERSTAR2),y)
|
|
GPSD_SCONS_OPTS += superstar2=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_TRIMBLE_TSIP),y)
|
|
GPSD_SCONS_OPTS += tsip=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_TRIPMATE),y)
|
|
GPSD_SCONS_OPTS += tripmate=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_TRUE_NORTH),y)
|
|
GPSD_SCONS_OPTS += tnt=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_UBX),y)
|
|
GPSD_SCONS_OPTS += ublox=no
|
|
endif
|
|
|
|
# Features
|
|
ifneq ($(BR2_PACKAGE_GPSD_NTP_SHM),y)
|
|
GPSD_SCONS_OPTS += ntpshm=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_PPS),y)
|
|
GPSD_SCONS_OPTS += pps=no
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_SQUELCH),y)
|
|
GPSD_SCONS_OPTS += squelch=yes
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_RECONFIGURE),y)
|
|
GPSD_SCONS_OPTS += reconfigure=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_CONTROLSEND),y)
|
|
GPSD_SCONS_OPTS += controlsend=no
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_OLDSTYLE),y)
|
|
GPSD_SCONS_OPTS += oldstyle=no
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_PROFILING),y)
|
|
GPSD_SCONS_OPTS += profiling=yes
|
|
endif
|
|
ifneq ($(BR2_PACKAGE_GPSD_CLIENT_DEBUG),y)
|
|
GPSD_SCONS_OPTS += clientdebug=no
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_USER),y)
|
|
GPSD_SCONS_OPTS += gpsd_user=$(BR2_PACKAGE_GPSD_USER_VALUE)
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_GROUP),y)
|
|
GPSD_SCONS_OPTS += gpsd_group=$(BR2_PACKAGE_GPSD_GROUP_VALUE)
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_FIXED_PORT_SPEED),y)
|
|
GPSD_SCONS_OPTS += fixed_port_speed=$(BR2_PACKAGE_GPSD_FIXED_PORT_SPEED_VALUE)
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_MAX_CLIENT),y)
|
|
GPSD_SCONS_OPTS += limited_max_clients=$(BR2_PACKAGE_GPSD_MAX_CLIENT_VALUE)
|
|
endif
|
|
ifeq ($(BR2_PACKAGE_GPSD_MAX_DEV),y)
|
|
GPSD_SCONS_OPTS += limited_max_devices=$(BR2_PACKAGE_GPSD_MAX_DEV_VALUE)
|
|
endif
|
|
|
|
GPSD_SCONS_ENV += LDFLAGS="$(GPSD_LDFLAGS)" CFLAGS="$(GPSD_CFLAGS)"
|
|
|
|
define GPSD_BUILD_CMDS
|
|
(cd $(@D); \
|
|
$(GPSD_SCONS_ENV) \
|
|
$(SCONS) \
|
|
$(GPSD_SCONS_OPTS))
|
|
endef
|
|
|
|
define GPSD_INSTALL_TARGET_CMDS
|
|
(cd $(@D); \
|
|
$(GPSD_SCONS_ENV) \
|
|
DESTDIR=$(TARGET_DIR) \
|
|
$(SCONS) \
|
|
$(GPSD_SCONS_OPTS) \
|
|
install)
|
|
endef
|
|
|
|
define GPSD_INSTALL_INIT_SYSV
|
|
$(INSTALL) -m 0755 -D package/gpsd/S50gpsd $(TARGET_DIR)/etc/init.d/S50gpsd
|
|
$(SED) 's,^DEVICES=.*,DEVICES=$(BR2_PACKAGE_GPSD_DEVICES),' $(TARGET_DIR)/etc/init.d/S50gpsd
|
|
endef
|
|
|
|
define GPSD_INSTALL_STAGING_CMDS
|
|
(cd $(@D); \
|
|
$(GPSD_SCONS_ENV) \
|
|
DESTDIR=$(STAGING_DIR) \
|
|
$(SCONS) \
|
|
$(GPSD_SCONS_OPTS) \
|
|
install)
|
|
endef
|
|
|
|
# After installing the udev rule, make it writable so that this
|
|
# package can be re-built/re-installed.
|
|
ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
|
|
define GPSD_INSTALL_UDEV_RULES
|
|
(cd $(@D); \
|
|
$(GPSD_SCONS_ENV) \
|
|
DESTDIR=$(TARGET_DIR) \
|
|
$(SCONS) \
|
|
$(GPSD_SCONS_OPTS) \
|
|
udev-install)
|
|
chmod u+w $(TARGET_DIR)/lib/udev/rules.d/25-gpsd.rules
|
|
endef
|
|
|
|
GPSD_POST_INSTALL_TARGET_HOOKS += GPSD_INSTALL_UDEV_RULES
|
|
endif
|
|
|
|
$(eval $(generic-package))
|