summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-07-21 11:45:36 +0000
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>2005-07-21 11:45:36 +0000
commitc45b5fbb998ca7888607a78b8f89aff75649ebc2 (patch)
tree31f29f828ec386841ed6c3359530482ee123f9e7
parente8c58d4f504339ddddb527ecca44b9be9fb97cd8 (diff)
move nvram,jffs2root,shared libs into target/linux/package and make them broadcom-specific
git-svn-id: svn://svn.openwrt.org/openwrt/trunk/openwrt@1517 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r--package/Makefile5
-rw-r--r--package/openwrt/Makefile45
-rw-r--r--package/openwrt/libnvram/Makefile46
-rw-r--r--package/openwrt/libshared/Makefile40
-rw-r--r--package/openwrt/mtd.c370
-rw-r--r--target/linux/package/Makefile7
-rw-r--r--target/linux/package/nvram/Makefile33
-rw-r--r--target/linux/package/nvram/ipkg/nvram.control7
-rw-r--r--target/linux/package/nvram/src/Makefile22
-rw-r--r--target/linux/package/nvram/src/bcmtimer.h (renamed from package/openwrt/libshared/bcmtimer.h)0
-rw-r--r--target/linux/package/nvram/src/defaults.c (renamed from package/openwrt/libshared/defaults.c)0
-rw-r--r--target/linux/package/nvram/src/linux_timer.c (renamed from package/openwrt/libshared/linux_timer.c)0
-rw-r--r--target/linux/package/nvram/src/main.c (renamed from package/openwrt/libnvram/main.c)0
-rw-r--r--target/linux/package/nvram/src/nvram_convert.c (renamed from package/openwrt/libnvram/nvram_convert.c)0
-rw-r--r--target/linux/package/nvram/src/nvram_convert.h (renamed from package/openwrt/libnvram/nvram_convert.h)0
-rw-r--r--target/linux/package/nvram/src/nvram_linux.c (renamed from package/openwrt/libnvram/nvram_linux.c)0
-rw-r--r--target/linux/package/nvram/src/shutils.c (renamed from package/openwrt/libshared/shutils.c)0
-rw-r--r--target/linux/package/nvram/src/wl.c (renamed from package/openwrt/libshared/wl.c)0
-rw-r--r--target/linux/package/nvram/src/wl_linux.c (renamed from package/openwrt/libshared/wl_linux.c)0
-rw-r--r--target/linux/package/openwrt/Makefile34
-rw-r--r--target/linux/package/openwrt/include/bcmnvram.h (renamed from package/openwrt/include/bcmnvram.h)0
-rw-r--r--target/linux/package/openwrt/include/bcmutils.h (renamed from package/openwrt/include/bcmutils.h)0
-rw-r--r--target/linux/package/openwrt/include/cy_conf.h (renamed from package/openwrt/include/cy_conf.h)0
-rw-r--r--target/linux/package/openwrt/include/epivers.h (renamed from package/openwrt/include/epivers.h)0
-rw-r--r--target/linux/package/openwrt/include/proto/802.11.h (renamed from package/openwrt/include/proto/802.11.h)0
-rw-r--r--target/linux/package/openwrt/include/proto/ethernet.h (renamed from package/openwrt/include/proto/ethernet.h)0
-rw-r--r--target/linux/package/openwrt/include/shutils.h (renamed from package/openwrt/include/shutils.h)0
-rw-r--r--target/linux/package/openwrt/include/typedefs.h (renamed from package/openwrt/include/typedefs.h)0
-rw-r--r--target/linux/package/openwrt/include/utils.h (renamed from package/openwrt/include/utils.h)0
-rw-r--r--target/linux/package/openwrt/include/wlcompat.h (renamed from package/openwrt/include/wlcompat.h)0
-rw-r--r--target/linux/package/openwrt/include/wlioctl.h (renamed from package/openwrt/include/wlioctl.h)0
-rw-r--r--target/linux/package/openwrt/include/wlutils.h (renamed from package/openwrt/include/wlutils.h)0
-rw-r--r--target/linux/package/openwrt/ipkg/openwrt-utils.control (renamed from package/openwrt/openwrt-utils.control)0
-rw-r--r--target/linux/package/openwrt/jffs2root.c (renamed from package/openwrt/jffs2root.c)0
-rw-r--r--target/linux/package/wlcompat/Makefile2
35 files changed, 106 insertions, 505 deletions
diff --git a/package/Makefile b/package/Makefile
index 8a5448166..0d4d75ebf 100644
--- a/package/Makefile
+++ b/package/Makefile
@@ -2,7 +2,6 @@
include $(TOPDIR)/rules.mk
package-:=tcp_wrappers
-package-y:=openwrt
package-$(BR2_PACKAGE_AICCU) += aiccu
package-$(BR2_PACKAGE_AMWALL) += amwall
package-$(BR2_PACKAGE_ARPTABLES) += arptables
@@ -201,7 +200,7 @@ tinc-compile: zlib-compile openssl-compile lzo-compile
tor-compile: libevent-compile openssl-compile zlib-compile
usbutils-compile: libusb-compile
vtun-compile: zlib-compile openssl-compile lzo-compile
-wificonf-compile: openwrt-compile wireless-tools-compile
+wificonf-compile: wireless-tools-compile
wpa_supplicant-compile: openssl-compile
asterisk-compile: ncurses-compile openssl-compile
@@ -280,7 +279,7 @@ ifneq ($(BR2_PACKAGE_ULOGD_PGSQL),)
ulogd-compile: postgresql-compile
endif
-sdk-compile: $(DEV_LIBS_COMPILE) $(SDK_DEFAULT_COMPILE) openwrt-install
+sdk-compile: $(DEV_LIBS_COMPILE) $(SDK_DEFAULT_COMPILE)
$(STAMP_DIR):
mkdir -p $@
diff --git a/package/openwrt/Makefile b/package/openwrt/Makefile
deleted file mode 100644
index 580777a17..000000000
--- a/package/openwrt/Makefile
+++ /dev/null
@@ -1,45 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME := openwrt-utils
-PKG_RELEASE := 2
-PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
-PKG_IPK:=$(PACKAGE_DIR)/$(PKG_NAME)_$(PKG_RELEASE)_$(ARCH).ipk
-PKG_IPK_DIR:=$(PKG_BUILD_DIR)/ipkg
-
-SHARED_INCLUDE:=${shell pwd}/include
-
-libshared-compile libnvram-compile:
- @$(MAKE) -C $(patsubst %-compile,%,$@) compile
-
-libshared-install libnvram-install: libshared-compile libnvram-compile
- @$(MAKE) -C $(patsubst %-install,%,$@) install
-
-libshared-clean libnvram-clean:
- @$(MAKE) -C $(patsubst %-clean,%,$@) clean
-
-$(PKG_IPK_DIR)/sbin/jffs2root: jffs2root.c
- mkdir -p $(PKG_IPK_DIR)/sbin
- $(TARGET_CC) -o $@ $<
-
-$(PKG_IPK): $(PKG_IPK_DIR)/sbin/jffs2root
- $(SCRIPT_DIR)/make-ipkg-dir.sh $(PKG_IPK_DIR) $(PKG_NAME).control $(PKG_RELEASE) $(ARCH)
- $(STRIP) $(PKG_IPK_DIR)/sbin/*
- mkdir -p $(PACKAGE_DIR)
- $(IPKG_BUILD) $(PKG_IPK_DIR) $(PACKAGE_DIR)
-
-$(IPKG_STATE_DIR)/info/$(PKG_NAME).list: $(PKG_IPK)
- $(IPKG) install $<
-
-source:
-prepare:
-compile: prepare libnvram-compile libshared-compile $(PKG_IPK) $(PKG_WLCOMPAT)
- mkdir -p $(STAGING_DIR)/usr/include
- cp -a ./include/* $(STAGING_DIR)/usr/include/
-install: libnvram-install libshared-install \
- $(IPKG_STATE_DIR)/info/$(PKG_NAME).list \
-
-clean: libshared-clean libnvram-clean
- rm -rf $(PKG_BUILD_DIR)
- rm -f $(PKG_IPK)
diff --git a/package/openwrt/libnvram/Makefile b/package/openwrt/libnvram/Makefile
deleted file mode 100644
index a5b62848b..000000000
--- a/package/openwrt/libnvram/Makefile
+++ /dev/null
@@ -1,46 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libnvram
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-EXTRA_CFLAGS := -c -I. -I../include
-
-all: compile
-
-define OBJ_template
-$(PKG_BUILD_DIR)/$(1): $(PKG_BUILD_DIR)
- $(TARGET_CC) $(TARGET_CFLAGS) $(EXTRA_CFLAGS) -o $$@ $$(patsubst %.o,%.c,$(1))
-endef
-
-OBJS := nvram_linux.o nvram_convert.o main.o
-LIBNVRAM_OBJS:= $(PKG_BUILD_DIR)/nvram_linux.o $(PKG_BUILD_DIR)/nvram_convert.o
-$(foreach obj,$(OBJS),$(eval $(call OBJ_template,$(obj))))
-
-$(PKG_BUILD_DIR):
- mkdir -p $(PKG_BUILD_DIR)
-
-$(PKG_BUILD_DIR)/nvram: $(PKG_BUILD_DIR)/main.o $(PKG_BUILD_DIR)/libnvram.so
- $(TARGET_CC) $(TARGET_CFLAGS) -o $@ $< -L$(PKG_BUILD_DIR) -lnvram
-
-$(PKG_BUILD_DIR)/libnvram.so: $(LIBNVRAM_OBJS)
- $(TARGET_CC) -shared -o $@ $^
-
-$(STAGING_DIR)/lib/libnvram.so: $(PKG_BUILD_DIR)/libnvram.so
- install -m 644 $< $@
-
-$(TARGET_DIR)/usr/lib/libnvram.so: $(PKG_BUILD_DIR)/libnvram.so
- install -m 644 $< $@
- $(STRIP) $@
-
-$(TARGET_DIR)/usr/sbin/nvram: $(PKG_BUILD_DIR)/nvram
- mkdir -p $(TARGET_DIR)/usr/sbin
- install -m 755 $< $@
- $(STRIP) $@
-
-compile: $(PKG_BUILD_DIR)/libnvram.so $(STAGING_DIR)/lib/libnvram.so $(PKG_BUILD_DIR)/nvram
-install: $(TARGET_DIR)/usr/lib/libnvram.so $(TARGET_DIR)/usr/sbin/nvram
-
-clean:
- rm -rf $(PKG_BUILD_DIR)
diff --git a/package/openwrt/libshared/Makefile b/package/openwrt/libshared/Makefile
deleted file mode 100644
index 4309c8ce6..000000000
--- a/package/openwrt/libshared/Makefile
+++ /dev/null
@@ -1,40 +0,0 @@
-# $Id$
-
-include $(TOPDIR)/rules.mk
-
-PKG_NAME:=libshared
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
-
-EXTRA_CFLAGS := -c -I. -I../include
-
-all: compile
-
-LIBSHARED_OBJS:=
-define OBJ_template
-$(PKG_BUILD_DIR)/$(1): $(PKG_BUILD_DIR)
- $(TARGET_CC) $(TARGET_CFLAGS) $(EXTRA_CFLAGS) -o $$@ $$(patsubst %.o,%.c,$(1))
-LIBSHARED_OBJS += $(PKG_BUILD_DIR)/$(1)
-endef
-
-OBJS := shutils.o wl.o wl_linux.o defaults.o linux_timer.o
-$(foreach obj,$(OBJS),$(eval $(call OBJ_template,$(obj))))
-
-
-$(PKG_BUILD_DIR):
- mkdir -p $(PKG_BUILD_DIR)
-
-$(PKG_BUILD_DIR)/libshared.so: $(LIBSHARED_OBJS)
- $(TARGET_CC) -shared -o $@ $^
-
-$(STAGING_DIR)/lib/libshared.so: $(PKG_BUILD_DIR)/libshared.so
- install -m 644 $< $@
-
-$(TARGET_DIR)/usr/lib/libshared.so: $(PKG_BUILD_DIR)/libshared.so
- install -m 644 $^ $@
- $(STRIP) $@
-
-compile: $(PKG_BUILD_DIR)/libshared.so $(STAGING_DIR)/lib/libshared.so
-install: $(TARGET_DIR)/usr/lib/libshared.so
-
-clean:
- rm -rf $(PKG_BUILD_DIR)
diff --git a/package/openwrt/mtd.c b/package/openwrt/mtd.c
deleted file mode 100644
index 74949fdac..000000000
--- a/package/openwrt/mtd.c
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * mtd - simple memory technology device manipulation tool
- *
- * Copyright (C) 2005 Waldemar Brodkorb <wbx@dass-it.de>,
- * Felix Fietkau <nbd@vd-s.ath.cx>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Id$
- *
- * code is based on linux-mtd example code
- */
-
-#include <limits.h>
-#include <unistd.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <stdint.h>
-#include <fcntl.h>
-#include <errno.h>
-#include <error.h>
-#include <time.h>
-#include <sys/ioctl.h>
-#include <sys/types.h>
-#include <sys/param.h>
-#include <sys/mount.h>
-#include <sys/stat.h>
-#include <sys/reboot.h>
-#include <string.h>
-
-#include <linux/mtd/mtd.h>
-
-#define TRX_MAGIC 0x30524448 /* "HDR0" */
-#define BUFSIZE (10 * 1024)
-#define MAX_ARGS 8
-
-struct trx_header {
- uint32_t magic; /* "HDR0" */
- uint32_t len; /* Length of file including header */
- uint32_t crc32; /* 32-bit CRC from flag_version to end of file */
- uint32_t flag_version; /* 0:15 flags, 16:31 version */
- uint32_t offsets[3]; /* Offsets of partitions from start of header */
-};
-
-int
-trx_check(const char *trxfile, const char *mtd)
-{
- struct mtd_info_user mtdInfo;
- int trxfd, fd;
- size_t count;
- struct trx_header trx;
- struct stat trxstat;
-
- trxfd = open(trxfile,O_RDONLY);
- if(trxfd < 0) {
- fprintf(stderr, "Could not open trx image: %s\n", trxfile);
- exit(1);
- }
-
- if (fstat(trxfd,&trxstat) < 0) {
- fprintf(stderr, "Could not get trx image file status: %s\n", trxfile);
- close(trxfd);
- exit(1);
- }
-
- count = read(trxfd, &trx, sizeof(struct trx_header));
- if (count < sizeof(struct trx_header)) {
- fprintf(stderr, "Could not trx header, file too small (%ld bytes)\n", count);
- close(trxfd);
- exit(1);
- }
-
- if (trx.magic != TRX_MAGIC || trx.len < sizeof(struct trx_header)) {
- fprintf(stderr, "Bad trx header\n");
- fprintf(stderr, "If this is a firmware in bin format, like some of the\n"
- "original firmware files are, use following command to convert to trx:\n"
- "dd if=firmware.bin of=firmware.trx bs=32 skip=1\n");
- close(trxfd);
- exit(1);
- }
-
- lseek(trxfd, 0, SEEK_SET);
-
- /* check if image fits to mtd device */
-
- fd = mtd_open(mtd, O_RDWR);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- if(mtdInfo.size < trxstat.st_size) {
- fprintf(stderr, "Image too big for partition: %s\n", mtd);
- close(trxfd);
- close(fd);
- exit(1);
- }
-
- printf("Writing %s to %s ...\n", trxfile, mtd);
-
- close(fd);
-
- return(trxfd);
-}
-
-int
-mtd_unlock(const char *mtd)
-{
- int fd;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdLockInfo;
-
- fd = mtd_open(mtd, O_RDWR);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- printf("Unlocking %s ...\n", mtd);
- mtdLockInfo.start = 0;
- mtdLockInfo.length = mtdInfo.size;
- if(ioctl(fd, MEMUNLOCK, &mtdLockInfo)) {
- close(fd);
- return 0;
- }
-
- close(fd);
- return 0;
-}
-
-int
-mtd_open(const char *mtd, int flags)
-{
- FILE *fp;
- char dev[PATH_MAX];
- int i;
-
- if ((fp = fopen("/proc/mtd", "r"))) {
- while (fgets(dev, sizeof(dev), fp)) {
- if (sscanf(dev, "mtd%d:", &i) && strstr(dev, mtd)) {
- snprintf(dev, sizeof(dev), "/dev/mtd/%d", i);
- fclose(fp);
- return open(dev, flags);
- }
- }
- fclose(fp);
- }
-
- return open(mtd, flags);
-}
-
-int
-mtd_erase(const char *mtd)
-{
- int fd;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdEraseInfo;
-
- fd = mtd_open(mtd, O_RDWR);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- printf("Erasing %s ...\n", mtd);
- mtdEraseInfo.length = mtdInfo.erasesize;
-
- for (mtdEraseInfo.start = 0;
- mtdEraseInfo.start < mtdInfo.size;
- mtdEraseInfo.start += mtdInfo.erasesize) {
-
- ioctl(fd, MEMUNLOCK, &mtdEraseInfo);
- if(ioctl(fd, MEMERASE, &mtdEraseInfo)) {
- fprintf(stderr, "Could not erase MTD device: %s\n", mtd);
- close(fd);
- exit(1);
- }
- }
-
- close(fd);
- return 0;
-
-}
-
-int
-mtd_write(int trxfd, const char *mtd)
-{
- int fd,i;
- size_t result,size,written;
- struct mtd_info_user mtdInfo;
- struct erase_info_user mtdEraseInfo;
- unsigned char src[BUFSIZE],dest[BUFSIZE];
- struct stat trxstat;
-
- if (fstat(trxfd,&trxstat) < 0) {
- fprintf(stderr, "Could not get trx image file status\n");
- close(trxfd);
- exit(1);
- }
-
- fd = mtd_open(mtd, O_RDWR);
- if(fd < 0) {
- fprintf(stderr, "Could not open mtd device: %s\n", mtd);
- exit(1);
- }
-
- if(ioctl(fd, MEMGETINFO, &mtdInfo)) {
- fprintf(stderr, "Could not get MTD device info from %s\n", mtd);
- close(fd);
- exit(1);
- }
-
- mtdEraseInfo.start = 0;
- mtdEraseInfo.length = trxstat.st_size & ~(mtdInfo.erasesize -1);
- if(trxstat.st_size % mtdInfo.erasesize) mtdEraseInfo.length += mtdInfo.erasesize;
-
- /* erase the chunk */
- if (ioctl (fd,MEMERASE,&mtdEraseInfo) < 0) {
- fprintf(stderr, "Erasing mtd failed: %s\n", mtd);
- exit(1);
- }
-
- size = trxstat.st_size;
- i = BUFSIZE;
- written = 0;
-
- while (size) {
- if (size < BUFSIZE) i = size;
- read(trxfd,src,i);
- result = write(fd,src,i);
- if (i != result) {
- if (result < 0) {
- fprintf(stderr,"Error while writing image");
- exit(1);
- }
- fprintf(stderr,"Error writing image");
- exit(1);
- }
- written += i;
- size -= i;
- }
-
- return 0;
-}
-
-void usage(void)
-{
- printf("Usage: mtd [<options> ...] <command> [<arguments> ...] <device>\n\n"
- "The device is in the format of mtdX (eg: mtd4) or its label.\n"
- "mtd recognizes these commands:\n"
- " unlock unlock the device\n"
- " erase erase all data on device\n"
- " write <imagefile> write imagefile to device\n"
- "Following options are available:\n"
- " -r reboot after successful command\n"
- " -e <device> erase <device> before executing the command\n\n"
- "Example: To write linux.trx to mtd4 labeled as linux and reboot afterwards\n"
- " mtd -r write linux.trx linux\n\n");
- exit(1);
-}
-
-int main (int argc, char **argv)
-{
- int ch, i, boot, unlock, trxfd;
- char *erase[MAX_ARGS], *device;
- enum {
- CMD_ERASE,
- CMD_WRITE,
- CMD_UNLOCK
- } cmd;
-
- erase[0] = NULL;
- boot = 0;
-
- while ((ch = getopt(argc, argv, "re:")) != -1)
- switch (ch) {
- case 'r':
- boot = 1;
- break;
- case 'e':
- i = 0;
- while ((erase[i] != NULL) && ((i + 1) < MAX_ARGS))
- i++;
-
- erase[i++] = optarg;
- erase[i] = NULL;
- break;
-
- case '?':
- default:
- usage();
- }
- argc -= optind;
- argv += optind;
-
- if (argc < 2)
- usage();
-
- if ((strcmp(argv[0], "unlock") == 0) && (argc == 2)) {
- cmd = CMD_UNLOCK;
- device = argv[1];
- } else if ((strcmp(argv[0], "erase") == 0) && (argc == 2)) {
- cmd = CMD_ERASE;
- device = argv[1];
- } else if ((strcmp(argv[0], "write") == 0) && (argc == 3)) {
- cmd = CMD_WRITE;
- device = argv[2];
- /* check trx file before erasing or writing anything */
- trxfd = trx_check(argv[1], device);
- } else {
- usage();
- }
-
- sync();
-
- i = 0;
- while (erase[i] != NULL) {
- mtd_unlock(erase[i]);
- mtd_erase(erase[i]);
- i++;
- }
-
- mtd_unlock(device);
-
- switch (cmd) {
- case CMD_UNLOCK:
- break;
- case CMD_ERASE:
- mtd_erase(device);
- break;
- case CMD_WRITE:
- mtd_write(trxfd, device);
- break;
- }
-
- if (boot)
- kill(1, 15); // send SIGTERM to init for reboot
-
- return 0;
-}
diff --git a/target/linux/package/Makefile b/target/linux/package/Makefile
index f34ad9a8a..adce4d4ee 100644
--- a/target/linux/package/Makefile
+++ b/target/linux/package/Makefile
@@ -5,10 +5,17 @@ package-$(BR2_PACKAGE_KMOD_FUSE) += fuse
package-$(BR2_PACKAGE_KMOD_MINI_FO) += mini_fo
package-$(BR2_PACKAGE_KMOD_SHFS) += shfs
package-$(BR2_PACKAGE_KMOD_OPENSWAN) += openswan
+
+ifeq ($(BOARD),brcm)
+package-y += nvram openwrt
+
ifeq ($(LINUX_VERSION),2.4.30)
package-$(BR2_PACKAGE_KMOD_WLCOMPAT) += wlcompat
endif
+nvram-compile: openwrt-compile
+endif
+
all: compile install
clean: $(patsubst %,%-clean,$(package-) $(package-y) $(package-m))
compile: $(patsubst %,%-compile,$(package-y) $(package-m))
diff --git a/target/linux/package/nvram/Makefile b/target/linux/package/nvram/Makefile
new file mode 100644
index 000000000..da67ffa7f
--- /dev/null
+++ b/target/linux/package/nvram/Makefile
@@ -0,0 +1,33 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=nvram
+PKG_RELEASE:=1
+
+PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)
+
+include $(TOPDIR)/package/rules.mk
+
+BR2_PACKAGE_NVRAM:=y # does not depend on menuconfig
+$(eval $(call PKG_template,NVRAM,nvram,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+$(PKG_BUILD_DIR)/.prepared:
+ mkdir -p $(PKG_BUILD_DIR)
+ cp -a ./src/* $(PKG_BUILD_DIR)
+ touch $@
+
+$(PKG_BUILD_DIR)/.built:
+ $(MAKE) -C $(PKG_BUILD_DIR) \
+ $(TARGET_CONFIGURE_OPTS) \
+ CFLAGS="$(TARGET_CFLAGS) -I $(STAGING_DIR)/usr/include"
+ touch $@
+
+$(IPKG_NVRAM):
+ mkdir -p $(IDIR_NVRAM)/usr/lib
+ cp $(PKG_BUILD_DIR)/*.so $(IDIR_NVRAM)/usr/lib
+ mkdir -p $(IDIR_NVRAM)/usr/sbin
+ cp $(PKG_BUILD_DIR)/nvram $(IDIR_NVRAM)/usr/sbin
+ $(RSTRIP) $(IDIR_NVRAM)
+ $(IPKG_BUILD) $(IDIR_NVRAM) $(PACKAGE_DIR)
+
diff --git a/target/linux/package/nvram/ipkg/nvram.control b/target/linux/package/nvram/ipkg/nvram.control
new file mode 100644
index 000000000..bb2581303
--- /dev/null
+++ b/target/linux/package/nvram/ipkg/nvram.control
@@ -0,0 +1,7 @@
+Package: nvram
+Priority: optional
+Section: sys
+Maintainer: Felix Fietkau <nbd@vd-s.ath.cx>
+Source: buildroot internal
+Description: NVRAM utility and libraries for Broadcom hardware
+
diff --git a/target/linux/package/nvram/src/Makefile b/target/linux/package/nvram/src/Makefile
new file mode 100644
index 000000000..376c2b7de
--- /dev/null
+++ b/target/linux/package/nvram/src/Makefile
@@ -0,0 +1,22 @@
+# $Id$
+
+EXTRA_CFLAGS := -c -I. -I../include
+LIBSHARED_OBJS := shutils.o wl.o wl_linux.o defaults.o linux_timer.o
+LIBNVRAM_OBJS := nvram_linux.o nvram_convert.o
+
+all: libshared.so libnvram.so nvram
+
+%.o: %.c
+ $(CC) $(CFLAGS) $(EXTRA_CFLAGS) -o $@ $^
+
+libshared.so: $(LIBSHARED_OBJS)
+ $(CC) -shared -o $@ $^
+
+libnvram.so: $(LIBNVRAM_OBJS)
+ $(CC) -shared -o $@ $^
+
+nvram: main.o
+ $(CC) -o $@ $^ -L. -lnvram
+
+clean:
+ rm -f *.o *.so nvram
diff --git a/package/openwrt/libshared/bcmtimer.h b/target/linux/package/nvram/src/bcmtimer.h
index 3db9e624f..3db9e624f 100644
--- a/package/openwrt/libshared/bcmtimer.h
+++ b/target/linux/package/nvram/src/bcmtimer.h
diff --git a/package/openwrt/libshared/defaults.c b/target/linux/package/nvram/src/defaults.c
index 119eaac72..119eaac72 100644
--- a/package/openwrt/libshared/defaults.c
+++ b/target/linux/package/nvram/src/defaults.c
diff --git a/package/openwrt/libshared/linux_timer.c b/target/linux/package/nvram/src/linux_timer.c
index 0402e4437..0402e4437 100644
--- a/package/openwrt/libshared/linux_timer.c
+++ b/target/linux/package/nvram/src/linux_timer.c
diff --git a/package/openwrt/libnvram/main.c b/target/linux/package/nvram/src/main.c
index a64430f7b..a64430f7b 100644
--- a/package/openwrt/libnvram/main.c
+++ b/target/linux/package/nvram/src/main.c
diff --git a/package/openwrt/libnvram/nvram_convert.c b/target/linux/package/nvram/src/nvram_convert.c
index 485909026..485909026 100644
--- a/package/openwrt/libnvram/nvram_convert.c
+++ b/target/linux/package/nvram/src/nvram_convert.c
diff --git a/package/openwrt/libnvram/nvram_convert.h b/target/linux/package/nvram/src/nvram_convert.h
index 70e12327d..70e12327d 100644
--- a/package/openwrt/libnvram/nvram_convert.h
+++ b/target/linux/package/nvram/src/nvram_convert.h
diff --git a/package/openwrt/libnvram/nvram_linux.c b/target/linux/package/nvram/src/nvram_linux.c
index c41e32118..c41e32118 100644
--- a/package/openwrt/libnvram/nvram_linux.c
+++ b/target/linux/package/nvram/src/nvram_linux.c
diff --git a/package/openwrt/libshared/shutils.c b/target/linux/package/nvram/src/shutils.c
index 49ad41af8..49ad41af8 100644
--- a/package/openwrt/libshared/shutils.c
+++ b/target/linux/package/nvram/src/shutils.c
diff --git a/package/openwrt/libshared/wl.c b/target/linux/package/nvram/src/wl.c
index f09317ad0..f09317ad0 100644
--- a/package/openwrt/libshared/wl.c
+++ b/target/linux/package/nvram/src/wl.c
diff --git a/package/openwrt/libshared/wl_linux.c b/target/linux/package/nvram/src/wl_linux.c
index 126a40b4b..126a40b4b 100644
--- a/package/openwrt/libshared/wl_linux.c
+++ b/target/linux/package/nvram/src/wl_linux.c
diff --git a/target/linux/package/openwrt/Makefile b/target/linux/package/openwrt/Makefile
new file mode 100644
index 000000000..ee38f75a1
--- /dev/null
+++ b/target/linux/package/openwrt/Makefile
@@ -0,0 +1,34 @@
+# $Id$
+
+include $(TOPDIR)/rules.mk
+
+PKG_NAME := openwrt-utils
+PKG_RELEASE := 2
+PKG_BUILD_DIR := $(BUILD_DIR)/$(PKG_NAME)
+
+include $(TOPDIR)/package/rules.mk
+
+BR2_PACKAGE_OPENWRT:=y # ignore menuconfig
+$(eval $(call PKG_template,OPENWRT,openwrt-utils,$(PKG_VERSION)-$(PKG_RELEASE),$(ARCH)))
+
+
+$(PKG_BUILD_DIR)/.prepared:
+ mkdir -p $(PKG_BUILD_DIR)
+ touch $@
+
+$(PKG_BUILD_DIR)/jffs2root: jffs2root.c
+ $(TARGET_CC) -o $@ $<
+
+$(PKG_BUILD_DIR)/.built: $(PKG_BUILD_DIR)/jffs2root
+ touch $@
+
+$(IPKG_OPENWRT):
+ mkdir -p $(IDIR_OPENWRT)/sbin
+ cp $(PKG_BUILD_DIR)/jffs2root $(IDIR_OPENWRT)/sbin
+ $(RSTRIP) $(IDIR_OPENWRT)
+ $(IPKG_BUILD) $(IDIR_OPENWRT) $(PACKAGE_DIR)
+
+compile: install-dev
+install-dev:
+ mkdir -p $(STAGING_DIR)/usr/include
+ cp -a ./include/* $(STAGING_DIR)/usr/include/
diff --git a/package/openwrt/include/bcmnvram.h b/target/linux/package/openwrt/include/bcmnvram.h
index 3c452634e..3c452634e 100644
--- a/package/openwrt/include/bcmnvram.h
+++ b/target/linux/package/openwrt/include/bcmnvram.h
diff --git a/package/openwrt/include/bcmutils.h b/target/linux/package/openwrt/include/bcmutils.h
index 05ad41d9d..05ad41d9d 100644
--- a/package/openwrt/include/bcmutils.h
+++ b/target/linux/package/openwrt/include/bcmutils.h
diff --git a/package/openwrt/include/cy_conf.h b/target/linux/package/openwrt/include/cy_conf.h
index dbe387b83..dbe387b83 100644
--- a/package/openwrt/include/cy_conf.h
+++ b/target/linux/package/openwrt/include/cy_conf.h
diff --git a/package/openwrt/include/epivers.h b/target/linux/package/openwrt/include/epivers.h
index e174fb50d..e174fb50d 100644
--- a/package/openwrt/include/epivers.h
+++ b/target/linux/package/openwrt/include/epivers.h
diff --git a/package/openwrt/include/proto/802.11.h b/target/linux/package/openwrt/include/proto/802.11.h
index ea57850ce..ea57850ce 100644
--- a/package/openwrt/include/proto/802.11.h
+++ b/target/linux/package/openwrt/include/proto/802.11.h
diff --git a/package/openwrt/include/proto/ethernet.h b/target/linux/package/openwrt/include/proto/ethernet.h
index 173464af6..173464af6 100644
--- a/package/openwrt/include/proto/ethernet.h
+++ b/target/linux/package/openwrt/include/proto/ethernet.h
diff --git a/package/openwrt/include/shutils.h b/target/linux/package/openwrt/include/shutils.h
index 783ee9ede..783ee9ede 100644
--- a/package/openwrt/include/shutils.h
+++ b/target/linux/package/openwrt/include/shutils.h
diff --git a/package/openwrt/include/typedefs.h b/target/linux/package/openwrt/include/typedefs.h
index 6b0c25e04..6b0c25e04 100644
--- a/package/openwrt/include/typedefs.h
+++ b/target/linux/package/openwrt/include/typedefs.h
diff --git a/package/openwrt/include/utils.h b/target/linux/package/openwrt/include/utils.h
index b8d1cdb7b..b8d1cdb7b 100644
--- a/package/openwrt/include/utils.h
+++ b/target/linux/package/openwrt/include/utils.h
diff --git a/package/openwrt/include/wlcompat.h b/target/linux/package/openwrt/include/wlcompat.h
index a4fc13439..a4fc13439 100644
--- a/package/openwrt/include/wlcompat.h
+++ b/target/linux/package/openwrt/include/wlcompat.h
diff --git a/package/openwrt/include/wlioctl.h b/target/linux/package/openwrt/include/wlioctl.h
index d5ef11f9e..d5ef11f9e 100644
--- a/package/openwrt/include/wlioctl.h
+++ b/target/linux/package/openwrt/include/wlioctl.h
diff --git a/package/openwrt/include/wlutils.h b/target/linux/package/openwrt/include/wlutils.h
index 07e2536ca..07e2536ca 100644
--- a/package/openwrt/include/wlutils.h
+++ b/target/linux/package/openwrt/include/wlutils.h
diff --git a/package/openwrt/openwrt-utils.control b/target/linux/package/openwrt/ipkg/openwrt-utils.control
index 37ef63276..37ef63276 100644
--- a/package/openwrt/openwrt-utils.control
+++ b/target/linux/package/openwrt/ipkg/openwrt-utils.control
diff --git a/package/openwrt/jffs2root.c b/target/linux/package/openwrt/jffs2root.c
index 36b928ff4..36b928ff4 100644
--- a/package/openwrt/jffs2root.c
+++ b/target/linux/package/openwrt/jffs2root.c
diff --git a/target/linux/package/wlcompat/Makefile b/target/linux/package/wlcompat/Makefile
index 419b4d2f5..55f05bf9f 100644
--- a/target/linux/package/wlcompat/Makefile
+++ b/target/linux/package/wlcompat/Makefile
@@ -17,7 +17,7 @@ endif
WLCOMPAT_FLAGS:=$(TARGET_CFLAGS) -D__KERNEL__ -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \
-mno-abicalls -fno-pic -finline-limit=100000 -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 \
-Wa,-mips32 -Wa,--trap -DMODULE -mlong-calls -fno-common -I. -I linux-2.4 -funsigned-char -nostdinc \
- -iwithprefix include -I$(KERNEL_DIR)/include -I$(KERNEL_DIR)/include/asm/gcc -I$(TOPDIR)/package/openwrt/include -c
+ -iwithprefix include -I$(KERNEL_DIR)/include -I$(KERNEL_DIR)/include/asm/gcc -I../openwrt/include -c
$(PKG_BUILD_DIR)/.prepared:
mkdir -p $(PKG_BUILD_DIR)