-
Notifications
You must be signed in to change notification settings - Fork 0
/
Makefile.inc
67 lines (54 loc) · 1.33 KB
/
Makefile.inc
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
64
65
66
67
.PRECIOUS: %.cpp %.o
ARCH := $(shell getconf LONG_BIT)
MAKE := make
CC := clang
CPP := clang++
CFLAGS :=
CPP_FLAGS_32 := -m32 -D_SQ32
CPP_FLAGS_64 := -m64 -D_SQ64
CPP_FLAGS_OP := -O2 -fno-exceptions -fno-rtti -fno-strict-aliasing -Wall
CPP_FLAGS := $(CPP_FLAGS_$(ARCH)) $(CPP_FLAGS_OP)
LD := gcc
LDFLAGS :=
AR := ar
ARFLAGS := rc
TOPDIR = $(dir $(lastword $(MAKEFILE_LIST)))
BINDIR = $(TOPDIR)/bin
LIBDIR = $(TOPDIR)/lib
SRCDIR = $(TOPDIR)/src
ifdef SUBDIRS
all: $(SUBDIRS:=-subdir)
clean: clean-recursive
install: install-recursive
endif
ifdef PROGRAM
PROGRAM_OBJECTS ?= $(PROGRAM_SOURCES:.cpp=.o)
all: $(PROGRAM)
clean: .clean-program
%.o: %.cpp
$(CPP) $(CPP_FLAGS) $(PROGRAM_CPPFLAGS) $(PROGRAM_INCLUDES) -c $< -o $@
$(PROGRAM): $(PROGRAM_OBJECTS)
$(CPP) $(PROGRAM_OBJECTS) -o $(PROGRAM) $(PROGRAM_CFLAGS) $(PROGRAM_LDFLAGS) $(PROGRAM_LIBS)
endif
ifdef LIBRARY
LIBRARY_OBJECTS ?= $(LIBRARY_SOURCES:.cpp=.o)
all: $(LIBRARY)
clean: .clean-library
%.o: %.cpp
$(CPP) $(CPP_FLAGS) $(LIBRARY_CPPFLAGS) $(LIBRARY_INCLUDES) -c $< -o $@
endif
%-subdir:
$(MAKE) -C $*
%-recursive:
@for dir in $(SUBDIRS); do \
$(MAKE) -C $$dir $*; \
done
%.a: $(LIBRARY_OBJECTS)
$(AR) $(ARFLAGS) $@ $?
.clean-program:
rm -f $(PROGRAM_OBJECTS)
rm -f $(PROGRAM)
.clean-library:
rm -f $(LIBRARY_OBJECTS)
rm -f $(LIBRARY)
.PHONY: all clean install $(SUBDIRS)