Make the MySQL example code snippet compile.
[TD_BDD.git] / TD5 / C / Makefile
CommitLineData
44ac5003
JB
1# Sample Makefile to build simple project.
2#
3# This Makefile expect all source files (.c) to be at the same level, in the
4# current working directory.
5#
6# It will automatically generate dependencies, compile all files, and produce a
7# binary using the provided name.
8#
9# Set BINARY_NAME to the name of the binary file to build.
10# Set BUILD_TYPE to either debug or release
11#
12# Automatic dependencies code from:
13# http://make.mad-scientist.net/papers/advanced-auto-dependency-generation/#tldr
14BINARY_NAME=infovols
15BUILD_TYPE=debug
16#BUILD_TYPE=release
3dc7dfe6
JB
17LDLIBS=-lmysqlclient
18INCLUDES=-I/usr/include/mysql
44ac5003
JB
19
20# ====================================
21# DO NOT CHANGE STUFF BEYOND THIS LINE
22# ====================================
23
24all: $(BINARY_NAME)
25
26CC=gcc
27LD=gcc
28
29WARN_FLAGS = -Wall -Wextra
30STD_FLAG = -std=c11
31
32ifeq ($(BUILD_TYPE),debug)
33BUILDDIR := .build/debug
34DEBUG_FLAG = -g
35DEBUG = 1
36STRIP_FLAG =
37OPTI_FLAG = -O0
38else
39BUILDDIR := .build/release
40DEBUG_FLAG =
41DEBUG = 0
42STRIP_FLAG = -s
43OPTI_FLAG = -O3
44endif
45
3dc7dfe6 46CFLAGS := -DDEBUG=$(DEBUG) $(INCLUDES) $(CFLAGS) $(WARN_FLAGS) $(STD_FLAG) $(OPTI_FLAG) $(DEBUG_FLAG)
44ac5003
JB
47LDFLAGS := $(LDFLAGS) $(STRIP_FLAG)
48
49OBJDIR := $(BUILDDIR)/objs
50$(shell mkdir -p $(OBJDIR))
51
52SRCS=$(wildcard *.c)
53OBJS=$(patsubst %.c,$(OBJDIR)/%.o,$(SRCS))
54
55DEPDIR := $(BUILDDIR)/deps
56$(shell mkdir -p $(DEPDIR))
57DEPFLAGS = -MT $@ -MMD -MP -MF $(DEPDIR)/$*.Td
58POSTCOMPILE = mv -f $(DEPDIR)/$*.Td $(DEPDIR)/$*.d
59
60$(BINARY_NAME): $(OBJS)
61 @echo "[LD ] $@"
62 @$(LD) $(CFLAGS) $(LDFLAGS) $^ $(LDLIBS) -o $@
63
64$(OBJDIR)/%.o: %.c $(DEPDIR)/%.d
65 @echo "[C ] $*"
66 @$(CC) $(DEPFLAGS) $(CFLAGS) -c $< -o $@
67 @$(POSTCOMPILE)
68
69$(DEPDIR)/%.d: ;
70
71.PRECIOUS: $(DEPDIR)/%.d
72
73include $(wildcard $(patsubst %,$(DEPDIR)/%.d,$(basename $(SRCS))))
74
75clean:
76 @echo "[CLN]"
77 -@rm -r $(BUILDDIR)
78 -@rm $(BINARY_NAME)
79
80disassemble: $(BINARY_NAME)
81 objdump -d $< | less
82
83symbols: $(BINARY_NAME)
84 objdump -t $< | sort | less