# Uncomment the second line on SMP systems if the magic invocation fails.
#SMP=0
#SMP=1
SMP:=$(shell if grep -q '^SMP[[:space:]]*=' /usr/src/linux/Makefile; then echo 1; else echo 0; fi)

# Uncomment the second line to enable debugging.
DEBUG=0
#DEBUG=1

# Uncomment the second line for developer options (like compiler warnings)
DEVELOP=0
#DEVELOP=1

# Uncomment the second line to compile a separate smbus module
SMBUS_MODULE=0
#SMBUS_MODULE=1

# Uncomment the second line to export only the really necessary symbols to
# the kernel
ALLINONE=0
#ALLINONE=1

# This is the directory into which the module will be installed, if you
# call 'make install'
MODDIR=/lib/modules/extra/misc

# This is the directory into which the include files will be installed,
# if you call 'make install'. If you install it in the directory below,
# #include <linux/smbus.h>, for example, should work, regardless of the
# current linux kernel.
INCLUDEDIR=/usr/local/include/linux

# Below this, nothing should need to be changed.

MOD_LM=lm_sensors.o

WARNINGS=-Wall -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
         -Wcast-align -Wwrite-strings -Wnested-externs -Winline

CFLAGS = -D__KERNEL__ -DMODULE -I. -O2 -fomit-frame-pointer 

ifeq ($(SMP),1)
CFLAGS += -D__SMP__
endif
ifeq ($(DEBUG),1)
CFLAGS += -DDEBUG
endif
ifeq ($(DEVELOP),1)
CFLAGS += $(WARNINGS)
endif
ifeq ($(SMBUS_MODULE),1)
CFLAGS += -DSMBUS_MODULE
endif
ifeq ($(FORCE_PIIX4_ENABLE),1)
CFLAGS += -DFORCE_PIIX4_ENABLE
endif
ifeq ($(ALLINONE),1)
CFLAGS += -DEXTERN=static -DALLINONE
else
CFLAGS += -DEXTERN=extern
endif

LDFLAGS = -m elf_i386 -r

MKDIR-P=mkdir -p
CP=cp -f

.PHONY: all clean install version package


ifeq ($(SMBUS_MODULE),1)

# SMBUS_MODULE=1

all: $(MOD_LM) smbus.o

install: lm_sensors.o smbus.o
	$(MKDIR-P) $(MODDIR) $(INCLUDEDIR)
	install -o root -g root -m 644 $(MOD_LM) $(MODDIR)
	install -o root -g root -m 644 smbus.o $(MODDIR)
	install -o root -g root -m 644 smbus.h $(INCLUDEDIR)
	install -o root -g root -m 644 lm_sensors.h $(INCLUDEDIR)

else

# SMBUS_MODULE=0

all: $(MOD_LM)

install: $(MOD_LM) smbus.o
	$(MKDIR-P) $(MODDIR) $(INCLUDEDIR)
	install -o root -g root -m 644 $(MOD_LM) $(MODDIR)
	install -o root -g root -m 644 smbus.h $(INCLUDEDIR)
	install -o root -g root -m 644 lm_sensors.h $(INCLUDEDIR)
endif


ifeq ($(ALLINONE),1)

# ALLINONE=1

.lm_sensors.c: main.c lm75.c lm78.c lmsysctl.c
	$(RM) .lm_sensors.c
	cat main.c lm75.c lm78.c lmsysctl.c > .lm_sensors.c

.lm_sensors.o: .lm_sensors.c main.h lm75.h lm78.h lmconfig.h lmversion.h lmsmbus.h smbus.h lm_sensors.h compat.h
	$(CC) $(CFLAGS) -c .lm_sensors.c

ifeq ($(SMBUS_MODULE),1)

# ALLINONE=1, SMBUS_MODULE=1

$(MOD_LM): .lm_sensors.o
	$(RM) $(MOD_LM)
	$(CP) .lm_sensors.o $(MOD_LM)

else

# ALLINONE=1, SMBUS_MODULE=0

$(MOD_LM): .lm_sensors.o smbus.o
	$(LD) $(LDFLAGS) -o $(MOD_LM) .lm_sensors.o smbus.o

endif

else

# ALLINONE=0

lm78.o: lm78.c lm78.h main.h lmconfig.h lm_sensors.h compat.h smbus.h
	$(CC) $(CFLAGS) -c lm78.c

lm75.o: lm75.c lm75.h main.h smbus.h lmconfig.h lm78.h compat.h
	$(CC) $(CFLAGS) -c lm75.c

lmsysctl.o: lmsysctl.c lm_sensors.h main.h lm75.h lm78.h compat.h
	$(CC) $(CFLAGS) -c lmsysctl.c

main.o: main.c main.h lmconfig.h lmversion.h smbus.h compat.h
	$(CC) $(CFLAGS) -c main.c


ifeq ($(SMBUS_MODULE),1)

# ALLINONE=0, SMBUS_MODULE=1

$(MOD_LM): lm78.o lm75.o main.o lmsysctl.o
	$(LD) $(LDFLAGS) -o $(MOD_LM) lm78.o lm75.o main.o lmsysctl.o

else

# ALLINONE=0, SMBUS_MODULE=0

$(MOD_LM): lm78.o lm75.o main.o smbus.o lmsysctl.o
	$(LD) $(LDFLAGS) -o $(MOD_LM) lm78.o lm75.o main.o smbus.o lmsysctl.o

endif

endif

# ALWAYS

lmtest: lmtest.c lm78.h lmtest.h
	$(CC) -O -Wall lmtest.c -o lmtest

smbus.o: smbus.c smbus.h lmsmbus.h lmversion.h
	$(CC) $(CFLAGS) -c smbus.c

clean:
	$(RM) *.o $(MOD_LM) lmtest .lm_sensors.c .lm_sensors.o
	$(RM) lm_sensors-*

version:
	$(RM) lmversion.h
	echo '#define LM_DATE "'`date +'%Y%m%d'`\" > lmversion.h
	echo -n 'Version: '; \
	echo '#define LM_VERSION "'`read VER; echo $$VER`\" >> lmversion.h

package: version clean
	lmversion=`tail -1 lmversion.h|cut -f 2 -d \"`; \
	lmpackage=lm_sensors-$$lmversion; \
	ln -s . $$lmpackage;  \
	find $$lmpackage/ -type f | grep -v ^$$lmpackage/$$lmpackage$$ | \
                                    grep -v ^$$lmpackage/$$lmpackage.tar$$ | \
                                    grep -v ^$$lmpackage/$$ | \
                                    grep -v CVS | \
                                    grep -v ^$$lmpackage/.# | \
                                    tar rvf $$lmpackage.tar -T -; \
	gzip -9 $$lmpackage.tar ;\
	$(RM) $$lmpackage.tar $$lmpackage

