From 919679967804f48ce8ff15cf4b172e28071a367a Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: ćšć, 01 10æ 2015 17:03:03 +0800 Subject: [PATCH] Add building of shared library --- libscpi/Makefile | 46 +++++++++++++++++++++++++++++++++++++--------- Makefile | 7 +++++-- 2 files changed, 42 insertions(+), 11 deletions(-) diff --git a/Makefile b/Makefile index 9b011c7..9acd839 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -.PHONY: clean all test +.PHONY: clean all test install all: $(MAKE) -C libscpi @@ -9,4 +9,7 @@ $(MAKE) clean -C examples test: - $(MAKE) test -C libscpi \ No newline at end of file + $(MAKE) test -C libscpi + +install: + $(MAKE) install -C libscpi \ No newline at end of file diff --git a/libscpi/Makefile b/libscpi/Makefile index 58719cb..33c3737 100644 --- a/libscpi/Makefile +++ b/libscpi/Makefile @@ -1,6 +1,8 @@ +VERSION = 2.1.0 LIBNAME = scpi CFLAGS += -Wextra -Wmissing-prototypes -Wimplicit -g -Iinc +CFLAGS_SHARED += $(CFLAGS) -fPIC LDFLAGS += -Wl,--as-needed #TESTCFLAGS += $(CFLAGS) `pkg-config --cflags cunit` #TESTLDFLAGS += $(LDFLAGS) `pkg-config --libs cunit` @@ -8,12 +10,21 @@ TESTLDFLAGS += $(LDFLAGS) -lcunit OBJDIR=obj +OBJDIR_STATIC=$(OBJDIR)/static +OBJDIR_SHARED=$(OBJDIR)/shared DISTDIR=dist TESTDIR=test +PREFIX := $(DESTDIR)/usr/local +LIBDIR := $(PREFIX)/lib +INCDIR := $(PREFIX)/include + STATICLIBFLAGS = rcs +SHAREDLIBFLAGS = $(LDFLAGS) -shared -Wl,-soname,$(SHAREDLIB) STATICLIB = lib$(LIBNAME).a +SHAREDLIB = lib$(LIBNAME).so +SHAREDLIBVER = $(SHAREDLIB).$(VERSION) SRCS = $(addprefix src/, \ error.c fifo.c ieee488.c \ @@ -21,7 +32,8 @@ lexer.c expression.c \ ) -OBJS = $(addprefix $(OBJDIR)/, $(notdir $(SRCS:.c=.o))) +OBJS_STATIC = $(addprefix $(OBJDIR_STATIC)/, $(notdir $(SRCS:.c=.o))) +OBJS_SHARED = $(addprefix $(OBJDIR_SHARED)/, $(notdir $(SRCS:.c=.o))) HDRS = $(addprefix inc/scpi/, \ scpi.h constants.h error.h \ @@ -41,11 +53,13 @@ TESTS_OBJS = $(TESTS:.c=.o) TESTS_BINS = $(TESTS_OBJS:.o=.test) -.PHONY: all clean static test +.PHONY: all clean static shared test install -all: static +all: static shared static: $(DISTDIR)/$(STATICLIB) + +shared: $(DISTDIR)/$(SHAREDLIBVER) clean: $(RM) -r $(OBJDIR) $(DISTDIR) $(TESTS_BINS) $(TESTS_OBJS) @@ -53,21 +67,35 @@ test: $(TESTS_BINS) $(TESTS_BINS:.test=.test &&) true -$(OBJDIR): +install: $(DISTDIR)/$(STATICLIB) $(DISTDIR)/$(SHAREDLIBVER) + test -d $(PREFIX) || mkdir $(PREFIX) + test -d $(LIBDIR) || mkdir $(LIBDIR) + test -d $(INCDIR) || mkdir $(INCDIR) + test -d $(INCDIR)/scpi || mkdir $(INCDIR)/scpi + install -m 0644 $(DISTDIR)/$(STATICLIB) $(LIBDIR) + install -m 0644 $(DISTDIR)/$(SHAREDLIBVER) $(LIBDIR) + install -m 0644 inc/scpi/*.h $(INCDIR)/scpi + +$(OBJDIR_STATIC): + mkdir -p $@ + +$(OBJDIR_SHARED): mkdir -p $@ $(DISTDIR): mkdir -p $@ -$(OBJDIR)/%.o: src/%.c +$(OBJDIR_STATIC)/%.o: src/%.c $(HDRS) $(OBJDIR_STATIC) $(CC) -c $(CFLAGS) $(CPPFLAGS) -o $@ $< -$(DISTDIR)/$(STATICLIB): $(OBJS) - $(AR) $(STATICLIBFLAGS) $(DISTDIR)/$(STATICLIB) $(OBJS) +$(OBJDIR_SHARED)/%.o: src/%.c $(HDRS) $(OBJDIR_SHARED) + $(CC) -c $(CFLAGS_SHARED) $(CPPFLAGS) -o $@ $< +$(DISTDIR)/$(STATICLIB): $(DISTDIR) $(OBJS_STATIC) + $(AR) $(STATICLIBFLAGS) $(DISTDIR)/$(STATICLIB) $(OBJS_STATIC) -$(OBJS): $(HDRS) $(DISTDIR) $(OBJDIR) $(SRCS) - +$(DISTDIR)/$(SHAREDLIBVER): $(DISTDIR) $(OBJS_SHARED) + $(CC) $(SHAREDLIBFLAGS) -o $(DISTDIR)/$(SHAREDLIBVER) $(OBJS_SHARED) $(TESTDIR)/%.o: $(TESTDIR)/%.c $(CC) -c $(TESTCFLAGS) $(CPPFLAGS) -o $@ $< -- Gitblit v1.9.1