-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathMakefile
63 lines (52 loc) · 1.23 KB
/
Makefile
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
56
57
58
59
60
61
62
63
# Variables
CC := gcc
CFLAGS := -Wall -Wextra -pedantic -std=c99 -O3
LDFLAGS :=
# Build options
PF_INSTALL := 0
PF_BUILD_STATIC := 1
PF_BUILD_SHARED := 0
PF_SUPPORT_OPENMP := 0
# Check if PF_SUPPORT_OPENMP is enabled
ifeq ($(PF_SUPPORT_OPENMP),1)
CFLAGS += -fopenmp
endif
# Source files
SRCS := $(wildcard src/*.c)
# Header files
HDRS := $(wildcard src/*.h)
# Static library target
ifeq ($(PF_BUILD_STATIC),1)
pixelforge_static: $(SRCS) $(HDRS)
$(CC) $(CFLAGS) -c $(SRCS)
ar rcs libpixelforge.a *.o
rm -f *.o
endif
# Shared library target
ifeq ($(PF_BUILD_SHARED),1)
LDFLAGS += -shared -o
ifeq ($(OS),Windows_NT)
SHARED_EXT := dll
else
SHARED_EXT := so
endif
pixelforge_dynamic: $(SRCS) $(HDRS)
$(CC) $(CFLAGS) -fPIC $(LDFLAGS) libpixelforge.$(SHARED_EXT) $(SRCS)
endif
# Installation
ifeq ($(PF_INSTALL),1)
install:
# Installing static libraries if the STATIC option is enabled
ifeq ($(PF_BUILD_STATIC),1)
cp libpixelforge.a /usr/local/lib/
endif
# Installing shared libraries if the SHARED option is enabled
ifeq ($(PF_BUILD_SHARED),1)
cp libpixelforge.$(SHARED_EXT) /usr/local/lib/
endif
# Installing header files
cp $(HDRS) /usr/local/include/
endif
# Clean
clean:
rm -f *.o libpixelforge.a libpixelforge.$(SHARED_EXT)