1examples=\ 2 helloworld\ 3 default-loop\ 4 idle-basic\ 5 uvcat\ 6 uvtee\ 7 onchange\ 8 thread-create\ 9 queue-work\ 10 progress\ 11 tcp-echo-server\ 12 dns\ 13 udp-dhcp\ 14 idle-compute\ 15 ref-timer\ 16 spawn\ 17 detach\ 18 proc-streams\ 19 cgi\ 20 pipe-echo-server\ 21 multi-echo-server\ 22 tty\ 23 tty-gravity\ 24 interfaces\ 25 locks \ 26 signal \ 27 uvstop \ 28 queue-cancel 29 30UV_PATH=$(shell pwd)/../.. 31UV_LIB=$(UV_PATH)/.libs/libuv.a 32CFLAGS=-g -Wall -I$(UV_PATH)/include 33LIBS= 34 35uname_S=$(shell uname -s) 36 37ifeq (Darwin, $(uname_S)) 38CFLAGS+=-framework CoreServices 39SHARED_LIB_FLAGS=-bundle -undefined dynamic_lookup -o plugin/libhello.dylib 40endif 41 42ifeq (Linux, $(uname_S)) 43LIBS=-lrt -ldl -lm -pthread -lcurl 44SHARED_LIB_FLAGS=-shared -Wl,-soname,libhello.so -o plugin/libhello.so 45PLUGIN_EXE_FLAGS=-Wl,-export-dynamic 46endif 47 48 49all: $(examples) plugin/plugin proc-streams/test cgi/tick multi-echo-server/worker uvwget/uvwget 50 51$(examples): % : %/main.c 52 gcc $(CFLAGS) -o $@/$@ $< $(UV_LIB) $(LIBS) 53 54plugin: plugin/plugin 55plugin/plugin: plugin/*.c 56 gcc $(CFLAGS) $(PLUGIN_EXE_FLAGS) -o plugin/plugin plugin/main.c $(UV_LIB) $(LIBS) 57 gcc -g -Wall -c -fPIC -o plugin/hello.o plugin/hello.c 58 gcc $(SHARED_LIB_FLAGS) plugin/hello.o 59 60proc-streams/test: proc-streams/test.c 61 gcc -g -Wall -o proc-streams/test proc-streams/test.c 62 63cgi/tick: cgi/tick.c 64 gcc -g -Wall -o cgi/tick cgi/tick.c 65 66multi-echo-server/worker: multi-echo-server/worker.c 67 gcc $(CFLAGS) -o multi-echo-server/worker multi-echo-server/worker.c $(UV_LIB) $(LIBS) 68 69uvwget: uvwget/uvwget 70uvwget/uvwget: uvwget/main.c 71 gcc $(CFLAGS) `curl-config --cflags --libs` -o uvwget/uvwget uvwget/main.c $(UV_LIB) $(LIBS) 72 73clean: 74 for dir in $(examples); do cd $$dir; rm -f $$dir; rm -rf $$dir.dSYM; cd ..; done 75 rm -rf plugin/*.o plugin/libhello.* 76 rm -rf plugin/plugin plugin/plugin.dSYM 77 rm -rf proc-streams/test proc-streams/test.dSYM 78 rm -rf cgi/tick cgi/tick.dSYM 79 rm -rf multi-echo-server/worker multi-echo-server/worker.dSYM 80 rm -rf uvwget/uvwget uvwget/uvwget.dSYM 81 82.PHONY: clean all $(examples) plugin uvwget 83