|
@@ -1,148 +0,0 @@
|
|
|
-From 727c37ef78f2229998ac51942f5d11c754d0c6b9 Mon Sep 17 00:00:00 2001
|
|
|
-From: Robert Hancock <hancock@sedsystems.ca>
|
|
|
-Date: Mon, 13 Jul 2020 17:33:48 -0600
|
|
|
-Subject: [PATCH] Fix errors during gpsd 3.20 cross-compilation
|
|
|
-
|
|
|
-Adapt some post-3.20 changes to the gpsd SConstruct file from the
|
|
|
-gpsd master branch to fix issues when cross-compiling. Original
|
|
|
-commits did not cherry-pick cleanly onto 3.20 due to other
|
|
|
-upstream changes.
|
|
|
-
|
|
|
-Signed-off-by: Robert Hancock <hancock@sedsystems.ca>
|
|
|
----
|
|
|
- SConstruct | 81 ++++++++++++++++++++++--------------------------------
|
|
|
- 1 file changed, 33 insertions(+), 48 deletions(-)
|
|
|
-
|
|
|
-diff --git a/SConstruct b/SConstruct
|
|
|
-index 33e0ff326..93e8fcfea 100644
|
|
|
---- a/SConstruct
|
|
|
-+++ b/SConstruct
|
|
|
-@@ -386,13 +386,16 @@ env['SC_PYTHON'] = sys.executable # Path to SCons Python
|
|
|
- # So we rely on MergeFlags/ParseFlags to do the right thing for us.
|
|
|
- env['STRIP'] = "strip"
|
|
|
- env['PKG_CONFIG'] = "pkg-config"
|
|
|
--for i in ["AR", "CC", "CXX", "LD",
|
|
|
-- "PKG_CONFIG", "STRIP", "TAR"]:
|
|
|
-+for i in ["AR", # linker for static libs, usually "ar"
|
|
|
-+ "CC",
|
|
|
-+ "CXX",
|
|
|
-+ # "LD", # scons does not use LD, usually "ld"
|
|
|
-+ "PKG_CONFIG",
|
|
|
-+ "SHLINK", # linker for shared libs, usually "gcc" or "g++", NOT "ld"
|
|
|
-+ "STRIP",
|
|
|
-+ "TAR"]:
|
|
|
- if i in os.environ:
|
|
|
-- j = i
|
|
|
-- if i == "LD":
|
|
|
-- i = "SHLINK"
|
|
|
-- env[i] = os.getenv(j)
|
|
|
-+ env[i] = os.getenv(i)
|
|
|
- for i in ["ARFLAGS", "CFLAGS", "CXXFLAGS", "LDFLAGS", "SHLINKFLAGS",
|
|
|
- "CPPFLAGS", "CCFLAGS", "LINKFLAGS"]:
|
|
|
- if i in os.environ:
|
|
|
-@@ -483,7 +486,7 @@ devenv = (("ADDR2LINE", "addr2line"),
|
|
|
- ("GCCBUG", "gccbug"),
|
|
|
- ("GCOV", "gcov"),
|
|
|
- ("GPROF", "gprof"),
|
|
|
-- ("LD", "ld"),
|
|
|
-+ # ("LD", "ld"), # scons does not use LD
|
|
|
- ("NM", "nm"),
|
|
|
- ("OBJCOPY", "objcopy"),
|
|
|
- ("OBJDUMP", "objdump"),
|
|
|
-@@ -565,6 +568,22 @@ def CheckXsltproc(context):
|
|
|
- return ret
|
|
|
-
|
|
|
-
|
|
|
-+def CheckTime_t(context):
|
|
|
-+ context.Message('Checking if sizeof(time_t) is 64 bits... ')
|
|
|
-+ ret = context.TryLink("""
|
|
|
-+ #include <time.h>
|
|
|
-+
|
|
|
-+ int main(int argc, char **argv) {
|
|
|
-+ static int test_array[1 - 2 * ((long int) sizeof(time_t) < 8 )];
|
|
|
-+ test_array[0] = 0;
|
|
|
-+ (void) argc; (void) argv;
|
|
|
-+ return 0;
|
|
|
-+ }
|
|
|
-+ """, '.c')
|
|
|
-+ context.Result(ret)
|
|
|
-+ return ret
|
|
|
-+
|
|
|
-+
|
|
|
- def CheckCompilerOption(context, option):
|
|
|
- context.Message('Checking if compiler accepts %s... ' % (option,))
|
|
|
- old_CFLAGS = context.env['CFLAGS'][:] # Get a *copy* of the old list
|
|
|
-@@ -597,42 +616,6 @@ def CheckHeaderDefines(context, file, define):
|
|
|
- return ret
|
|
|
-
|
|
|
-
|
|
|
--def CheckSizeOf(context, type):
|
|
|
-- """Check sizeof 'type'"""
|
|
|
-- context.Message('Checking size of ' + type + '... ')
|
|
|
--
|
|
|
-- program = """
|
|
|
--#include <stdlib.h>
|
|
|
--#include <stdio.h>
|
|
|
--
|
|
|
--/*
|
|
|
-- * The CheckSizeOf function does not have a way for the caller to
|
|
|
-- * specify header files to be included to provide the type being
|
|
|
-- * checked. As a workaround until that is remedied, include the
|
|
|
-- * header required for time_t, which is the sole current use of this
|
|
|
-- * function.
|
|
|
-- */
|
|
|
--#include <time.h>
|
|
|
--
|
|
|
--int main() {
|
|
|
-- printf("%d", (int)sizeof(""" + type + """));
|
|
|
-- return 0;
|
|
|
--}
|
|
|
--"""
|
|
|
--
|
|
|
-- # compile it
|
|
|
-- ret = context.TryCompile(program, '.c')
|
|
|
-- if 0 == ret:
|
|
|
-- announce('ERROR: TryCompile failed\n')
|
|
|
-- # fall back to sizeof(time_t) is 8
|
|
|
-- return '8'
|
|
|
--
|
|
|
-- # run it
|
|
|
-- ret = context.TryRun(program, '.c')
|
|
|
-- context.Result(ret[0])
|
|
|
-- return ret[1]
|
|
|
--
|
|
|
--
|
|
|
- def CheckCompilerDefines(context, define):
|
|
|
- context.Message('Checking if compiler supplies %s... ' % (define,))
|
|
|
- ret = context.TryLink("""
|
|
|
-@@ -708,8 +691,8 @@ config = Configure(env, custom_tests={
|
|
|
- 'CheckCompilerOption': CheckCompilerOption,
|
|
|
- 'CheckHeaderDefines': CheckHeaderDefines,
|
|
|
- 'CheckPKG': CheckPKG,
|
|
|
-- 'CheckSizeOf': CheckSizeOf,
|
|
|
- 'CheckXsltproc': CheckXsltproc,
|
|
|
-+ 'CheckTime_t': CheckTime_t,
|
|
|
- 'GetPythonValue': GetPythonValue,
|
|
|
- })
|
|
|
-
|
|
|
-@@ -1043,11 +1026,13 @@ else:
|
|
|
- confdefs.append("/* #undef HAVE_%s_H */\n"
|
|
|
- % hdr.replace("/", "_").upper())
|
|
|
-
|
|
|
-- sizeof_time_t = config.CheckSizeOf("time_t")
|
|
|
-- confdefs.append("#define SIZEOF_TIME_T %s\n" % sizeof_time_t)
|
|
|
-- announce("sizeof(time_t) is %s" % sizeof_time_t)
|
|
|
-- if 4 >= int(sizeof_time_t):
|
|
|
-+ if 0 == config.CheckTime_t():
|
|
|
- announce("WARNING: time_t is too small. It will fail in 2038")
|
|
|
-+ sizeof_time_t = 4
|
|
|
-+ else:
|
|
|
-+ sizeof_time_t = 8
|
|
|
-+
|
|
|
-+ confdefs.append("#define SIZEOF_TIME_T %s\n" % sizeof_time_t)
|
|
|
-
|
|
|
- # check function after libraries, because some function require libraries
|
|
|
- # for example clock_gettime() require librt on Linux glibc < 2.17
|
|
|
---
|
|
|
-2.18.4
|
|
|
-
|