X-Git-Url: http://www.aleph1.co.uk/gitweb/?p=yaffs2.git;a=blobdiff_plain;f=Makefile;h=1dbafc6ff3a501e1db1594f92d70dc6714a99b61;hp=5a7829270e225be4432c5acd97072253debcf7a3;hb=2870702e0b0f4342857222a36ffcb21886c7f4bf;hpb=b01745f795ec14af862179b939964151dcda166c diff --git a/Makefile b/Makefile index 5a78292..1dbafc6 100644 --- 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 @@ -11,127 +14,52 @@ # 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.4 2005-07-31 09:26:35 marty 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_OLD_MTD -# Enable this to use the old MTD stuff that did not have yaffs support. -# You can use this to get around compilation problems, but the best -# thing to do is to upgrade your MTD support. You will get better speed. - -#USE_OLD_MTD = -DCONFIG_YAFFS_USE_OLD_MTD - -# 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_OLD_MTD) $(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 +else + YAFFS_O := yaffs2multi.o +endif + +ifneq ($(KERNELRELEASE),) + EXTRA_CFLAGS += -DYAFFS_OUT_OF_TREE + + obj-m := $(YAFFS_O) + + yaffs2-objs := yaffs_mtdif.o yaffs_mtdif2_single.o + yaffs2-objs += yaffs_mtdif1_single.o 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 yaffs_tagsvalidity.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 + + yaffs2multi-objs := yaffs_mtdif.o yaffs_mtdif2_multi.o + yaffs2multi-objs += yaffs_mtdif1_multi.o 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 yaffs_tagsvalidity.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 + +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