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
|
CC := gcc
LIB_DEB := bin/lib/libsalis-deb.so
LIB_REL := bin/lib/libsalis-rel.so
SOURCES := $(wildcard src/*.c)
OBJECTS_DEB := $(patsubst src/%.c,build/debug/%.o,$(SOURCES))
OBJECTS_REL := $(patsubst src/%.c,build/release/%.o,$(SOURCES))
DEPS_DEB := $(patsubst %.o,%.d,$(OBJECTS_DEB))
DEPS_REL := $(patsubst %.o,%.d,$(OBJECTS_REL))
LFLAGS := -shared
# Compiler flags for debug build.
DEB_FLAGS := -ggdb
# Compiler flags for release build.
REL_FLAGS := -O3 -DNDEBUG -Wno-unused-function -Wno-unused-result \
-Wno-unused-variable
# General compiler flags.
CFLAGS := -Iinclude -c -MMD -Wall -Wextra -std=c89 -fPIC -fopenmp \
-DSALIS_API="" -DSALIS_INST="" -DSALIS_PROC_ELEMENT="" -pedantic-errors \
-Wmissing-prototypes -Wstrict-prototypes -Wold-style-definition
# By default, keep a debug and release build available.
all: debug release
debug: $(OBJECTS_DEB)
$(CC) $(LFLAGS) -fopenmp -o $(LIB_DEB) $(OBJECTS_DEB)
release: $(OBJECTS_REL)
$(CC) $(LFLAGS) -fopenmp -o $(LIB_REL) $(OBJECTS_REL)
-include $(DEPS_DEB)
$(OBJECTS_DEB): $(patsubst build/debug/%.o,src/%.c,$@)
$(CC) $(DEB_FLAGS) $(CFLAGS) $(patsubst build/debug/%.o,src/%.c,$@) -o $@
-include $(DEPS_REL)
$(OBJECTS_REL): $(patsubst build/release/%.o,src/%.c,$@)
$(CC) $(REL_FLAGS) $(CFLAGS) $(patsubst build/release/%.o,src/%.c,$@) -o $@
clean:
-rm build/debug/*
-rm build/release/*
-rm $(LIB_DEB)
-rm $(LIB_REL)
|