aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.inc12
-rw-r--r--lib/libc/gen/__xuname.c8
-rw-r--r--lib/libc/gen/getosreldate.c5
3 files changed, 14 insertions, 1 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index 8f140a6ff6da3..6a93be9aa8fc2 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -122,7 +122,7 @@ _CPUTYPE!= MAKEFLAGS= CPUTYPE=${_TARGET_CPUTYPE} ${MAKE} \
.error CPUTYPE global should be set with ?=.
.endif
.if make(buildworld)
-BUILD_ARCH!= sysctl -n hw.machine_arch
+BUILD_ARCH!= uname -m
.if ${MACHINE_ARCH} != ${BUILD_ARCH}
.error To cross-build, set TARGET_ARCH.
.endif
diff --git a/lib/libc/gen/__xuname.c b/lib/libc/gen/__xuname.c
index 4d1be8c04f109..c7965743675d6 100644
--- a/lib/libc/gen/__xuname.c
+++ b/lib/libc/gen/__xuname.c
@@ -71,6 +71,8 @@ __xuname(int namesize, void *namebuf)
rval = -1;
}
name->sysname[sizeof(name->sysname) - 1] = '\0';
+ if ((p = getenv("UNAME_s")))
+ strncpy(name->sysname, p, sizeof(name->sysname));
mib[0] = CTL_KERN;
mib[1] = KERN_HOSTNAME;
@@ -95,6 +97,8 @@ __xuname(int namesize, void *namebuf)
rval = -1;
}
name->release[sizeof(name->release) - 1] = '\0';
+ if ((p = getenv("UNAME_r")))
+ strncpy(name->release, p, sizeof(name->release));
/* The version may have newlines in it, turn them into spaces. */
mib[0] = CTL_KERN;
@@ -116,6 +120,8 @@ __xuname(int namesize, void *namebuf)
*p = '\0';
}
}
+ if ((p = getenv("UNAME_v")))
+ strncpy(name->version, p, sizeof(name->version));
mib[0] = CTL_HW;
mib[1] = HW_MACHINE;
@@ -128,5 +134,7 @@ __xuname(int namesize, void *namebuf)
rval = -1;
}
name->machine[sizeof(name->machine) - 1] = '\0';
+ if ((p = getenv("UNAME_m")))
+ strncpy(name->machine, p, sizeof(name->machine));
return (rval);
}
diff --git a/lib/libc/gen/getosreldate.c b/lib/libc/gen/getosreldate.c
index 22c400d1c7373..03a00c1b6a818 100644
--- a/lib/libc/gen/getosreldate.c
+++ b/lib/libc/gen/getosreldate.c
@@ -39,6 +39,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h>
#include <sys/sysctl.h>
+#include <stdlib.h>
#include <osreldate.h>
@@ -49,10 +50,14 @@ getosreldate(void)
size_t size;
int value;
+ char *temp;
+
mib[0] = CTL_KERN;
mib[1] = KERN_OSRELDATE;
size = sizeof value;
if (sysctl(mib, 2, &value, &size, NULL, 0) == -1)
return (-1);
+ if ((temp = getenv("OSVERSION")))
+ value = atoi(temp);
return (value);
}