diff --git a/.gitignore b/.gitignore index fe83777..edc1dd3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ haggis config.mk +*.o +*.a +*.so diff --git a/Makefile b/Makefile index e2a5e9f..13bf935 100644 --- a/Makefile +++ b/Makefile @@ -32,18 +32,53 @@ -include config.mk -progname = haggis; -srcs += src/haggis.c -hdrs += include/haggis.h +PREFIX ?= /usr/local +includedir = $(DESTDIR)$(PREFIX)/include +libdir = $(DESTDIR)$(PREFIX)/lib -cflags += -Iinclude +srcs += src/haggis.c +hdrs += include/haggis.h -all: haggis +cflags += -Wall -Werror +cflags += -Iinclude -haggis: $(srcs) $(hdrs) - $(CC) $(cflags) -o $@ $< +all: libhaggis.a libhaggis.so + +static: libhaggis.a + +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: - 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 diff --git a/src/haggis.c b/src/haggis.c index 99a4ce3..8593dc6 100644 --- a/src/haggis.c +++ b/src/haggis.c @@ -153,4 +153,3 @@ int haggis_load_node(FILE *stream, struct haggis_node *node) { return 0; } -int main() { printf("Hello, Haggis!\n"); }