Login
Diff
Login

Differences From Artifact [5f212db71b]:

To Artifact [0fe7b05d3f]:






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)/*~)