Makefile
author Tero Marttila <terom@fixme.fi>
Sun, 22 Feb 2009 02:00:34 +0200
changeset 0 317e5bc59627
child 1 cf0e1bb6bcab
permissions -rw-r--r--
initial code...
0
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
#LIBEVENT_PATH = ~/opt
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
#LIBRARY_PATHS = -L${LIBEVENT_PATH}/lib
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
#INCLUDE_PATHS = -I${LIBEVENT_PATH}/include
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
LDLIBS = -levent
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
# default is test
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
ifndef MODE
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
MODE = test
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
endif
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
ifeq ($(MODE), debug)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
MODE_CFLAGS = -g -DDEBUG_ENABLED
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
else ifeq ($(MODE), dev)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
MODE_CFLAGS = -g
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
else ifeq ($(MODE), test)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
MODE_CFLAGS = -g -DINFO_DISABLED
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
else ifeq ($(MODE), release)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
MODE_CFLAGS = -DINFO_DISABLED -O2
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
endif
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
FIXED_CFLAGS = -Wall -std=gnu99
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
BIN_NAMES = nexus
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
BIN_PATHS = $(addprefix bin/,$(BIN_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
# modules
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
module_objs = $(patsubst src/%.c,obj/%.o,$(wildcard src/$(1)/*.c))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
# XXX: not yet there
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
#CORE_OBJS = obj/lib/log.o obj/lib/signals.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
# first target
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
all: ${BIN_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
# binaries
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
bin/nexus: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
# computed
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
LDFLAGS = ${LIBRARY_PATHS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
CPPFLAGS = ${INCLUDE_PATHS} ${DEFINES}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
CFLAGS = ${MODE_CFLAGS} ${FIXED_CFLAGS}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
SRC_PATHS = $(wildcard src/*.c) $(wildcard src/*/*.c)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
SRC_NAMES = $(patsubst src/%,%,$(SRC_PATHS))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
SRC_DIRS = $(dir $(SRC_NAMES))
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
# other targets
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
clean :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
	-rm obj/*.o obj/*/*.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
	-rm bin/* 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
	-rm build/deps/*.d build/deps/*/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
clean-deps:
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
	-rm build/deps/*/*.d 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
	-rm build/deps/*.d
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
#obj-dirs: 
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
#	python build/make_obj_dirs.py $(BIN_PATHS)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
build/deps/%.d : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
	@set -e; rm -f $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
	 $(CC) -MM -MT __ $(CPPFLAGS) $< > $@.$$$$; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
	 sed 's,__[ :]*,obj/$*.o $@ : ,g' < $@.$$$$ > $@; \
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
	 rm -f $@.$$$$
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
include $(SRC_NAMES:%.c=build/deps/%.d)
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
obj/%.o : src/%.c
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
	$(CC) -c $(CPPFLAGS) $(CFLAGS) $< -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
bin/% : obj/%.o
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
	$(CC) $(LDFLAGS) $+ $(LOADLIBES) $(LDLIBS) -o $@
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
# documentation
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
DOXYGEN_PATH = /usr/bin/doxygen
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
DOXYGEN_CONF_PATH = doc/doxygen.conf
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
DOXYGEN_OUTPUT_FILE = doc/html/index.html
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
docs :
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
	${DOXYGEN_PATH} ${DOXYGEN_CONF_PATH}
317e5bc59627 initial code...
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81