Skip to content

Commit

Permalink
build: BSD compile fixes
Browse files Browse the repository at this point in the history
following patch allows to build images for Qemu ARM on
OpenBSD 5.2 amd64 and FreeBSD 9.1 amd64.

Mostly small pieces of code changes to get things right on the
specific platform.

Updated the README to describe better, which tools on the host
are required. Added some kind of prepare scripts to install needed
tools on BSD via packages.

Signed-off-by: Waldemar Brodkorb <[email protected]>

SVN-Revision: 35900
  • Loading branch information
Felix Fietkau committed Mar 7, 2013
1 parent ed08358 commit 1f77bff
Show file tree
Hide file tree
Showing 17 changed files with 173 additions and 17 deletions.
4 changes: 2 additions & 2 deletions README
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ This is the buildsystem for the OpenWrt Linux distribution.
Please use "make menuconfig" to configure your appreciated
configuration for the toolchain and firmware.

You need to have installed gcc, binutils, patch, bzip2, flex,
make, gettext, pkg-config, unzip, libz-dev and libc headers.
You need to have installed gcc, binutils, bzip2, flex, python, perl
make, find, grep, diff, unzip, gawk, getopt, libz-dev and libc headers.

Run "./scripts/feeds update -a" to get all the latest package definitions
defined in feeds.conf / feeds.conf.default respectively
Expand Down
2 changes: 1 addition & 1 deletion include/host-build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ HOST_CONFIGURE_ARGS = \

HOST_MAKE_FLAGS =

HOST_CONFIGURE_CMD = ./configure
HOST_CONFIGURE_CMD = $(BASH) ./configure

ifneq ($(HOST_OS),Darwin)
ifeq ($(CONFIG_BUILD_STATIC_TOOLS),y)
Expand Down
3 changes: 3 additions & 0 deletions include/host.mk
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,9 @@ $(TMP_DIR)/.host.mk: $(TOPDIR)/include/host.mk
PATCH=`which gpatch 2>/dev/null`; \
[ -n "$$PATCH" -a -x "$$PATCH" ] || PATCH=`which patch 2>/dev/null`; \
echo "PATCH:=$$PATCH" >> $@; \
PYTHON=`which python2.7 2>/dev/null`; \
[ -n "$$PYTHON" -a -x "$$PYTHON" ] || PYTHON=`which python 2>/dev/null`; \
echo "PYTHON:=$$PYTHON" >> $@; \
)

endif
8 changes: 3 additions & 5 deletions include/prereq-build.mk
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ $(eval $(call Require,case-sensitive-fs, \
))

