@@ -13,10 +13,11 @@ BUILD_DIR := build
1313IMPLEMENTATIONS_INC := $(BUILD_DIR ) /implementations.inc
1414
1515GO_LIB := $(BUILD_DIR ) /libgo$(so_ext )
16- CPP_LIB := $(BUILD_DIR ) /libs3cpp $(so_ext )
16+ CPP_LIB := $(BUILD_DIR ) /libawscpp $(so_ext )
1717RUST_LIB := $(BUILD_DIR ) /librust$(so_ext )
18+ S3CPP_LIB := $(BUILD_DIR ) /libs3cpp$(so_ext )
1819
19- all : $(GO_LIB ) $(CPP_LIB ) $(IMPLEMENTATIONS_INC )
20+ all : $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) $( S3CPP_LIB ) $( IMPLEMENTATIONS_INC )
2021
2122$(BUILD_DIR ) :
2223 mkdir -p $@
@@ -25,26 +26,49 @@ $(BUILD_DIR):
2526$(GO_LIB ) : | $(BUILD_DIR )
2627 cd ./aws-sdk-go-v2 && go build -buildmode=c-shared -o ../$(BUILD_DIR ) /libgo$(so_ext ) .
2728
28- $(CPP_LIB ) : | $(BUILD_DIR )
29- cmake --build ../build
30- c++ -std=c++26 -shared -fPIC -I../src s3cpp/task.cpp -o $(BUILD_DIR ) /libs3cpp$(so_ext ) \
31- ../build/lib/libs3cpp.a $(shell pkg-config --libs libcurl libcrypto)
29+ AWS_SDK_CPP_INSTALL := $(BUILD_DIR ) /.aws-sdk-cpp-installed
30+
31+ $(CPP_LIB ) : $(AWS_SDK_CPP_INSTALL ) | $(BUILD_DIR )
32+ c++ -std=c++26 -shared -fPIC \
33+ -I$(BUILD_DIR ) /aws-sdk-cpp-install/include \
34+ aws-sdk-cpp/task.cpp \
35+ -o $@ \
36+ -L$(BUILD_DIR ) /aws-sdk-cpp-install/lib \
37+ -laws-cpp-sdk-s3 -laws-cpp-sdk-core \
38+ -Wl,-rpath,$(BUILD_DIR ) /aws-sdk-cpp-install/lib
39+
40+ $(AWS_SDK_CPP_INSTALL ) : | $(BUILD_DIR )
41+ # Build from source (perhaps we should use a prebuilt binary)
42+ [ -d $( BUILD_DIR) /aws-sdk-cpp ] || \
43+ git clone --recurse-submodules https://github.com/aws/aws-sdk-cpp $(BUILD_DIR ) /aws-sdk-cpp
44+ cmake -S $(BUILD_DIR ) /aws-sdk-cpp -B $(BUILD_DIR ) /aws-sdk-cpp-build -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$(BUILD_DIR ) /aws-sdk-cpp-install -DBUILD_ONLY=" s3" -DBUILD_TESTING=OFF
45+ cmake --build $(BUILD_DIR ) /aws-sdk-cpp-build --config Release
46+ cmake --install $(BUILD_DIR ) /aws-sdk-cpp-build --config Release
47+ touch $@
3248
3349$(RUST_LIB ) : | $(BUILD_DIR )
3450 cargo build --release --manifest-path ./aws-sdk-rust/Cargo.toml
3551 mv ./aws-sdk-rust/target/release/librust$(so_ext ) $(BUILD_DIR ) /.
3652
37- $(IMPLEMENTATIONS_INC ) : $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) | $(BUILD_DIR )
38- printf ' "./%s",\n' $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) > $@
53+ $(S3CPP_LIB ) : | $(BUILD_DIR )
54+ cmake --build ../build
55+ c++ -std=c++26 -shared -fPIC -I../src s3cpp/task.cpp -o $(BUILD_DIR ) /libs3cpp$(so_ext ) \
56+ ../build/lib/libs3cpp.a $(shell pkg-config --libs libcurl libcrypto)
3957
40- bench : $(IMPLEMENTATIONS_INC ) $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) | $(BUILD_DIR )
58+ $(IMPLEMENTATIONS_INC ) : $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) $(S3CPP_LIB ) | $(BUILD_DIR )
59+ printf ' "./%s",\n' $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) $(S3CPP_LIB ) > $@
60+
61+ bench : $(IMPLEMENTATIONS_INC ) $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) $(S3CPP_LIB ) | $(BUILD_DIR )
4162 c++ -std=c++26 main.cpp -o $(BUILD_DIR ) /bench
4263
43- test : $(IMPLEMENTATIONS_INC ) $(GO_LIB ) $(CPP_LIB ) $(RUST_LIB ) | $(BUILD_DIR )
64+ test : $(IMPLEMENTATIONS_INC ) $(GO_LIB ) $(S3CPP_LIB ) $(RUST_LIB ) | $(BUILD_DIR )
4465 c++ -std=c++26 -I../src test.cpp -o $(BUILD_DIR ) /test ../build/lib/libs3cpp.a $(shell pkg-config --libs libcurl libcrypto)
4566
4667
47- .PHONY : all clean
68+ .PHONY : all clean aws-sdk-cpp
69+ aws-sdk-cpp : $(CPP_LIB )
70+
4871clean :
4972 rm -rf $(BUILD_DIR )
5073 rm -rf ./aws-sdk-rust/target
74+ rm -rf $(BUILD_DIR ) /aws-sdk-cpp $(BUILD_DIR ) /aws-sdk-cpp-build $(BUILD_DIR ) /aws-sdk-cpp-install
0 commit comments