aboutsummaryrefslogtreecommitdiff
path: root/Makefile
blob: 9d88bf692016991e5603d685d6ef12a90688f585 (plain)
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)