define Require/getopt
gnugetopt --help 2>&1 | grep long >/dev/null || \
/usr/local/bin/getopt --help 2>&1 | grep long >/dev/null || \
getopt --help 2>&1 | grep long >/dev/null
endef
$(eval $(call Require,getopt, \
Expand Down Expand Up @@ -134,15 +136,11 @@ $(eval $(call RequireCommand,bzip2, \
Please install bzip2. \
))

$(eval $(call RequireCommand,patch, \
Please install patch. \
))

$(eval $(call RequireCommand,perl, \
Please install perl. \
))

$(eval $(call RequireCommand,python, \
$(eval $(call RequireCommand,$(PYTHON), \
Please install python. \
))

Expand Down
9 changes: 9 additions & 0 deletions package/mac80211/patches/004-use_env_for_bash.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
diff -Nur compat-wireless-2013-02-22.orig/compat/scripts/gen-compat-config.sh compat-wireless-2013-02-22/compat/scripts/gen-compat-config.sh
--- compat-wireless-2013-02-22.orig/compat/scripts/gen-compat-config.sh 2012-12-20 15:14:36.000000000 +0100
+++ compat-wireless-2013-02-22/compat/scripts/gen-compat-config.sh 2013-03-07 17:27:04.000000000 +0100
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Copyright 2012 Luis R. Rodriguez <[email protected]>
# Copyright 2012 Hauke Mehrtens <[email protected]>
#
1 change: 1 addition & 0 deletions scripts/freebsd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
env PACKAGESITE=ftp://ftp.freebsd.org/pub/FreeBSD/ports/amd64/packages-9.0-release/All/ pkg_add -r gmake-3.82.tbz bash-4.1.11.tbz python27-2.7.2_3.tbz gtar-1.26.tbz findutils-4.5.10_2.tbz coreutils-8.12.tbz getopt-1.1.4_2.tbz wget-1.13.4_1.tbz gnugrep-2.9.tbz gawk-4.0.0.tbz
24 changes: 24 additions & 0 deletions scripts/openbsd.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#!/bin/sh
ver=$(uname -r)
arch=$(uname -m)
echo "Preparing OpenBSD $arch $ver for OpenWrt"
PKG_PATH="http://ftp.openbsd.org/pub/OpenBSD/${ver}/packages/${arch}/"
export PKG_PATH
pkg_add -v gmake
pkg_add -v findutils
pkg_add -v coreutils
pkg_add -v gdiff
pkg_add -v rsync--
pkg_add -v git
pkg_add -v bash
pkg_add -v unzip
pkg_add -v wget
pkg_add -v gtar--
pkg_add -v ggrep
pkg_add -v gawk
pkg_add -v gsed
pkg_add -v xz
pkg_add -v apr-util--
pkg_add -v cyrus-sasl--
pkg_add -v subversion
pkg_add -v gnugetopt
12 changes: 9 additions & 3 deletions tools/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ tools-y += gmp mpfr mpc libelf
endif
tools-y += m4 libtool autoconf automake flex bison pkg-config sed mklibs
tools-y += sstrip ipkg-utils genext2fs e2fsprogs mtd-utils mkimage
tools-y += firmware-utils patch-image quilt yaffs2 flock padjffs2
tools-y += firmware-utils patch-image patch quilt yaffs2 flock padjffs2
tools-y += mm-macros xorg-macros xfce-macros missing-macros xz cmake scons
tools-$(CONFIG_TARGET_orion_generic) += wrt350nv2-builder upslug2
tools-$(CONFIG_powerpc) += upx
Expand Down Expand Up @@ -119,6 +119,8 @@ $(STAGING_DIR_HOST)/bin/stat: $(STAGING_DIR)/.prepared
ln -s `which stat` $@; \
elif gstat --version > /dev/null 2>&1; then \
ln -s `which gstat` $@; \
elif gnustat --version > /dev/null 2>&1; then \
ln -s `which gnustat` $@; \
else \
echo "GNU stat not found"; \
false; \
Expand All @@ -128,10 +130,14 @@ $(eval $(call PrepareCommand,find,gfind find))
$(eval $(call PrepareCommand,md5sum,gmd5sum md5sum $(SCRIPT_DIR)/md5sum))
$(eval $(call PrepareCommand,cp,gcp cp))
$(eval $(call PrepareCommand,seq,gseq seq))
$(eval $(call PrepareCommand,python,python2 python))
$(eval $(call PrepareCommand,python,python2 python2.7 python))
$(eval $(call PrepareCommand,awk,gawk awk))
$(eval $(call PrepareCommand,getopt,gnugetopt /usr/local/bin/getopt getopt))
$(eval $(call PrepareCommand,grep,ggrep grep))
$(eval $(call PrepareCommand,tar,gtar tar))
$(eval $(call PrepareCommand,diff,gdiff diff))

$(curdir)/cmddeps = $(patsubst %,$(STAGING_DIR_HOST)/bin/%,find md5sum cp stat seq python awk)
$(curdir)/cmddeps = $(patsubst %,$(STAGING_DIR_HOST)/bin/%,find md5sum cp stat seq python awk getopt grep tar diff)
$(curdir)//prepare = $(STAGING_DIR)/.prepared $(STAGING_DIR_HOST)/.prepared $($(curdir)/cmddeps)
$(curdir)//compile = $(STAGING_DIR)/.prepared $(STAGING_DIR_HOST)/.prepared $($(curdir)/cmddeps)

Expand Down
24 changes: 24 additions & 0 deletions tools/e2fsprogs/patches/003-openbsd-compat.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
diff -Nur e2fsprogs-1.42.7.orig/lib/blkid/getsize.c e2fsprogs-1.42.7/lib/blkid/getsize.c
--- e2fsprogs-1.42.7.orig/lib/blkid/getsize.c Fri Nov 30 03:40:18 2012
+++ e2fsprogs-1.42.7/lib/blkid/getsize.c Thu Mar 7 14:21:59 2013
@@ -26,6 +26,9 @@
#include <fcntl.h>
#ifdef HAVE_SYS_IOCTL_H
#include <sys/ioctl.h>
+#ifdef __OpenBSD__
+#include <sys/dkio.h>
+#endif
#endif
#ifdef HAVE_LINUX_FD_H
#include <linux/fd.h>
diff -Nur e2fsprogs-1.42.7.orig/lib/quota/mkquota.c e2fsprogs-1.42.7/lib/quota/mkquota.c
--- e2fsprogs-1.42.7.orig/lib/quota/mkquota.c Wed Jan 2 01:47:20 2013
+++ e2fsprogs-1.42.7/lib/quota/mkquota.c Thu Mar 7 14:21:59 2013
@@ -8,6 +8,7 @@
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
+#include <stdint.h>
#include <string.h>
#include <fcntl.h>

13 changes: 13 additions & 0 deletions tools/e2fsprogs/patches/004-freebsd-compat.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
diff -Nur e2fsprogs-1.42.7.orig/lib/ext2fs/tdb.c e2fsprogs-1.42.7/lib/ext2fs/tdb.c
--- e2fsprogs-1.42.7.orig/lib/ext2fs/tdb.c 2012-07-06 15:37:27.000000000 +0200
+++ e2fsprogs-1.42.7/lib/ext2fs/tdb.c 2013-03-07 14:54:59.000000000 +0100
@@ -56,7 +56,9 @@
#include <utime.h>
#endif
#include <sys/stat.h>
+#ifndef __FreeBSD__
#include <sys/file.h>
+#endif
#include <fcntl.h>

#ifdef HAVE_SYS_MMAN_H
5 changes: 5 additions & 0 deletions tools/include/endian.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,11 @@
#define bswap_16(x) bswap16(x)
#define bswap_32(x) bswap32(x)
#define bswap_64(x) bswap64(x)
#elif defined(__OpenBSD__)
#include <sys/types.h>
#define bswap_16(x) __swap16(x)
#define bswap_32(x) __swap32(x)
#define bswap_64(x) __swap64(x)
#else
#include <machine/endian.h>
#define bswap_16(x) swap16(x)
Expand Down
2 changes: 1 addition & 1 deletion tools/include/getline.h
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
#include <stdlib.h>
#include <string.h>

#if !defined(__linux__) && !(defined(__APPLE__) && __DARWIN_C_LEVEL >= 200809L)
#if !defined(__linux__) && !defined(__OpenBSD__) && !(defined(__APPLE__) && __DARWIN_C_LEVEL >= 200809L)
/*
* Emulate glibc getline() via BSD fgetln().
* Note that outsize is not changed unless memory is allocated.
Expand Down
19 changes: 19 additions & 0 deletions tools/mkimage/patches/020-openbsd_fixes.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
diff -Nur u-boot-2012.04.01.orig/tools/mkimage.c u-boot-2012.04.01/tools/mkimage.c
--- u-boot-2012.04.01.orig/tools/mkimage.c Wed Apr 25 15:22:50 2012
+++ u-boot-2012.04.01/tools/mkimage.c Wed Mar 6 17:09:29 2013
@@ -449,6 +449,7 @@
#if defined(_POSIX_SYNCHRONIZED_IO) && \
!defined(__sun__) && \
!defined(__FreeBSD__) && \
+ !defined(__OpenBSD__) && \
!defined(__APPLE__)
(void) fdatasync (ifd);
#else
@@ -492,6 +493,7 @@
#if defined(_POSIX_SYNCHRONIZED_IO) && \
!defined(__sun__) && \
!defined(__FreeBSD__) && \
+ !defined(__OpenBSD__) && \
!defined(__APPLE__)
(void) fdatasync (ifd);
#else
18 changes: 18 additions & 0 deletions tools/patch/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#
# Copyright (C) 2013 OpenWrt.org
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk

PKG_NAME:=patch
PKG_VERSION:=2.7.1

PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=ftp://ftp.gnu.org/gnu/patch
PKG_MD5SUM:=e9ae5393426d3ad783a300a338c09b72

include $(INCLUDE_DIR)/host-build.mk

$(eval $(call HostBuild))
6 changes: 1 addition & 5 deletions tools/quilt/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,8 @@ PKG_MD5SUM:=f77adda60039ffa753f3c584a286f12b

include $(INCLUDE_DIR)/host-build.mk

GETOPT:=$(shell which getopt)

HOST_CONFIGURE_ARGS += \
--with-patch=$(PATCH) \
--with-find=$(FIND) \
--with-getopt=$(GETOPT)
--with-find=$(FIND)

define Host/Configure
cd $(HOST_BUILD_DIR) && autoconf
Expand Down
26 changes: 26 additions & 0 deletions tools/squashfs4/patches/180-openbsd_compat.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
diff -Nur squashfs4.2.orig/squashfs-tools/mksquashfs.c squashfs4.2/squashfs-tools/mksquashfs.c
--- squashfs4.2.orig/squashfs-tools/mksquashfs.c Tue Mar 5 16:20:49 2013
+++ squashfs4.2/squashfs-tools/mksquashfs.c Tue Mar 5 16:25:10 2013
@@ -32,6 +32,9 @@
#include <stdio.h>
#include <stddef.h>
#include <sys/time.h>
+#if defined(__OpenBSD__)
+#include <sys/param.h>
+#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
diff -Nur squashfs4.2.orig/squashfs-tools/unsquashfs.h squashfs4.2/squashfs-tools/unsquashfs.h
--- squashfs4.2.orig/squashfs-tools/unsquashfs.h Tue Mar 5 16:20:49 2013
+++ squashfs4.2/squashfs-tools/unsquashfs.h Tue Mar 5 16:25:57 2013
@@ -25,6 +25,9 @@
#define TRUE 1
#define FALSE 0
#include <stdio.h>
+#if defined(__OpenBSD__)
+#include <sys/param.h>
+#endif
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
14 changes: 14 additions & 0 deletions tools/yaffs2/patches/110-openbsd-compat.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
diff -Nur yaffs2_android.orig/yaffs2/yaffs_guts.h yaffs2_android/yaffs2/yaffs_guts.h
--- yaffs2_android.orig/yaffs2/yaffs_guts.h Sun Feb 15 16:23:50 2009
+++ yaffs2_android/yaffs2/yaffs_guts.h Tue Mar 5 15:45:21 2013
@@ -823,6 +823,10 @@
int yaffs_SetAttributes(yaffs_Object * obj, struct iattr *attr);
int yaffs_GetAttributes(yaffs_Object * obj, struct iattr *attr);

+#if defined(__OpenBSD__)
+#define loff_t off_t
+#endif
+
/* File operations */
int yaffs_ReadDataFromFile(yaffs_Object * obj, __u8 * buffer, loff_t offset,
int nBytes);

0 comments on commit 1f77bff

Please sign in to comment.