From 11f2f2e329ef404d0e9c022cb2f9fbbb45bae285 Mon Sep 17 00:00:00 2001
From: nancy.liao <huihui.liao@greentest.com.cn>
Date: 周日, 27 4月 2025 17:33:31 +0800
Subject: [PATCH] 完成了SCPI命令语法分析器的完整规则

---
 libscpi/Makefile |   50 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 39 insertions(+), 11 deletions(-)

diff --git a/libscpi/Makefile b/libscpi/Makefile
index 58719cb..9a0b5ee 100644
--- a/libscpi/Makefile
+++ b/libscpi/Makefile
@@ -1,19 +1,30 @@
+VERSION = 2.1.0
 LIBNAME = scpi
 
-CFLAGS += -Wextra -Wmissing-prototypes -Wimplicit -g -Iinc
-LDFLAGS += -Wl,--as-needed
+CFLAGS += -Wextra -Wmissing-prototypes -Wimplicit -Iinc
+CFLAGS_SHARED += $(CFLAGS) -fPIC
+LDFLAGS += -lm -Wl,--as-needed
 #TESTCFLAGS += $(CFLAGS) `pkg-config --cflags cunit`
 #TESTLDFLAGS += $(LDFLAGS) `pkg-config --libs cunit`
 TESTCFLAGS += $(CFLAGS)
 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): $(OBJS_STATIC) | $(DISTDIR)
+	$(AR) $(STATICLIBFLAGS) $(DISTDIR)/$(STATICLIB) $(OBJS_STATIC)
 
-$(OBJS): $(HDRS) $(DISTDIR) $(OBJDIR) $(SRCS)
-
+$(DISTDIR)/$(SHAREDLIBVER): $(OBJS_SHARED) | $(DISTDIR)
+	$(CC) $(SHAREDLIBFLAGS) -o $(DISTDIR)/$(SHAREDLIBVER) $(OBJS_SHARED)
 
 $(TESTDIR)/%.o: $(TESTDIR)/%.c
 	$(CC) -c $(TESTCFLAGS) $(CPPFLAGS) -o $@ $<

--
Gitblit v1.9.1