mirror of
https://github.com/logos-blockchain/logos-blockchain-module.git
synced 2026-02-20 13:03:15 +00:00
70 lines
2.3 KiB
Nix
70 lines
2.3 KiB
Nix
# Generates headers from the blockchain module plugin using logos-cpp-generator
|
|
{ pkgs, common, src, lib, logosSdk }:
|
|
|
|
pkgs.stdenv.mkDerivation {
|
|
pname = "${common.pname}-headers";
|
|
version = common.version;
|
|
inherit src;
|
|
inherit (common) meta;
|
|
|
|
# We need the generator and the built plugin
|
|
nativeBuildInputs = [ logosSdk ];
|
|
|
|
# No configure phase needed
|
|
dontConfigure = true;
|
|
|
|
buildPhase = ''
|
|
runHook preBuild
|
|
|
|
# Create output directory for generated headers
|
|
mkdir -p ./generated_headers
|
|
if [ -f "${lib}/lib/liblogos_blockchain_module.dylib" ]; then
|
|
PLUGIN_FILE="${lib}/lib/liblogos_blockchain_module.dylib"
|
|
elif [ -f "${lib}/lib/liblogos_blockchain_module.so" ]; then
|
|
PLUGIN_FILE="${lib}/lib/liblogos_blockchain_module.so"
|
|
else
|
|
echo "Error: No liblogos_blockchain_module library found"
|
|
exit 1
|
|
fi
|
|
|
|
# Set library path so the plugin can find libblockchain when loaded
|
|
if [ "$(uname -s)" = "Darwin" ]; then
|
|
export DYLD_LIBRARY_PATH="${lib}/lib:''${DYLD_LIBRARY_PATH:-}"
|
|
else
|
|
export LD_LIBRARY_PATH="${lib}/lib:''${LD_LIBRARY_PATH:-}"
|
|
fi
|
|
|
|
# Run logos-cpp-generator on the built plugin with --module-only flag
|
|
echo "Running logos-cpp-generator on $PLUGIN_FILE"
|
|
echo "Library path: ${lib}/lib"
|
|
ls -la "${lib}/lib"
|
|
logos-cpp-generator "$PLUGIN_FILE" --output-dir ./generated_headers --module-only || {
|
|
echo "Warning: logos-cpp-generator failed, this may be expected if the module has no public API"
|
|
# Create a marker file to indicate attempt was made
|
|
touch ./generated_headers/.no-api
|
|
}
|
|
|
|
runHook postBuild
|
|
'';
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
# Install generated headers
|
|
mkdir -p $out/include
|
|
|
|
# Copy all generated files to include/ if they exist
|
|
if [ -d ./generated_headers ] && [ "$(ls -A ./generated_headers 2>/dev/null)" ]; then
|
|
echo "Copying generated headers..."
|
|
ls -la ./generated_headers
|
|
cp -r ./generated_headers/* $out/include/
|
|
else
|
|
echo "Warning: No generated headers found, creating empty include directory"
|
|
# Create a placeholder file to indicate headers should be generated from metadata
|
|
echo "# Generated headers from metadata.json" > $out/include/.generated
|
|
fi
|
|
|
|
runHook postInstall
|
|
'';
|
|
}
|