Merge branch 'main' of https://gitea.medisoftware.org/Markus/lib-privatebin
This commit is contained in:
@ -17,8 +17,16 @@ elseif(UNIX)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
# Handle dependencies
|
# Handle dependencies
|
||||||
find_package(cryptopp CONFIG REQUIRED)
|
if(WIN32)
|
||||||
find_package(nlohmann_json CONFIG REQUIRED)
|
# Windows: Use vcpkg packages
|
||||||
|
find_package(cryptopp CONFIG REQUIRED)
|
||||||
|
find_package(nlohmann_json CONFIG REQUIRED)
|
||||||
|
else()
|
||||||
|
# Linux: Use system packages
|
||||||
|
find_package(PkgConfig REQUIRED)
|
||||||
|
pkg_check_modules(CRYPTOPP REQUIRED libcryptopp)
|
||||||
|
pkg_check_modules(NLOHMANN_JSON REQUIRED nlohmann_json)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Add library sources
|
# Add library sources
|
||||||
set(SOURCES
|
set(SOURCES
|
||||||
@ -48,17 +56,34 @@ target_include_directories(privatebinapi PUBLIC
|
|||||||
${CMAKE_CURRENT_SOURCE_DIR}/include
|
${CMAKE_CURRENT_SOURCE_DIR}/include
|
||||||
)
|
)
|
||||||
|
|
||||||
# Explicitly include vcpkg directories
|
# Platform-specific include directories
|
||||||
target_include_directories(privatebinapi PRIVATE
|
if(WIN32)
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/vcpkg_installed/x64-windows/include
|
# Windows: Include vcpkg directories
|
||||||
)
|
target_include_directories(privatebinapi PRIVATE
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/vcpkg_installed/x64-windows/include
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Link dependencies
|
# Link dependencies
|
||||||
target_link_libraries(privatebinapi PRIVATE
|
if(WIN32)
|
||||||
cryptopp::cryptopp
|
# Windows: Use vcpkg targets
|
||||||
nlohmann_json::nlohmann_json
|
target_link_libraries(privatebinapi PRIVATE
|
||||||
${PLATFORM_LIBS}
|
cryptopp::cryptopp
|
||||||
)
|
nlohmann_json::nlohmann_json
|
||||||
|
${PLATFORM_LIBS}
|
||||||
|
)
|
||||||
|
else()
|
||||||
|
# Linux: Use system libraries
|
||||||
|
target_link_libraries(privatebinapi PRIVATE
|
||||||
|
${CRYPTOPP_LIBRARIES}
|
||||||
|
${NLOHMANN_JSON_LIBRARIES}
|
||||||
|
${PLATFORM_LIBS}
|
||||||
|
)
|
||||||
|
target_include_directories(privatebinapi PRIVATE
|
||||||
|
${CRYPTOPP_INCLUDE_DIRS}
|
||||||
|
${NLOHMANN_JSON_INCLUDE_DIRS}
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Install targets
|
# Install targets
|
||||||
install(TARGETS privatebinapi
|
install(TARGETS privatebinapi
|
||||||
|
|||||||
105
README.md
105
README.md
@ -119,9 +119,11 @@ This script:
|
|||||||
- Configures CMake with proper toolchain
|
- Configures CMake with proper toolchain
|
||||||
- Builds the project using MSVC compiler
|
- Builds the project using MSVC compiler
|
||||||
|
|
||||||
### Linux/macOS Build Script
|
### Linux Build Scripts
|
||||||
|
|
||||||
|
#### Automated Build Script
|
||||||
**File:** `scripts/build.sh`
|
**File:** `scripts/build.sh`
|
||||||
**Requirements:** CMake, C++17 compiler, vcpkg
|
**Requirements:** CMake, C++17 compiler, system packages
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Make executable and run from project root
|
# Make executable and run from project root
|
||||||
@ -129,6 +131,54 @@ chmod +x scripts/build.sh
|
|||||||
./scripts/build.sh
|
./scripts/build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
|
This script:
|
||||||
|
- Automatically detects and installs required dependencies
|
||||||
|
- Configures CMake with Unix Makefiles
|
||||||
|
- Builds the project in Release configuration
|
||||||
|
|
||||||
|
#### Manual Linux Build (Recommended)
|
||||||
|
**Requirements:** CMake 3.10+, GCC/Clang with C++17 support, system packages
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install dependencies (Fedora/RHEL/CentOS)
|
||||||
|
sudo dnf install cmake gcc-c++ libcurl-devel cryptopp-devel json-devel
|
||||||
|
|
||||||
|
# Install dependencies (Ubuntu/Debian)
|
||||||
|
sudo apt install cmake g++ libcurl4-openssl-dev libcrypto++-dev nlohmann-json3-dev
|
||||||
|
|
||||||
|
# Build the project
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
# Run tests
|
||||||
|
ctest --verbose
|
||||||
|
|
||||||
|
# Run example
|
||||||
|
./example/example
|
||||||
|
```
|
||||||
|
|
||||||
|
**Linux Dependencies:**
|
||||||
|
- **libcurl-devel** - HTTP client library
|
||||||
|
- **cryptopp-devel** - Cryptographic library
|
||||||
|
- **json-devel** - JSON parsing library
|
||||||
|
- **cmake** - Build system
|
||||||
|
- **gcc-c++** - C++17 compiler
|
||||||
|
|
||||||
|
### macOS Build Script
|
||||||
|
**File:** `scripts/build.sh`
|
||||||
|
**Requirements:** CMake, C++17 compiler, Homebrew packages
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install dependencies via Homebrew
|
||||||
|
brew install cmake cryptopp nlohmann-json curl
|
||||||
|
|
||||||
|
# Make executable and run from project root
|
||||||
|
chmod +x scripts/build.sh
|
||||||
|
./scripts/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
This script:
|
This script:
|
||||||
- Bootstraps vcpkg if not present
|
- Bootstraps vcpkg if not present
|
||||||
- Configures CMake with Unix Makefiles
|
- Configures CMake with Unix Makefiles
|
||||||
@ -140,8 +190,9 @@ This script:
|
|||||||
|
|
||||||
- CMake 3.10+
|
- CMake 3.10+
|
||||||
- C++17 compatible compiler
|
- C++17 compatible compiler
|
||||||
- Crypto++ (via vcpkg)
|
- **Windows:** Crypto++ and nlohmann/json (via vcpkg)
|
||||||
- nlohmann/json (via vcpkg)
|
- **Linux:** libcurl, cryptopp, and nlohmann-json (via system packages)
|
||||||
|
- **macOS:** libcurl, cryptopp, and nlohmann/json (via Homebrew)
|
||||||
|
|
||||||
### Compilation
|
### Compilation
|
||||||
|
|
||||||
@ -157,14 +208,43 @@ powershell -NoProfile -ExecutionPolicy Bypass -File .\scripts\build_windows.ps1
|
|||||||
scripts\build_thinkpad.bat
|
scripts\build_thinkpad.bat
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Linux/macOS - Build via scripts/build.sh
|
#### Linux - Automated Build via scripts/build.sh
|
||||||
```bash
|
```bash
|
||||||
# Requires: CMake, C++17 compiler, vcpkg
|
# Requires: CMake, C++17 compiler, system packages
|
||||||
chmod +x scripts/build.sh
|
chmod +x scripts/build.sh
|
||||||
./scripts/build.sh
|
./scripts/build.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Manual Build
|
#### Linux - Manual Build (Recommended)
|
||||||
|
```bash
|
||||||
|
# Install dependencies (Fedora/RHEL/CentOS)
|
||||||
|
sudo dnf install cmake gcc-c++ libcurl-devel cryptopp-devel json-devel
|
||||||
|
|
||||||
|
# Install dependencies (Ubuntu/Debian)
|
||||||
|
sudo apt install cmake g++ libcurl4-openssl-dev libcrypto++-dev nlohmann-json3-dev
|
||||||
|
|
||||||
|
# Build the project
|
||||||
|
mkdir build
|
||||||
|
cd build
|
||||||
|
cmake ..
|
||||||
|
make -j$(nproc)
|
||||||
|
|
||||||
|
# Run tests and examples
|
||||||
|
ctest --verbose
|
||||||
|
./example/example
|
||||||
|
```
|
||||||
|
|
||||||
|
#### macOS - Build via scripts/build.sh
|
||||||
|
```bash
|
||||||
|
# Install dependencies via Homebrew
|
||||||
|
brew install cmake cryptopp nlohmann-json curl
|
||||||
|
|
||||||
|
# Requires: CMake, C++17 compiler, Homebrew packages
|
||||||
|
chmod +x scripts/build.sh
|
||||||
|
./scripts/build.sh
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Manual Build (All Platforms)
|
||||||
```bash
|
```bash
|
||||||
mkdir build
|
mkdir build
|
||||||
cd build
|
cd build
|
||||||
@ -172,7 +252,9 @@ cmake ..
|
|||||||
cmake --build . --config Release
|
cmake --build . --config Release
|
||||||
```
|
```
|
||||||
|
|
||||||
**Note:** The manual build method requires you to have all dependencies (CMake, compiler, vcpkg) properly configured. For most users, the platform-specific build scripts are recommended.
|
**Note:** The manual build method requires you to have all dependencies properly configured. For most users, the platform-specific build scripts are recommended.
|
||||||
|
|
||||||
|
**Linux Compatibility:** The project has been tested and successfully builds on Fedora Linux with system packages. It automatically detects the platform and uses appropriate dependency resolution methods (vcpkg for Windows, system packages for Linux/macOS).
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
@ -382,6 +464,13 @@ See [LICENSE](LICENSE) for details.
|
|||||||
|
|
||||||
## Changelog
|
## Changelog
|
||||||
|
|
||||||
|
### v0.1.1.6 (2025-08-28)
|
||||||
|
- **NEW**: Full Linux compatibility with system packages
|
||||||
|
- **NEW**: Automatic platform detection (Windows: vcpkg, Linux: system packages)
|
||||||
|
- **IMPROVED**: Enhanced Linux build documentation and instructions
|
||||||
|
- **IMPROVED**: Better dependency management for cross-platform builds
|
||||||
|
- **FIXED**: CMakeLists.txt now works on both Windows and Linux without manual configuration
|
||||||
|
|
||||||
### v0.1.1.5 (2025-08-28)
|
### v0.1.1.5 (2025-08-28)
|
||||||
- **NEW**: Enhanced text format support (plaintext, syntax highlighting, markdown)
|
- **NEW**: Enhanced text format support (plaintext, syntax highlighting, markdown)
|
||||||
- **NEW**: Comprehensive format testing in examples and integration tests
|
- **NEW**: Comprehensive format testing in examples and integration tests
|
||||||
|
|||||||
Reference in New Issue
Block a user