From 06a128b5ef88e3248b5cd524c90495183acb2671 Mon Sep 17 00:00:00 2001 From: Runxi Yu Date: Wed, 12 Mar 2025 08:58:09 +0800 Subject: [PATCH] Rename tmpl -> chtmplr and install the library --- .gitignore | 3 +++ Makefile | 50 +++++++++++++++++++++++++++++++++++++++++++------- tmpl.c => chtmplr.c | 2 +- tmpl.h => chtmplr.h | 0 diff --git a/.gitignore b/.gitignore index 2d4e44cdce8dfe6d05142302bb90fa8845e445e7..4fc97512a42a5c42e9e8234117fcb33b1935c2af 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,6 @@ /chtmpl /parse.c /parse.h *.o +*.a +*.so +*.so.* diff --git a/Makefile b/Makefile index 8d661aa6d09d145382b425eef9e7a9a8dfd5d2fe..ff19702c60658917173406103f3302b7ca1dd0b4 100644 --- a/Makefile +++ b/Makefile @@ -1,17 +1,24 @@ CC = cc YACC = yacc -CFLAGS = -Wall -Werror -O2 +CFLAGS = -Wall -Werror -O2 -fPIC YFLAGS = -d LDFLAGS = +VERSION = 1 +SONAME = libchtmplr.so.$(VERSION) + TARGET = chtmpl - -PREFIX ?= /usr/local +STATIC_LIB = libchtmplr.a +SHARED_LIB = libchtmplr.so.$(VERSION) +SHARED_LINK = libchtmplr.so SRCS = chtmpl.c parse.y OBJS = chtmpl.o parse.o -all: $(TARGET) +LIB_SRCS = chtmplr.c +LIB_OBJS = chtmplr.o + +all: $(TARGET) $(STATIC_LIB) $(SHARED_LIB) parse.c parse.h: parse.y $(YACC) $(YFLAGS) -o parse.c $< @@ -21,15 +28,44 @@ $(CC) $(CFLAGS) -c -o $@ $< parse.o: parse.c $(CC) $(CFLAGS) -c -o $@ $< + +chtmplr.o: chtmplr.c chtmplr.h + $(CC) $(CFLAGS) -c -o $@ $< + +$(STATIC_LIB): $(LIB_OBJS) + ar rcs $@ $< + +$(SHARED_LIB): $(LIB_OBJS) + $(CC) -shared -Wl,-soname,$(SONAME) -o $@ $< $(LDFLAGS) + ln -sf $(SHARED_LIB) $(SHARED_LINK) $(TARGET): $(OBJS) $(CC) $(LDFLAGS) -o $@ $(OBJS) clean: - rm -f $(TARGET) $(OBJS) parse.c parse.h *~ + rm -f $(TARGET) $(OBJS) parse.c parse.h $(LIB_OBJS) $(STATIC_LIB) $(SHARED_LIB) $(SHARED_LINK) *~ + +PREFIX ?= /usr/local +LIBDIR ?= $(PREFIX)/lib +INCLUDEDIR ?= $(PREFIX)/include + +install: install-bin install-lib -install: $(TARGET) +install-bin: $(TARGET) install -d $(DESTDIR)$(PREFIX)/bin install -m 755 $(TARGET) $(DESTDIR)$(PREFIX)/bin/ -.PHONY: all clean install +install-lib: $(STATIC_LIB) $(SHARED_LIB) + install -d $(DESTDIR)$(INCLUDEDIR) + install -m 644 chtmplr.h $(DESTDIR)$(INCLUDEDIR)/ + + install -d $(DESTDIR)$(LIBDIR) + install -m 644 $(STATIC_LIB) $(DESTDIR)$(LIBDIR)/ + + install -m 755 $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/ + ln -sf $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(SHARED_LINK) + ln -sf $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/$(SONAME) + + -if [ $$(id -u) -eq 0 ]; then ldconfig; fi + +.PHONY: all clean install install-bin install-lib diff --git a/tmpl.c b/chtmplr.c rename from tmpl.c rename to chtmplr.c index a462a35fdd53ed1e7997e205fd621e462ad511bc..f467e506cc2021d7e0e3ec37fd23b6ec334b8d1b 100644 --- a/tmpl.c +++ b/chtmplr.c @@ -20,7 +20,7 @@ #include #include #include -#include "tmpl.h" +#include "chtmplr.h" int tp_write(struct template *tp, const char *str, size_t len) diff --git a/tmpl.h b/chtmplr.h rename from tmpl.h rename to chtmplr.h -- 2.48.1