Expanded Makefile to build and install shared and static libs

This commit is contained in:
Nathan Fisher 2023-07-20 09:33:40 -04:00
parent 8b1dbe6064
commit 9d3d12eea7
3 changed files with 47 additions and 10 deletions

3
.gitignore vendored
View file

@ -1,2 +1,5 @@
haggis haggis
config.mk config.mk
*.o
*.a
*.so

View file

@ -32,18 +32,53 @@
-include config.mk -include config.mk
progname = haggis; PREFIX ?= /usr/local
includedir = $(DESTDIR)$(PREFIX)/include
libdir = $(DESTDIR)$(PREFIX)/lib
srcs += src/haggis.c srcs += src/haggis.c
hdrs += include/haggis.h hdrs += include/haggis.h
cflags += -Wall -Werror
cflags += -Iinclude cflags += -Iinclude
all: haggis all: libhaggis.a libhaggis.so
haggis: $(srcs) $(hdrs) static: libhaggis.a
$(CC) $(cflags) -o $@ $<
shared: libhaggis.so
install: install-headers install-shared install-static
install-includedir:
[ -d $(includedir) ] || install -d $(includedir)
install-libdir:
[ -d $(libdir) ] || install -d $(libdir)
install-shared: libhaggis.so install-libdir
install -m755 libhaggis.so $(libdir)/
install-static: libhaggis.a install-libdir
install -m644 libhaggis.a $(libdir)/
install-headers: $(hdrs) install-includedir
install -m644 $(hdrs) $(includedir)/
haggis.o: $(srcs) $(hdrs)
$(CC) -c $(cflags) $(srcs)
libhaggis.a: haggis.o
$(AR) rcs $@ haggis.o
haggis_shared.o: $(srcs) $(hdrs)
$(CC) -c $(cflags) -fpic -o $@ $(srcs)
libhaggis.so: haggis_shared.o
$(CC) -shared -o $@ haggis_shared.o
clean: clean:
rm -rf $(progname) rm -rf *.a *.so *.o
.PHONY: all clean .PHONY: all clean shared static install install-includedir install-libdir \
install-headers install-shared install-static

View file

@ -153,4 +153,3 @@ int haggis_load_node(FILE *stream, struct haggis_node *node) {
return 0; return 0;
} }
int main() { printf("Hello, Haggis!\n"); }