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
|
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
|
+
+
+
+
+
-
-
-
+
+
+
+
-
-
+
-
+
-
+
-
-
+
+
|
ifneq (1,$(MAKING_CLEAN))
binding-cpp: all
endif
LFPP.MAKEFILE := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
CXXFLAGS += -fPIC -Wall -Werror
DIR.cpp := $(DIR.bindings)/cpp
CPP.SRC := $(patsubst %,$(DIR.cpp)/%,\
Context.cpp \
Db.cpp \
Deck.cpp \
Exception.cpp \
Fossil.cpp \
OStream.cpp)
LFPP_OBJECTS := $(patsubst %.cpp,%.o,$(CPP.SRC))
$(LFPP_OBJECTS): $(LFPP.MAKEFILE)
libf++ := $(DIR.cpp)/libfossil++
$(libf++).DLL.OBJECTS := $(LFPP_OBJECTS)
$($(libf++).DLL.OBJECTS): $(libfossil.library)
$(libf++).BIN.LDFLAGS := -lstdc++ -fPIC $(LIBF_CLIENT_LDFLAGS)
$(libf++).LIB.OBJECTS := $($(libf++).DLL.OBJECTS)
$($(libf++).DLL.OBJECTS): $(MAKEFILE_LIST)
CLEAN.libf-cpp += $($(libf++).DLL.OBJECTS)
########################################################################
# Shared lib
$(eval $(call ShakeNMake.CALL.RULES.DLLS,$(libf++)))
all: $($(libf++).DLL)
$($(libf++).DLL): $($(libf++).DLL.OBJECTS)
$($(libf++).DLL): $($(libf++).DLL.OBJECTS)
CLEAN.binding-cpp += $($(libf++).DLL.OBJECTS) $($(libf++).DLL)
all: $($(libf++).DLL)
CPPTest := $(DIR.cpp)/test
$(CPPTest): $(libfossil.library)
$(CPPTest).BIN.OBJECTS := $(CPPTest).o
ifeq (0,1)
$(CPPTest).BIN.LDFLAGS := $($(libf++).BIN.LDFLAGS) $(EXTRA_LIBS) -lstdc++ -L. -lfossil++ @SH_LINKFLAGS@
else
$(CPPTest).BIN.OBJECTS += $($(libf++).DLL.OBJECTS)
$(CPPTest).BIN.LDFLAGS := $(LIBF_CLIENT_LDFLAGS) $(EXTRA_LIBS) -lstdc++ @SH_LINKFLAGS@
endif
$(eval $(call ShakeNMake.CALL.RULES.BINS,$(CPPTest)))
CLEAN.binding-cpp += $($(CPPTest).BIN) $($(CPPTest).BIN.OBJECTS)
all: $($(CPPTest).BIN)
CLEAN.libf-cpp += $($(CPPTest).BIN) $($(CPPTest).BIN.OBJECTS)
########################################################################
# A quick-n-dirty amalgamation build...
LFPP.AMAL_D := $(TOP_SRCDIR_REL)
LFPP.AMAL_D := $(DIR.top)
LFPP.AMAL_CPP := $(LFPP.AMAL_D)/libfossil++.cpp
LFPP.AMAL_HPP := $(LFPP.AMAL_D)/libfossil++.hpp
LFPP.AMAL_CONF.H := $(LFPP.AMAL_D)/libfossil-config.h
CLEAN.libf-cpp += $(LFPP.AMAL_HPP) $(LFPP.AMAL_CPP)
CLEAN.binding-cpp += $(LFPP.AMAL_HPP) $(LFPP.AMAL_CPP)
LFPP.AMAL_CPP.SRC := \
$(CPP.SRC)
# ACHTUNG: in LFPP.AMAL_H.SRC, $(LFPP.AMAL_CONF.H) MUST be included first.
LFPP.AMAL_HPP.SRC := \
$(DIR.include)/fossil.hpp
$(DIR.include)/fossil-scm/fossil.hpp
$(LFPP.AMAL_HPP.SRC):
$(LFPP.AMAL_CPP.SRC):
$(LFPP.AMAL_HPP): Makefile $(LFPP.AMAL_HPP.SRC)
$(LFPP.AMAL_CPP): Makefile $(LFPP.AMAL_HPP) $(LFPP.AMAL_CPP.SRC)
$(LFPP.AMAL_HPP): $(LFPP.AMAL_HPP.SRC)
$(LFPP.AMAL_CPP): $(LFPP.AMAL_HPP) $(LFPP.AMAL_CPP.SRC)
$(LFPP.AMAL_CONF.H): $(MAIN_MAKEFILES)
$(LFPP.AMAL_HPP):
@echo "Creating $@..."
@{ \
echo '#if !defined(FSLPP_AMALGAMATION_BUILD)'; \
echo '#define FSLPP_AMALGAMATION_BUILD 1'; \
|
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
|
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
-
+
-
-
+
+
|
done; \
} | sed \
-e '/[ ]*#[ ]*include[ ]*.*fossil.*\.h.*[>"]/d' \
>> $@
LFPP.AMAL_CPP_FLAGS := -I$(DIR.include) -I$(DIR.top) -I. -I$(DIR.src)# for sqlite3.h :/
.PHONY: amal
amal: $(LFPP.AMAL_CPP)
amalpp: $(LFPP.AMAL_CPP)
@ls -ls $(LFPP.AMAL_CPP) $(LFPP.AMAL_HPP)
@if which g++ >/dev/null; then \
echo "Trying GCC..."; \
g++ -c $(LFPP.AMAL_CPP) -pedantic -Wstrict-aliasing -Wall -Werror -Wno-long-long $(LFPP.AMAL_CPP_FLAGS); \
fi; true
@if which clang >/dev/null; then \
echo "Trying clang..."; \
clang -c $(LFPP.AMAL_CPP) -pedantic -Wstrict-aliasing -Wall -Werror -Wno-long-long $(LFPP.AMAL_CPP_FLAGS); \
fi; true
# /amalgamation
########################################################################
$(call ShakeNMake.CALL.CLEAN-SET,libf-cpp)
CLEAN.libf-cpp += $(wildcard $(DIR.cpp)/*~)
$(call ShakeNMake.CALL.CLEAN-SET,binding-cpp)
CLEAN.binding-cpp += $(wildcard $(DIR.cpp)/*~)
|