-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
55 lines (39 loc) · 1.26 KB
/
Makefile
File metadata and controls
55 lines (39 loc) · 1.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# Library
LIB_SOURCES=src/world.c src/program.c src/optimize.c src/test.c deps/SFMT/SFMT.c
LIB_INCLUDES=$(wildcard include/*.h) $(wildcard src/*.h)
LIB_OUT=libgp.a
# Examples
EXAMPLES_SOURCES=$(wildcard examples/*.c)
# Docs
DOCS_SOURCES = src/*.c
#=============================================================================#
WARNINGS=-Wall -Wextra -Wshadow -pedantic -Werror \
-Wstrict-prototypes -Wmissing-prototypes \
-Wno-unused-parameter -Wno-unused-function \
-Wno-unused-variable
CC=gcc
CFLAGS=$(WARNINGS) -std=c99 -O3 -Iinclude -Ideps/SFMT -DSFMT_MEXP=19937 -DHAVE_SSE2
DEBUG_CFLAGS=-g -DDEBUG
DEBUG ?= 1
ifeq ($(DEBUG), 1)
CFLAGS:=$(CFLAGS) $(DEBUG_CFLAGS)
endif
LIB_OBJECTS=$(LIB_SOURCES:%.c=out/%.o)
EXAMPLES_OBJECTS=$(basename $(EXAMPLES_SOURCES))
#=============================================================================#
all: $(LIB_OUT) $(EXAMPLES_OBJECTS)
$(LIB_OUT): $(LIB_OBJECTS)
ar rcs $@ $(LIB_OBJECTS)
$(LIB_OBJECTS): out/%.o: %.c $(LIB_INCLUDES)
mkdir -p $(dir $@)
$(CC) $(CFLAGS) -c $< -o $@
$(EXAMPLES_OBJECTS): %: %.c $(LIB_OUT)
$(CC) $(CFLAGS) -L. -lgp $< -o $@
clean:
rm -f libgp.a
rm -f docs/*.html
rm -rf $(LIB_OBJECTS)
rm -f $(EXAMPLES_OBJECTS)
docs:
docco -o docs $(DOCS_SOURCES)
.PHONY: clean docs