#
# Makefile - NetLED Make File
#
# make            - By default, make all.
# make all        - Make everything.
# make clean      - Clean up after creating (remove o files, core, debug, etc)
# make force      - Clean up, then make all.
# make install    - Install the binary (and make it if you haven't already)
# make installrc  - Install the rc.d files (startup/shutdown) (Slackware only)
# make update     - Download the update patch and inflict it on the source.
#

# - GLOBAL VARIABLES ---------------------------------------------------

ifndef DEBUG    # non-debug version
CFLAGS    =-Wall -O2 -DNDEBUG -Wall
LFLAGS    =-s
CC        =gcc

else            # debug version
CFLAGS  =-Wall -O2 -g -DDEBUG -Wall
LFLAGS  =-g
CC      =gcc
endif

#OBJS      =if.o utils.o config.o daemon.o ledctrl.o netled.o
OBJS      =if.o utils.o daemon.o ledctrl.o netled.o
TARGET    =netled
VERSION   =4.0.11
LOCATION  =/usr/local/bin


# - PHONY TARGETS ------------------------------------------------------

.PHONY: all force install installrc clean update

all: $(OBJS) $(TARGET)

force: clean $(TARGET)

install: all
	@echo -e "\033[1;37m\tInstalling $(TARGET) -> $(LOCATION)\033[1;31m"
	@install -s -m 6755 $(TARGET) $(LOCATION)/$(TARGET)
	@echo -ne "\033[m"

installrc:
#	cp -upr rc.d /etc/rc.d

clean:
	@echo -e "\033[1;37m\tRemoving re-buildable files\033[1;31m"
	@rm -f $(OBJS) $(TARGET) core debug
	@echo -ne "\033[m"

update:
	lynx -source http://mars.ark.com/~mbevan/netled/files/$(VERSION).patch > update.patch
	perl -pi -e 's/\r//' update.patch
	patch -i update.patch
	rm -f update.patch


# - IMPLICIT RULES -----------------------------------------------------

.c.o: $<
	@echo -e "\033[1;37m\tCompiling $< -> $@\033[1;31m"
	@$(CC) $(CFLAGS) -o $@ -c $<
	@echo -ne "\033[m"


# - EXPLICIT TARGETS ---------------------------------------------------

$(TARGET): $(OBJS)
	@echo -e "\033[1;37m\tLinking $@ ($?)\033[1;31m"
	@$(CC) $(LFLAGS) -o $@ $?
	@echo -ne "\033[m"

# EOF