diff --git a/Makefile b/Makefile index a3582d07..166f664b 100644 --- a/Makefile +++ b/Makefile @@ -95,7 +95,7 @@ LIBINCLUDEDIR := $(INCLUDEDIR)/sensors # to do this. # The subdirectories we need to build things in -SRCDIRS := src +SRCDIRS := src lib ifeq ($(I2C),1) SRCDIRS += i2c i2c/detect i2c/drivers i2c/eeprom endif @@ -104,13 +104,16 @@ endif MKDIR := mkdir -p RM := rm -f CC := gcc +BISON := bison +FLEX := flex +AR := ar # Determine the default compiler flags # MODCFLAGS is to create in-kernel object files (modules); PROGFLAGS is to # create non-kernel object files (which are linked into executables). # ARCFLAGS are used to create archive object files (static libraries), and # LIBCFLAGS are for shared library objects. -CFLAGS := -I. -Ii2c -O2 -D LM_SENSORS +CFLAGS := -I. -Ii2c -O2 -DLM_SENSORS ifeq ($(DEBUG),1) CFLAGS += -DDEBUG @@ -208,6 +211,9 @@ version: sed -e 's@^\(.*\)\.o:@$*.rd $*.ro Makefile '`dirname $*.rd`/Module.mk':@' > $@ +%: %.ro + $(CC) $(EXLDFLAGS) -o $@ $^ + # .ao files are used for static archives %.ao: %.c @@ -226,9 +232,6 @@ version: $(CC) -M -MG $(LIBCFLAGS) $< | \ sed -e 's@^\(.*\)\.o:@$*.ld $*.lo Makefile '`dirname $*.ld`/Module.mk':@' > $@ -%: %.ro - $(CC) $(EXLDFLAGS) -o $@ $^ - # Flex and Bison %c: %y diff --git a/README.directories b/README.directories index 0654fad0..a03648b9 100644 --- a/README.directories +++ b/README.directories @@ -11,4 +11,8 @@ The directories within this package: Simon Vogl's i2c module, including any necessary patches, excluding any files which are removed by 'make clean'. * src - Our own code. + Our own module code. +* lib + The user-space sensors support library code +* prog + Several supporting programs, some of them use the library, some do not. diff --git a/kernel/Module.mk b/kernel/Module.mk index 9340178d..3f573f0e 100644 --- a/kernel/Module.mk +++ b/kernel/Module.mk @@ -26,7 +26,7 @@ SRCTARGETS := $(MODULE_DIR)/smbus.o $(MODULE_DIR)/piix4.o $(MODULE_DIR)/isa.o \ $(MODULE_DIR)/lm78.o $(MODULE_DIR)/sensors.o \ $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/lm75.o \ $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/gl518sm.o \ - $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o + $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o SRCHEADERFILES := $(MODULE_DIR)/sensors.h $(MODULE_DIR)/isa.h \ $(MODULE_DIR)/smbus.h diff --git a/lib/Module.mk b/lib/Module.mk new file mode 100644 index 00000000..adefb5bb --- /dev/null +++ b/lib/Module.mk @@ -0,0 +1,66 @@ +# Module.mk - Makefile for a Linux module for reading sensor data. +# Copyright (c) 1998 Frodo Looijaard +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +# Note that MODULE_DIR (the directory in which this file resides) is a +# 'simply expanded variable'. That means that its value is substituted +# verbatim in the rules, until it is redefined. +MODULE_DIR := lib + +# The main and minor version of the library +LIBMAINVER := 0 +LIBMINORVER := 0.0 +LIBVER := $(LIBMAINVER).$(LIBMINORVER) + +# The static lib name, the shared lib name, and the internal ('so') name of +# the shared lib. +LIBSHLIBNAME := libsensors.so.$(LIBVER) +LIBSTLIBNAME := libsensors.a +LIBSHSONAME := libsensors.so.$(LIBMAINVER) + +LIBTARGETS := $(MODULE_DIR)/$(LIBSTLIBNAME) $(MODULE_DIR)/$(LIBSHLIBNAME) + +LIBCSOURCES := +LIBSHOBJECTS := $(LIBCSOURCES:.c=.lo) +LIBSTOBJECTS := $(LIBCSOURCES:.c=.ao) + +LIBHEADERFILES := + +# How to create the shared library +$(MODULE_DIR)/$(LIBSHLIBNAME): $(LIBSHOBJECTS) + $(CC) -shared -Wl,-soname,$(LIBSONAME) -o $@ $< -lc + +# And the static library +$(MODULE_DIR)/$(LIBSTLIBNAME): $(LIBSTOBJECTS) + $(RM) $@ + $(AR) rcvs $@ $^ + +# Include all dependency files +INCLUDEFILES += $(LIBCSOURCES:.c=.ld) $(LIBCSOURCES:.c=.ad) + +all-lib: $(LIBTARGETS) +all :: all-lib + +install-lib: + $(MKDIR) $(LIBDIR) $(LIBINCLUDEDIR) + install -o root -g root -m 644 $(LIBTARGETS) $(LIBDIR) + install -o root -g root -m 644 $(LIBHEADERFILES) $(LIBINCLUDEDIR) +install :: install-lib + +clean-lib: + $(RM) $(LIBTARGETS) $(LIBSHOBJECTS) $(LIBSTOBJECTS) + $(RM) $(LIBSHOBJECTS:.lo=.ld) $(LIBSTOBJECTS:.ao=.ad) +clean :: clean-lib diff --git a/src/Module.mk b/src/Module.mk index 9340178d..3f573f0e 100644 --- a/src/Module.mk +++ b/src/Module.mk @@ -26,7 +26,7 @@ SRCTARGETS := $(MODULE_DIR)/smbus.o $(MODULE_DIR)/piix4.o $(MODULE_DIR)/isa.o \ $(MODULE_DIR)/lm78.o $(MODULE_DIR)/sensors.o \ $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/lm75.o \ $(MODULE_DIR)/i2c-proc.o $(MODULE_DIR)/gl518sm.o \ - $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o + $(MODULE_DIR)/eeprom.o $(MODULE_DIR)/w83781d.o SRCHEADERFILES := $(MODULE_DIR)/sensors.h $(MODULE_DIR)/isa.h \ $(MODULE_DIR)/smbus.h