Makefile
changeset 11 a4e382d4a22a
parent 7 3a603d755bcb
child 15 a8d183e79ed9
equal deleted inserted replaced
10:e74c23297b11 11:a4e382d4a22a
     1 LIBEVENT_PATH = ../libs/libevent-dev
     1 LIBEVENT_PATH = ../libs/libevent-dev
     2 LIBFUSE_PATH = ../libs/libfuse-2.7.4
     2 LIBFUSE_PATH = ../libs/libfuse-2.7.4
     3 
     3 
     4 LIBRARY_PATHS = -L${LIBEVENT_PATH}/lib -L${LIBFUSE_PATH}/lib
     4 LIBRARY_PATHS = -L${LIBEVENT_PATH}/lib -L${LIBFUSE_PATH}/lib
     5 INCLUDE_PATHS = -I${LIBEVENT_PATH}/include -I${LIBFUSE_PATH}/include
     5 INCLUDE_PATHS = -I${LIBEVENT_PATH}/include -I${LIBFUSE_PATH}/include
     6 LDLIBS = -levent -lfuse
     6 LDLIBS = -levent -lfuse -lpq
     7 
     7 
     8 # XXX: ugh... use `pkg-config fuse`
     8 # XXX: ugh... use `pkg-config fuse`
     9 DEFINES = -D_FILE_OFFSET_BITS=64
     9 DEFINES = -D_FILE_OFFSET_BITS=64
    10 MY_CFLAGS = -Wall -g -std=gnu99
    10 MY_CFLAGS = -Wall -g -std=gnu99
    11 
    11 
    12 BIN_NAMES = hello helloworld
    12 BIN_NAMES = hello helloworld
    13 
    13 
       
    14 # first target
       
    15 all: ${BIN_PATHS}
       
    16 
       
    17 # binaries
    14 bin/helloworld: 
    18 bin/helloworld: 
    15 bin/hello: obj/evfuse.o obj/dirbuf.o obj/lib/log.o obj/lib/signals.o
    19 bin/hello: obj/evfuse.o obj/dirbuf.o obj/lib/log.o obj/lib/signals.o
    16 bin/simple_hello: obj/evfuse.o obj/dirbuf.o obj/lib/log.o obj/lib/signals.o obj/simple.o
    20 bin/simple_hello: obj/evfuse.o obj/dirbuf.o obj/lib/log.o obj/lib/signals.o obj/simple.o
       
    21 bin/evpq_test: obj/evpq.o obj/lib/log.o
    17 
    22 
    18 # computed
    23 # computed
    19 LDFLAGS = ${LIBRARY_PATHS} ${LIBRARY_LIST}
    24 LDFLAGS = ${LIBRARY_PATHS} ${LIBRARY_LIST}
    20 CFLAGS = ${INCLUDE_PATHS} ${DEFINES} ${MY_CFLAGS}
    25 CFLAGSX = ${DEFINES} ${MY_CFLAGS}
       
    26 CFLAGS = ${INCLUDE_PATHS} ${CFLAGSX}
    21 
    27 
    22 SRC_PATHS = $(wildcard src/*.c)
    28 SRC_PATHS = $(wildcard src/*.c)
    23 SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
    29 SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
    24 SRC_DIRS = $(dir $(SRC_NAMES))
    30 SRC_DIRS = $(dir $(SRC_NAMES))
    25 
    31 
    26 BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
    32 BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
    27 
    33 
    28 # targets
    34 # other targets
    29 all: depend ${BIN_PATHS}
       
    30 
       
    31 clean :
    35 clean :
    32 	-rm obj/* bin/*
    36 	-rm obj/* bin/*
    33 
    37 
    34 depend:
    38 #obj-dirs: 
    35 	cd src
    39 #	python build/make_obj_dirs.py $(BIN_PATHS)
    36 	makedepend -p../obj/ -Y -- $(CFLAGS) -- $(SRC_NAMES) 2> /dev/null
       
    37 	cd ..
       
    38 
    40 
    39 obj-dirs: 
    41 build/deps/%.d : src/%.c
    40 	python build/make_obj_dirs.py $(BIN_PATHS)
    42 	@set -e; rm -f $@; \
       
    43 	 $(CC) -MM $(CPPFLAGS) $< > $@.$$$$; \
       
    44 	 sed 's,\($*\)\.o[ :]*,obj/\1.o $@ : ,g' < $@.$$$$ > $@; \
       
    45 	 rm -f $@.$$$$
       
    46 
       
    47 include $(SRC_NAMES:%.c=build/deps/%.d)
    41 
    48 
    42 obj/%.o : src/%.c
    49 obj/%.o : src/%.c
    43 	$(CC) -c $(CPPFLAGS) $(CFLAGS) $^ -o $@
    50 	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
    44 
    51 
    45 bin/% : obj/%.o
    52 bin/% : obj/%.o
    46 	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
    53 	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
    47 
    54 
    48 # DO NOT DELETE THIS LINE -- make depend depends on it.