Comments on pmake diffs for building on Linux
M. Warner Losh
imp at bsdimp.com
Tue Mar 4 05:42:53 UTC 2008
Greetings,
here's a set of diffs that will allow FreeBSD's usr.bin/make to build
on Linux. I'm sure they are gross, and I don't plan to commit them
(at least not all of them), but I thought I'd post them here to see
what people think.
I think that the extra config.h includes, the errc -> errx patches and
the Makefile.dist patches may be good for the tree. The rest may not
meet FreeBSD's source tree policies.
Comments?
Warner
diff -ur pmake.orig/config.h pmake/config.h
--- pmake.orig/config.h 2005-02-01 03:50:35.000000000 -0700
+++ pmake/config.h 2008-03-03 22:24:16.745493000 -0700
@@ -108,4 +108,27 @@
# endif
#endif
+#ifndef TAILQ_HEAD_INITIALIZER
+#define TAILQ_HEAD_INITIALIZER(head) { NULL, &(head).tqh_first }
+#endif
+
+#ifndef TAILQ_FOREACH
+#define TAILQ_FOREACH(var, head, field) \
+ for ((var) = TAILQ_FIRST((head)); \
+ (var); \
+ (var) = TAILQ_NEXT((var), field))
+#endif
+
+#ifndef TAILQ_FIRST
+#define TAILQ_FIRST(head) ((head)->tqh_first)
+#endif
+
+#ifndef TAILQ_NEXT
+#define TAILQ_NEXT(elm, field) ((elm)->field.tqe_next)
+#endif
+
+#ifndef TAILQ_EMPTY
+#define TAILQ_EMPTY(head) ((head)->tqh_first == NULL)
+#endif
+
#endif /* config_h_efe0765e */
diff -ur pmake.orig/dir.c pmake/dir.c
--- pmake.orig/dir.c 2005-03-23 05:56:15.000000000 -0700
+++ pmake/dir.c 2008-03-03 22:22:36.072235000 -0700
@@ -93,6 +93,7 @@
#include <unistd.h>
#include "arch.h"
+#include "config.h"
#include "dir.h"
#include "globals.h"
#include "GNode.h"
Only in pmake: log
diff -ur pmake.orig/main.c pmake/main.c
--- pmake.orig/main.c 2007-12-18 15:58:14.000000000 -0700
+++ pmake/main.c 2008-03-03 22:25:47.543349000 -0700
@@ -63,7 +63,9 @@
#include <sys/param.h>
#include <sys/stat.h>
+#ifdef __FreeBSD__
#include <sys/sysctl.h>
+#endif
#include <sys/time.h>
#include <sys/queue.h>
#include <sys/resource.h>
@@ -366,7 +368,9 @@
rearg:
optind = 1; /* since we're called more than once */
+#ifndef linux
optreset = 1;
+#endif
#define OPTFLAGS "ABC:D:E:I:PSV:Xd:ef:ij:km:nqrstvx:"
for (;;) {
if ((optind < argc) && strcmp(argv[optind], "--") == 0) {
@@ -660,11 +664,9 @@
int level = (value == NULL) ? 0 : atoi(value);
if (level < 0) {
- errc(2, EAGAIN, "Invalid value for recursion level (%d).",
- level);
+ errx(2, "Invalid value for recursion level (%d).", level);
} else if (level > MKLVL_MAXVAL) {
- errc(2, EAGAIN, "Max recursion level (%d) exceeded.",
- MKLVL_MAXVAL);
+ errx(2, "Max recursion level (%d) exceeded.", MKLVL_MAXVAL);
} else {
char new_value[32];
sprintf(new_value, "%d", level + 1);
@@ -931,6 +933,7 @@
}
#endif
+#ifdef __FreeBSD__
/*
* FreeBSD/pc98 kernel used to set the utsname.machine to
* "i386", and MACHINE was defined as "i386", so it could
@@ -951,6 +954,7 @@
machine = "pc98";
}
}
+#endif
/*
* Get the name of this type of MACHINE from utsname
diff -ur pmake.orig/Makefile.dist pmake/Makefile.dist
--- pmake.orig/Makefile.dist 2007-12-18 15:58:14.000000000 -0700
+++ pmake/Makefile.dist 2008-03-03 22:27:31.711240000 -0700
@@ -2,7 +2,7 @@
# a simple makefile to help builds on !FreeBSD systems
pmake:
@echo 'make started.'
- cc -D__FBSDID="static const char *id=" -DDEFSHELLNAME=\"sh\" -I. -c *.c
+ cc -D__dead2="" -D__unused="" -Darc4random=random -D__FBSDID="static const char *id=" -DDEFSHELLNAME=\"sh\" -I. -c *.c
cc *.o -o pmake
@echo 'make completed.'
diff -ur pmake.orig/shell.c pmake/shell.c
--- pmake.orig/shell.c 2005-05-24 09:30:03.000000000 -0600
+++ pmake/shell.c 2008-03-03 22:20:08.597377000 -0700
@@ -45,6 +45,7 @@
#include <stdlib.h>
#include <string.h>
+#include "config.h"
#include "parse.h"
#include "pathnames.h"
#include "shell.h"
More information about the freebsd-hackers
mailing list