aboutsummaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
authorOskari Timperi <oskari.timperi@iki.fi>2014-05-26 10:28:48 +0300
committerOskari Timperi <oskari.timperi@iki.fi>2014-05-26 10:28:48 +0300
commitc03f706b9c522b2d82ff3919bb1e9f275370a013 (patch)
treec0b20b051f28f2182b2c293c2e3c683e7e4ea0b7 /Makefile
parent992ae64c435e7126ecf02d8b8de803036eace2e3 (diff)
downloadlibuvh-c03f706b9c522b2d82ff3919bb1e9f275370a013.tar.gz
libuvh-c03f706b9c522b2d82ff3919bb1e9f275370a013.zip
add support for building both static and shared lib
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile30
1 files changed, 28 insertions, 2 deletions
diff --git a/Makefile b/Makefile
index 322c4a5..a43c585 100644
--- a/Makefile
+++ b/Makefile
@@ -7,21 +7,46 @@ LDFLAGS +=
CPPFLAGS += -Isrc
LDLIBS += -luv
+SH_LDFLAGS = $(LDFLAGS) -shared
+SH_CFLAGS = $(CFLAGS) -DBUILDING_UVH_SHARED
+
PLATFORM = $(shell uname -s | tr [A-Z] [a-z])
ifeq ($(findstring mingw32,$(PLATFORM)),mingw32)
LDLIBS += -lws2_32 -lpsapi -liphlpapi
+SHAREDNAME = libuvh.dll
else
+SHAREDNAME = libuvh.so
endif
-all: libuvh.a examples
+SOURCES = uvh.c http_parser.c sds.c
+STATIC_OBJS = $(addprefix src/static_,$(SOURCES:.c=.o))
+SHARED_OBJS = $(addprefix src/shared_,$(SOURCES:.c=.o))
+
+.PHONY: all
+all: static shared examples
+
+.PHONY: static
+static: libuvh.a
+
+.PHONY: shared
+shared: $(SHAREDNAME)
.PHONY: examples
examples: hello chunked fileserver
-libuvh.a: src/uvh.o src/http_parser.o src/sds.o
+src/static_%.o: src/%.c
+ $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+src/shared_%.o: src/%.c
+ $(CC) $(SH_CFLAGS) $(CPPFLAGS) -c -o $@ $<
+
+libuvh.a: $(STATIC_OBJS)
$(AR) rcs $@ $^
+$(SHAREDNAME): $(SHARED_OBJS)
+ $(LD) $(SH_LDFLAGS) -o $@ $^ $(LDLIBS)
+
hello: examples/hello.o libuvh.a
$(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
@@ -39,3 +64,4 @@ clean:
rm -f hello
rm -f chunked
rm -f fileserver
+ rm -f $(SHAREDNAME)