1*134e1779SJakub Wojciech KlamaCC_VERSION := $(shell $(CC) --version | \ 2*134e1779SJakub Wojciech Klama sed -n -e '/clang-/s/.*clang-\([0-9][0-9]*\).*/\1/p') 3*134e1779SJakub Wojciech Klamaifeq ($(CC_VERSION),) 4*134e1779SJakub Wojciech Klama# probably not clang 5*134e1779SJakub Wojciech KlamaCC_VERSION := 0 6*134e1779SJakub Wojciech Klamaendif 7*134e1779SJakub Wojciech Klama 8*134e1779SJakub Wojciech KlamaWFLAGS := 9*134e1779SJakub Wojciech Klama 10*134e1779SJakub Wojciech Klama# Warnings are version-dependent, unfortunately, 11*134e1779SJakub Wojciech Klama# so test for version before adding a -W flag. 12*134e1779SJakub Wojciech Klama# Note: gnu make requires $(shell test ...) for "a > b" type tests. 13*134e1779SJakub Wojciech Klamaifeq ($(shell test $(CC_VERSION) -gt 0; echo $$?),0) 14*134e1779SJakub Wojciech KlamaWFLAGS += -Weverything 15*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-padded 16*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-gnu-zero-variadic-macro-arguments 17*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-format-nonliteral 18*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-unused-macros 19*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-disabled-macro-expansion 20*134e1779SJakub Wojciech KlamaWFLAGS += -Werror 21*134e1779SJakub Wojciech Klamaendif 22*134e1779SJakub Wojciech Klama 23*134e1779SJakub Wojciech Klamaifeq ($(shell test $(CC_VERSION) -gt 600; echo $$?),0) 24*134e1779SJakub Wojciech KlamaWFLAGS += -Wno-reserved-id-macro 25*134e1779SJakub Wojciech Klamaendif 26*134e1779SJakub Wojciech Klama 27*134e1779SJakub Wojciech KlamaCFLAGS := $(WFLAGS) \ 28*134e1779SJakub Wojciech Klama -g \ 29*134e1779SJakub Wojciech Klama -O0 \ 30*134e1779SJakub Wojciech Klama -DL9P_DEBUG=L9P_DEBUG 31*134e1779SJakub Wojciech Klama# Note: to turn on debug, use -DL9P_DEBUG=L9P_DEBUG, 32*134e1779SJakub Wojciech Klama# and set env variable LIB9P_LOGGING to stderr or to 33*134e1779SJakub Wojciech Klama# the (preferably full path name of) the debug log file. 34*134e1779SJakub Wojciech Klama 35*134e1779SJakub Wojciech KlamaLIB_SRCS := \ 36*134e1779SJakub Wojciech Klama pack.c \ 37*134e1779SJakub Wojciech Klama connection.c \ 38*134e1779SJakub Wojciech Klama request.c \ 39*134e1779SJakub Wojciech Klama genacl.c \ 40*134e1779SJakub Wojciech Klama log.c \ 41*134e1779SJakub Wojciech Klama hashtable.c \ 42*134e1779SJakub Wojciech Klama utils.c \ 43*134e1779SJakub Wojciech Klama rfuncs.c \ 44*134e1779SJakub Wojciech Klama threadpool.c \ 45*134e1779SJakub Wojciech Klama sbuf/sbuf.c \ 46*134e1779SJakub Wojciech Klama transport/socket.c \ 47*134e1779SJakub Wojciech Klama backend/fs.c 48*134e1779SJakub Wojciech Klama 49*134e1779SJakub Wojciech KlamaSERVER_SRCS := \ 50*134e1779SJakub Wojciech Klama example/server.c 51*134e1779SJakub Wojciech Klama 52*134e1779SJakub Wojciech KlamaBUILD_DIR := build 53*134e1779SJakub Wojciech KlamaLIB_OBJS := $(addprefix build/,$(LIB_SRCS:.c=.o)) 54*134e1779SJakub Wojciech KlamaSERVER_OBJS := $(SERVER_SRCS:.c=.o) 55*134e1779SJakub Wojciech KlamaLIB := lib9p.dylib 56*134e1779SJakub Wojciech KlamaSERVER := server 57*134e1779SJakub Wojciech Klama 58*134e1779SJakub Wojciech Klamaall: build $(LIB) $(SERVER) 59*134e1779SJakub Wojciech Klama 60*134e1779SJakub Wojciech Klama$(LIB): $(LIB_OBJS) 61*134e1779SJakub Wojciech Klama cc -dynamiclib $^ -o build/$@ 62*134e1779SJakub Wojciech Klama 63*134e1779SJakub Wojciech Klama$(SERVER): $(SERVER_OBJS) $(LIB) 64*134e1779SJakub Wojciech Klama cc $< -o build/$(SERVER) -Lbuild/ -l9p 65*134e1779SJakub Wojciech Klama 66*134e1779SJakub Wojciech Klamaclean: 67*134e1779SJakub Wojciech Klama rm -rf build 68*134e1779SJakub Wojciech Klama rm -f $(SERVER_OBJS) 69*134e1779SJakub Wojciech Klamabuild: 70*134e1779SJakub Wojciech Klama mkdir build 71*134e1779SJakub Wojciech Klama mkdir build/sbuf 72*134e1779SJakub Wojciech Klama mkdir build/transport 73*134e1779SJakub Wojciech Klama mkdir build/backend 74*134e1779SJakub Wojciech Klama 75*134e1779SJakub Wojciech Klamabuild/%.o: %.c 76*134e1779SJakub Wojciech Klama $(CC) $(CFLAGS) -c $< -o $@ 77