89 lines
2.4 KiB
Bash
Executable File
89 lines
2.4 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# BestCDN C++ Build Script
|
|
|
|
echo "BestCDN C++ High-Performance Tester Build Script"
|
|
echo "================================================"
|
|
|
|
# Check if we're on Linux
|
|
if [[ "$OSTYPE" == "linux-gnu"* ]]; then
|
|
echo "Detected Linux system"
|
|
|
|
# Check if dependencies are installed
|
|
if ! pkg-config --exists libcurl; then
|
|
echo "Installing dependencies..."
|
|
if command -v apt-get &> /dev/null; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y libcurl4-openssl-dev libjsoncpp-dev build-essential pkg-config
|
|
elif command -v yum &> /dev/null; then
|
|
sudo yum install -y libcurl-devel jsoncpp-devel gcc-c++ make pkgconfig
|
|
elif command -v dnf &> /dev/null; then
|
|
sudo dnf install -y libcurl-devel jsoncpp-devel gcc-c++ make pkgconfig
|
|
else
|
|
echo "Error: Package manager not found. Please install libcurl-dev and libjsoncpp-dev manually."
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
elif [[ "$OSTYPE" == "darwin"* ]]; then
|
|
echo "Detected macOS system"
|
|
|
|
# Check if Homebrew is installed
|
|
if ! command -v brew &> /dev/null; then
|
|
echo "Error: Homebrew not found. Please install Homebrew first."
|
|
exit 1
|
|
fi
|
|
|
|
# Install dependencies
|
|
echo "Installing dependencies..."
|
|
brew install curl jsoncpp pkg-config
|
|
|
|
else
|
|
echo "Unsupported operating system: $OSTYPE"
|
|
exit 1
|
|
fi
|
|
|
|
# Create results directory
|
|
echo "Creating results directory..."
|
|
mkdir -p results
|
|
|
|
# Build the C++ tester
|
|
echo "Building C++ tester..."
|
|
cd src/cpp
|
|
|
|
# Use pkg-config to get proper flags
|
|
if pkg-config --exists libcurl; then
|
|
CURL_FLAGS=$(pkg-config --cflags --libs libcurl)
|
|
else
|
|
CURL_FLAGS="-lcurl"
|
|
fi
|
|
|
|
if pkg-config --exists jsoncpp; then
|
|
JSONCPP_FLAGS=$(pkg-config --cflags --libs jsoncpp)
|
|
else
|
|
JSONCPP_FLAGS="-ljsoncpp"
|
|
fi
|
|
|
|
echo "Building with flags: $CURL_FLAGS $JSONCPP_FLAGS"
|
|
|
|
g++ -std=c++17 -O3 -Wall -Wextra -pthread \
|
|
bestcdn_tester.cpp \
|
|
$CURL_FLAGS $JSONCPP_FLAGS \
|
|
-o bestcdn_tester
|
|
|
|
if [ $? -eq 0 ]; then
|
|
echo "✓ Build successful!"
|
|
echo ""
|
|
echo "To run the C++ tester:"
|
|
echo " cd src/cpp"
|
|
echo " ./bestcdn_tester"
|
|
echo ""
|
|
echo "Make sure your IP lists are in the ip_lists/ directory:"
|
|
echo " - ip_lists/cloudflare.txt"
|
|
echo " - ip_lists/fastly.txt"
|
|
echo " - ip_lists/edgeone.txt"
|
|
echo " - ip_lists/esa.txt"
|
|
else
|
|
echo "✗ Build failed!"
|
|
exit 1
|
|
fi |