Write object headers with stored file extents
[yaffs2.git] / Makefile
index 2280398..a346458 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,12 @@
-#Makefile for YAFFS2 as a module
+# Main Makefile for out-of-tree yaffs2 .ko building
 #
-# NB this is not yet suitable for putting into the kernel tree.
-# YAFFS: Yet another FFS. A NAND-flash specific file system. 
+# You can make two flavours of the .ko
+#  make YAFFS_CURRENT=1  : makes yaffs2.ko using the current version code
+#  make                  : makes yaffs2multi.ko using the multi-version code
 #
-# Copyright (C) 2002 Aleph One Ltd.
+# YAFFS: Yet Another Flash File System. A NAND-flash specific file system.
+#
+# Copyright (C) 2002-2010 Aleph One Ltd.
 #   for Toby Churchill Ltd and Brightstar Engineering
 #
 # Created by Charles Manning <charles@aleph1.co.uk>
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License version 2 as
 # published by the Free Software Foundation.
-#
-# $Id: Makefile,v 1.5 2005-08-01 20:52:35 luc Exp $
-#
-
-## Change or override  KERNELDIR to your kernel
-## comment out USE_xxxx if you don't want these features.
-
-KERNELDIR = /usr/src/kernels/2.6.11-1.1369_FC4-i686
-
-## Change if you are using a cross-compiler
-MAKETOOLS = 
-
-CC=$(MAKETOOLS)gcc
-LD=$(MAKETOOLS)ld
-
-# Configurations...
-# Comment out the stuff you don't want.
-#
-
-# CONFIG_YAFFS_YAFFS1
-# This adds the yaffs file system support for working with a
-# a 512 byte / page NAND mtd.
-
-USE_MTD = -DCONFIG_YAFFS_YAFFS1
-
-# CONFIG_YAFFS_YAFFS2
-# This adds the yaffs2 file system support for working with a 
-# 2048 or larger byte / page NAND mtd.
-
-USE_MTD_2 = -DCONFIG_YAFFS_YAFFS2
-
-
-# CONFIG_YAFFS_RAM_ENABLED.
-# This adds the yaffsram file system support. Nice for testing on x86, but uses 2MB of RAM.
-# Don't enable for NAND-based targets.
-
-# USE_RAM_FOR_TEST = -DCONFIG_YAFFS_RAM_ENABLED
-
-# CONFIG_YAFFS2_RAM_ENABLED.
-# This adds the yaffs2ram file system support. Nice for testing on x86, but uses 2MB of RAM.
-# Don't enable for NAND-based targets.
-
-# USE_RAM_FOR_TEST_2 = -DCONFIG_YAFFS2_RAM_ENABLED
-
-# CONFIG_YAFFS_USE_NANDECC
-# This enables the ECC functions of the generic MTD-NAND driver.
-# This will not work if you are using the old mtd.
-#
-# NB UseNANDECC does not work at present with yaffsram.
-
-USE_NANDECC = -DCONFIG_YAFFS_USE_NANDECC
-
-# CONFIG_YAFFS_ECC_WRONG_ORDER
-# This makes yaffs_ecc.c use the same ecc byte order as
-# Steven Hill's nand_ecc.c. If not set, then you get the
-# same ecc byte order as SmartMedia.
-
-#USE_WRONGECC = -DCONFIG_YAFFS_ECC_WRONG_ORDER
-
-# CONFIG_YAFFS_USE_HEADER_FILE_SIZE
-# When the flash is scanned, two file sizes are constructed:
-# * The size taken from the object header for the file.
-# * The size figured out by scanning the data chunks.
-# If this option is enabled, then the object header size is used, otherwise the scanned size is used.
-# Suggest leaving this disabled.
-
-#USE_HEADER_FILE_SIZE = -DCONFIG_YAFFS_USE_HEADER_FILE_SIZE
-
-#CONFIG_YAFFS_DISABLE_CHUNK_ERASED_CHECK
-# Enabling this turns off the test that chunks are erased in flash before writing to them.
-# this is safe, since the write verification will fail.
-# Suggest enabling the test (ie. keep the following line commented) during development to help debug things.
-
-#IGNORE_CHUNK_ERASED = -DCONFIG_YAFFS_DISABLE_CHUNK_ERASED_CHECK
-
-#CONFIG_YAFFS_DISABLE_WRITE_VERIFY
-# I am severely reluctant to provide this config. Disabling the verification is not a good thing to do
-# since NAND writes can fail silently.
-# Disabling the write verification will cause your teeth to rot, rats to eat your corn and give you split ends.
-# You have been warned. ie. Don't uncomment the following line.
-
-#IGNORE_WRITE_VERIFY = -DCONFIG_YAFFS_DISBLE_WRITE_VERIFY
-
-#CONFIG_YAFFS_SHORT_NAMES_IN_RAM
-# If this config is set, then short names are stored with the yaffs_Object
-# This costs an extra 16 bytes of RAM per object, but makes look-ups faster.
-
-ENABLE_SHORT_NAMES_IN_RAM = -DCONFIG_SHORT_NAMES_IN_RAM
-
-# End of configuration options.
-
-WIERD_COMPILE_CONFIGS = -DNR_IRQS=1 -DNR_IRQ_VECTORS=1
-
-YAFFS_CONFIGS = $(WIERD_COMPILE_CONFIGS) \
-                $(USE_RAM_FOR_TEST) $(USE_MTD) $(USE_RAM_FOR_TEST_2) $(USE_MTD_2)\
-                $(USE_HEADER_FILE_SIZE) $(IGNORE_CHUNK_ERASED) $(IGNORE_WRITE_VERIFY) \
-                $(ENABLE_SHORT_NAMES_IN_RAM) $(USE_NANDECC) $(USE_WRONGECC)
-
-
-YAFFS2_CONFIGS = $(YAFFS_CONFIGS)
-
-CFLAGS = -D__KERNEL__ -DMODULE $(YAFFS2_CONFIGS)  -I$(KERNELDIR)/include -O2 -g -Wall
-
-
-OBJS = yaffs_fs.o yaffs_guts.o yaffs_ramem.o yaffs_mtdif.o yaffs_ecc.o yaffs_tagscompat.o yaffs_ramem2k.o yaffs_packedtags2.o yaffs_mtdif2.o yaffs_tagsvalidity.o
-
-
-all: yaffs.o
-
-$(OBJS): %.o: %.c Makefile
-       $(CC) -c $(CFLAGS) $< -o $@
 
