| # 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 |