-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathMakefile
More file actions
115 lines (100 loc) Β· 3.87 KB
/
Makefile
File metadata and controls
115 lines (100 loc) Β· 3.87 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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
##############
PROTO_DIR := protos
GEN_SUFFIX := .pb.go
PROTO_FILES := $(shell find $(PROTO_DIR) -name "*.proto")
PROTO_CHECKSUM := .proto_checksums
generate-proto:
@echo "Regenerating proto files..."
@touch $(PROTO_CHECKSUM)
@current_checksum=$$(sha256sum $(PROTO_FILES) | sha256sum | awk '{print $$1}'); \
stored_checksum=$$(cat $(PROTO_CHECKSUM)); \
if [ "$${current_checksum}" != "$${stored_checksum}" ]; then \
echo "Changes detected. Regenerating all proto files..."; \
MAP_OPTS=$$(for file in $(PROTO_FILES); do \
rel_path=$$(echo $$file | sed 's|$(PROTO_DIR)/||'); \
pkg_path=$$(dirname $$rel_path); \
go_pkg="github.com/stellar/go/$$pkg_path"; \
printf "M%s=%s," "$$rel_path" "$$go_pkg"; \
done); \
MAP_OPTS=$${MAP_OPTS%,}; \
echo "Running protoc with options:"; \
echo " --go_out=."; \
echo " --go_opt=paths=source_relative"; \
echo " --go_opt=$$MAP_OPTS"; \
echo "Proto Files: $(PROTO_FILES)"; \
protoc -I=$(PROTO_DIR) \
--go_out=. --go_opt=paths=source_relative \
--go_opt=$$MAP_OPTS \
$(PROTO_FILES); \
echo "$${current_checksum}" > $(PROTO_CHECKSUM); \
else \
echo "No changes detected in proto files."; \
fi
regenerate-proto: $(PROTO_CHECKSUM)
rm -f $(PROTO_CHECKSUM)
$(MAKE) generate-proto
$(PROTO_CHECKSUM):
@touch $(PROTO_CHECKSUM)
.PHONY: generate-proto regenerate-proto
##############
# MDBX Build
##############
MDBX_HOME := $(HOME)/local/libmdbx
MDBX_BINARY := $(HOME)/bin/full_mdbx_ingestion
# CGO settings for MDBX
CGO_ENABLED := 1
CGO_CFLAGS := -I$(MDBX_HOME)/include
CGO_LDFLAGS := -L$(MDBX_HOME)/lib -lmdbx -Wl,-rpath,$(MDBX_HOME)/lib
# Mac specific
GOARCH := arm64
GOOS := darwin
.PHONY: build-mdbx clean-mdbx test-mdbx run-mdbx check-mdbx-env
build-mdbx:
@echo "π¨ Building MDBX ingestion binary..."
CGO_ENABLED=$(CGO_ENABLED) \
GOARCH=$(GOARCH) \
GOOS=$(GOOS) \
CGO_CFLAGS="$(CGO_CFLAGS)" \
CGO_LDFLAGS="$(CGO_LDFLAGS)" \
go build -o $(MDBX_BINARY) mdbx/ingestion/full_mdbx_ingestion.go
@echo "β
Binary created at: $(MDBX_BINARY)"
clean-mdbx:
@echo "π§Ή Cleaning MDBX binaries..."
rm -f $(MDBX_BINARY)
@echo "β
Clean complete"
test-mdbx:
@echo "Testing MDBX installation..."
@echo "MDBX_HOME: $(MDBX_HOME)"
@echo ""
@echo "Checking files..."
@test -f $(MDBX_HOME)/lib/libmdbx.dylib && echo " β
libmdbx.dylib found" || echo " β libmdbx.dylib NOT found"
@test -f $(MDBX_HOME)/lib/libmdbx.a && echo " β
libmdbx.a found" || echo " β libmdbx.a NOT found"
@test -f $(MDBX_HOME)/include/mdbx.h && echo " β
mdbx.h found" || echo " β mdbx.h NOT found"
@echo ""
@echo "Testing Go compilation..."
@echo 'package main; import ("fmt"; "github.com/erigontech/mdbx-go/mdbx"); func main() { env, err := mdbx.NewEnv(); if err != nil { panic(err) }; defer env.Close(); fmt.Println("β
MDBX working!") }' > /tmp/test_mdbx.go
@CGO_ENABLED=1 \
CGO_CFLAGS="$(CGO_CFLAGS)" \
CGO_LDFLAGS="$(CGO_LDFLAGS)" \
DYLD_LIBRARY_PATH=$(MDBX_HOME)/lib \
go run /tmp/test_mdbx.go
@rm /tmp/test_mdbx.go
run-mdbx: build-mdbx
@echo "Running MDBX ingestion..."
DYLD_LIBRARY_PATH=$(MDBX_HOME)/lib ./$(MDBX_BINARY)
check-mdbx-env:
@echo "Environment Check:"
@echo " MDBX_HOME: $(MDBX_HOME)"
@echo " CGO_ENABLED: $(CGO_ENABLED)"
@echo " CGO_CFLAGS: $(CGO_CFLAGS)"
@echo " CGO_LDFLAGS: $(CGO_LDFLAGS)"
@echo " GOARCH: $(GOARCH)"
@echo " GOOS: $(GOOS)"
@echo ""
@echo "Files Check:"
@test -f $(MDBX_HOME)/lib/libmdbx.dylib && echo " β
libmdbx.dylib" || echo " β libmdbx.dylib NOT FOUND"
@test -f $(MDBX_HOME)/lib/libmdbx.a && echo " β
libmdbx.a" || echo " β libmdbx.a NOT FOUND"
@test -f $(MDBX_HOME)/include/mdbx.h && echo " β
mdbx.h" || echo " β mdbx.h NOT FOUND"
@echo ""
@echo "Source Check:"
@test -f mdbx/ingestion/full_mdbx_ingestion.go && echo " β
full_mdbx_ingestion.go" || echo " β full_mdbx_ingestion.go NOT FOUND"