-yaffs.o: $(OBJS)
-       $(LD) -r $(OBJS) -o $@
+ifdef YAFFS_CURRENT
+       YAFFS_O := yaffs2.o
+       EXTRA_CFLAGS += -DYAFFS_CURRENT
+else
+       YAFFS_O := yaffs2multi.o
+endif
+
+ifneq ($(KERNELRELEASE),)
+       EXTRA_CFLAGS += -DYAFFS_OUT_OF_TREE
+
+       obj-m := $(YAFFS_O)
+
+       yaffs2-objs := yaffs_mtdif_single.o
+       yaffs2-objs += yaffs_packedtags1.o
+       yaffs2-objs += yaffs_ecc.o yaffs_vfs_single.o yaffs_guts.o
+       yaffs2-objs += yaffs_packedtags2.o
+       yaffs2-objs += yaffs_tagscompat.o
+       yaffs2-objs += yaffs_tagsmarshall.o
+       yaffs2-objs += yaffs_checkptrw.o yaffs_nand.o
+       yaffs2-objs += yaffs_checkptrw.o yaffs_nand.o yaffs_nameval.o
+       yaffs2-objs += yaffs_allocator.o yaffs_bitmap.o yaffs_attribs.o
+       yaffs2-objs += yaffs_yaffs1.o
+       yaffs2-objs += yaffs_yaffs2.o
+       yaffs2-objs += yaffs_verify.o
+       yaffs2-objs += yaffs_summary.o
+
+       yaffs2multi-objs := yaffs_mtdif_multi.o
+       yaffs2multi-objs += yaffs_packedtags1.o
+       yaffs2multi-objs += yaffs_ecc.o yaffs_vfs_multi.o yaffs_guts.o
+       yaffs2multi-objs += yaffs_packedtags2.o
+       yaffs2multi-objs += yaffs_tagscompat.o
+       yaffs2multi-objs += yaffs_tagsmarshall.o
+       yaffs2multi-objs += yaffs_checkptrw.o yaffs_nand.o
+       yaffs2multi-objs += yaffs_checkptrw.o yaffs_nand.o yaffs_nameval.o
+       yaffs2multi-objs += yaffs_allocator.o yaffs_bitmap.o yaffs_attribs.o
+       yaffs2multi-objs += yaffs_yaffs1.o
+       yaffs2multi-objs += yaffs_yaffs2.o
+       yaffs2multi-objs += yaffs_verify.o
+       yaffs2multi-objs += yaffs_summary.o
+
+else
+       KERNELDIR ?= /lib/modules/$(shell uname -r)/build
+       PWD := $(shell pwd)
+
+modules default:
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) modules
+
+mi modules_install:
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install
 
 clean:
-       rm -f $(OBJS) core
+       $(MAKE) -C $(KERNELDIR) M=$(PWD) clean
+endif