#
# Makefile for MAKEDEV-C

# Here is stuff suitable for the standalone distribution.
# TESTING should not be set unless you're testing makedev.
# UTIL_LINUX should be set to 1 if makedev is being built as 
# part of the util-linux distribution.

TESTING=0
UTIL_LINUX=0

ifeq ($(TESTING),1)

# Settings for testing and developing makedev
CC=gcc
CFLAGS=-g -Wall -DTESTING
LDFLAGS=-qmagic
BINARY=MAKEDEV
CAN_BUILD_PARSER=1

else
ifneq ($(UTIL_LINUX),1)

# Settings for shipping makedev standalone
CC=gcc
CFLAGS=-O2 -fomit-frame-pointer
LDFLAGS=-qmagic -s
BINARY=MAKEDEV

else

# Settings for shipping makedev with the util-linux package
include ../MCONFIG
CFLAGS=$(CFLAGS) -DUTIL_LINUX
BINARY=MAKEDEV-C
DEV=$(BINARY)
FILES=devinfo makedev.cfg

endif
endif

# Man pages and other stuff
MAN5=devinfo.5 makedev.cfg.5
MAN8=$(BINARY).8

all: $(BINARY)

$(BINARY): parser.o devices.o
	$(CC) $(LDFLAGS) parser.o devices.o -o $@

ifeq ($(CAN_BUILD_PARSER),1)
%.c: %.syn
	ag -b $<
endif

%.o: %.c
	$(CC) $(CFLAGS) $< -c


ifeq ($(UTIL_LINUX),1)
#Installation for util-linux

install: all
	$(INSTALLDIR) $(DEVDIR) $(ETCDIR)
	$(INSTALLDAT) $(FILES) $(ETCDIR)
	$(INSTALLBIN) $(DEV) $(DEVDIR)
	$(INSTALLDIR) $(MAN5DIR) $(MAN8DIR)
	$(INSTALLMAN) $(MAN5) $(MAN5DIR)
	$(INSTALLMAN) $(MAN8) $(MAN8DIR)

else
#Installation for standalone

install: all
	install -m 755 -s MAKEDEV /dev
	install -m 644 devinfo makedev.cfg /etc
	install -m 644 $(MAN5) /usr/man/man5
	install -m 644 $(MAN8) /usr/man/man8

endif

parser.o: parser.c parser.h devices.h 
devices.o: devices.c devices.h version.h
.PHONY: all tidy distclean clean pristine

tidy: 
	-rm -f *~ core

distclean: tidy
	-rm -f *.o

clean: distclean
	-rm -f MAKEDEV MAKEDEV-C

ifeq ($(CAN_BUILD_PARSER),1)
pristine: clean
	-rm -f parser.c parser.h
endif
