forked from FirebirdSQL/fbjava
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
69 lines (48 loc) · 1.21 KB
/
Makefile
File metadata and controls
69 lines (48 loc) · 1.21 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
64
65
66
67
68
69
MODULES := fbjava
TARGET := release
CXX := g++
LD := $(CXX)
SRC_DIR := src/native
BUILD_DIR := build
OUT_DIR := output
ifeq ($(OS),Windows_NT)
SHRLIB_EXT := dll
else
SHRLIB_EXT := so
endif
OBJ_DIR := $(BUILD_DIR)/$(TARGET)
LIB_DIR := $(OUT_DIR)/$(TARGET)/lib
SRC_DIRS := $(addprefix $(SRC_DIR)/,$(MODULES))
OBJ_DIRS := $(addprefix $(OBJ_DIR)/,$(MODULES))
SRCS := $(foreach sdir,$(SRC_DIRS),$(wildcard $(sdir)/*.cpp))
OBJS := $(patsubst $(SRC_DIR)/%.cpp,$(OBJ_DIR)/%.o,$(SRCS))
CXX_FLAGS := -ggdb -MMD -MP
LD_FLAGS :=
ifeq ($(OS),Windows_NT)
LD_FLAGS += -static-libgcc -static-libstdc++
else
CXX_FLAGS += -fPIC
endif
ifeq ($(TARGET),release)
CXX_FLAGS += -O3
endif
ifeq ($(TARGET),debug)
FPC_FLAGS += -g
endif
vpath %.cpp $(SRC_DIRS)
define compile
$1/%.o: %.cpp
$(CXX) -c $$(CXX_FLAGS) $$< -o $$@
endef
.PHONY: all mkdirs clean
all: mkdirs \
$(LIB_DIR)/libfbjava.$(SHRLIB_EXT) \
mkdirs: $(OBJ_DIRS) $(LIB_DIR)
$(OBJ_DIRS) $(LIB_DIR):
@"mkdir" -p $@
clean:
@rm -rf $(BUILD_DIR) $(OUT_DIR)
$(foreach bdir,$(OBJ_DIRS),$(eval $(call compile,$(bdir))))
-include $(addsuffix .d,$(basename $(OBJS)))
$(LIB_DIR)/libfbjava.$(SHRLIB_EXT): $(OBJ_DIR)/fbjava/fbjava.o
$(LD) -shared $(LD_FLAGS) $^ -o $@ -lfbclient