blob: 432a0518fc544cd737b3be3dd2e7cba85e6ec960 [file] [log] [blame]
# I2C library for Linux
#
# Copyright (C) 2012 Jean Delvare <jdelvare@suse.de>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published
# by the Free Software Foundation; either version 2.1 of the License, or
# (at your option) any later version.
LIB_DIR := lib
LIB_CFLAGS := -Wstrict-prototypes -Wshadow -Wpointer-arith -Wcast-qual \
-Wcast-align -Wwrite-strings -Wnested-externs -Winline \
-W -Wundef -Wmissing-prototypes -Iinclude
# The main and minor version of the library
# The library soname (major number) must be changed if and only if the
# interface is changed in a backward incompatible way. The interface is
# defined by the public header files - in this case they are only smbus.h.
LIB_MAINVER := 0
LIB_MINORVER := 1.0
LIB_VER := $(LIB_MAINVER).$(LIB_MINORVER)
# The shared and static library names
LIB_SHBASENAME := libi2c.so
LIB_SHSONAME := $(LIB_SHBASENAME).$(LIB_MAINVER)
LIB_SHLIBNAME := $(LIB_SHBASENAME).$(LIB_VER)
LIB_STLIBNAME := libi2c.a
LIB_TARGETS := $(LIB_SHLIBNAME)
LIB_LINKS := $(LIB_SHSONAME) $(LIB_SHBASENAME)
LIB_OBJECTS := smbus.o
ifeq ($(BUILD_STATIC_LIB),1)
LIB_TARGETS += $(LIB_STLIBNAME)
LIB_OBJECTS += smbus.ao
endif
#
# Libraries
#
$(LIB_DIR)/$(LIB_SHLIBNAME): $(LIB_DIR)/smbus.o
$(CC) -shared $(LDFLAGS) -Wl,--version-script=$(LIB_DIR)/libi2c.map -Wl,-soname,$(LIB_SHSONAME) -o $@ $^ -lc
$(LIB_DIR)/$(LIB_SHSONAME):
$(RM) $@
$(LN) $(LIB_SHLIBNAME) $@
$(LIB_DIR)/$(LIB_SHBASENAME):
$(RM) $@
$(LN) $(LIB_SHLIBNAME) $@
$(LIB_DIR)/$(LIB_STLIBNAME): $(LIB_DIR)/smbus.ao
$(RM) $@
$(AR) rcvs $@ $^
#
# Objects
# Each object must be built twice, once for the shared library and
# once again for the static library.
#
$(LIB_DIR)/smbus.o: $(LIB_DIR)/smbus.c $(INCLUDE_DIR)/i2c/smbus.h
$(CC) $(SOCFLAGS) $(LIB_CFLAGS) -c $< -o $@
$(LIB_DIR)/smbus.ao: $(LIB_DIR)/smbus.c $(INCLUDE_DIR)/i2c/smbus.h
$(CC) $(CFLAGS) $(LIB_CFLAGS) -c $< -o $@
#
# Commands
#
all-lib: $(addprefix $(LIB_DIR)/,$(LIB_TARGETS) $(LIB_LINKS))
strip-lib: $(addprefix $(LIB_DIR)/,$(LIB_TARGETS))
strip $(addprefix $(LIB_DIR)/,$(LIB_TARGETS))
clean-lib:
$(RM) $(addprefix $(LIB_DIR)/,*.o *.ao $(LIB_TARGETS) $(LIB_LINKS))
install-lib: $(addprefix $(LIB_DIR)/,$(LIB_TARGETS))
$(INSTALL_DIR) $(DESTDIR)$(libdir)
$(INSTALL_PROGRAM) $(LIB_DIR)/$(LIB_SHLIBNAME) $(DESTDIR)$(libdir)
$(LN) $(LIB_SHLIBNAME) $(DESTDIR)$(libdir)/$(LIB_SHSONAME)
$(LN) $(LIB_SHSONAME) $(DESTDIR)$(libdir)/$(LIB_SHBASENAME)
ifeq ($(BUILD_STATIC_LIB),1)
$(INSTALL_DATA) $(LIB_DIR)/$(LIB_STLIBNAME) $(DESTDIR)$(libdir)
endif
uninstall-lib:
for library in $(LIB_TARGETS) $(LIB_LINKS) ; do \
$(RM) $(DESTDIR)$(libdir)/$$library ; done
all: all-lib
strip: strip-lib
clean: clean-lib
install: install-lib
uninstall: uninstall-lib