-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmakefile
More file actions
63 lines (51 loc) · 1.42 KB
/
makefile
File metadata and controls
63 lines (51 loc) · 1.42 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
56
57
58
59
60
61
62
63
# Define C/C++ compiler variables
CXX := g++
EXTENSION_DIR = $(shell php-config --extension-dir)
INI_DIR = $(shell php -i | grep 'additional .ini files' | awk '{print $$NF}')
# Define compiler flags
OBJ_FLAG := -c -fPIC
FILE_FLAG := -o
STD_FLAG := -std=c++11
# Define archive flags
SO_FLAG := -shared -o
SO_NAME := casbin.so
INI_NAME := casbin.ini
# Define directory variables
SRC_DIR := casbin
OBJ_DIR := obj
LIB_DIR := so
# Define extension variables
SRC_EXT := cpp
OBJ_EXT := o
LIB_EXT := a
INC_EXT := h
# Define make directory command variable
MKDIR_P := mkdir -p
CP := cp -f
# Get source cpp files
SRC_FILES := $(shell find $(SRC_DIR) -type f -name *.$(SRC_EXT))
INC_DIRS := $(shell find $(SRC_DIR) -type d)
INC_FLAG_DIRS := $(addprefix -I /, $(INC_DIRS))
OBJ_DIRS := $(addprefix $(OBJ_DIR)/, $(INC_DIRS))
.PHONY: object
object:
$(foreach OBJ_DIR, $(OBJ_DIRS),\
$(MKDIR_P) $(OBJ_DIR);\
)
$(foreach SRC_FILE, $(SRC_FILES),\
$(CXX) $(STD_FLAG) $(OBJ_FLAG) $(FILE_FLAG) $(SRC_FILE:$(SRC_DIR)/%.$(SRC_EXT)=$(OBJ_DIR)/$(SRC_DIR)/%.$(OBJ_EXT)) $(SRC_FILE);\
)
#Get object files
OBJ_FILES := $(shell find $(OBJ_DIR) -type f -name *.$(OBJ_EXT))
.PHONY: library
library:
$(MKDIR_P) $(LIB_DIR)
$(CXX) $(SO_FLAG) $(SO_NAME) $(OBJ_FILES) -lphpcpp
mv $(SO_NAME) $(LIB_DIR)/$(SO_NAME)
.PHONY: clean
clean:
rm -r $(OBJ_DIR)
.PHONY: install
install:
${CP} ${LIB_DIR}/${SO_NAME} ${EXTENSION_DIR}
${CP} ${INI_NAME} ${INI_DIR}