CC = gcc
LEX=flex
CFLAGS = -m486 -O2 -Wall

BINDIR = /sbin
KSYMS = /usr/src/linux/kernel/ksyms.c
TESTDEFS = -D__KERNEL__ -D__GENKSYMS__ -DCONFIG_MODVERSIONS

all: genksyms

genksyms: symlex.o parsesym.o
	$(CC) $(CFLAGS) -N -o genksyms symlex.o parsesym.o

symlex.o: symlex.c
	$(CC) -c -m486 -O2 symlex.c

symlex.c: symlex.l
	$(LEX) -l symlex.l
	mv lex.yy.c symlex.c

symlex.o parsesym.o: lexsyms.h

parsesym.o: crc32.tab

crc32.tab: makecrc32
	./makecrc32 > crc32.tab

install: genksyms
	install -c genksyms $(BINDIR)
	cp genksyms.8 /usr/man/man8

clean:
	rm -f *.o crc32.tab symlex.c
	rm -f makecrc32 genksyms

test: genksyms
	gcc -E $(TESTDEFS) $(KSYMS) | ./genksyms VERSIONHEADERS

testall: genksyms
	gcc -E $(TESTDEFS) /usr/src/linux/kernel/*.c | ./genksyms VERSIONHEADERS

dump: genksyms
	gcc -E $(TESTDEFS) $(KSYMS) | ./genksyms -D > check_dump

debug: genksyms
	gcc -E $(TESTDEFS) $(KSYMS) | ./genksyms -dd > check_debug

input:
	gcc -E $(TESTDEFS) $(KSYMS) > check_input
