# Builds the logos-blockchain-ui library { pkgs, common, src, logosBlockchainModule, logosSdk }: pkgs.stdenv.mkDerivation { pname = "${common.pname}-lib"; version = common.version; inherit src; inherit (common) buildInputs cmakeFlags meta env; # Add logosSdk to nativeBuildInputs for logos-cpp-generator nativeBuildInputs = common.nativeBuildInputs ++ [ logosSdk ]; preConfigure = '' runHook prePreConfigure # Create generated_code directory for generated files mkdir -p ./generated_code # Copy include files from logos-blockchain-module result echo "Copying include files from logos-blockchain-module..." if [ -d "${logosBlockchainModule}/include" ]; then echo "Found include directory in logos-blockchain-module" cp -r "${logosBlockchainModule}/include"/* ./generated_code/ echo "Copied include files:" ls -la ./generated_code/ else echo "Warning: No include directory found in logos-blockchain-module" fi # Run logos-cpp-generator with metadata.json and --general-only flag echo "Running logos-cpp-generator..." logos-cpp-generator --metadata ${src}/metadata.json --general-only --output-dir ./generated_code # Check what was generated by logos-cpp-generator echo "Checking generated files in generated_code:" ls -la ./generated_code/ # Create include directory and move generated files there if they exist if [ -f "./generated_code/core_manager_api.h" ] || [ -f "./generated_code/logos_sdk.h" ]; then echo "Creating include directory and moving generated files..." mkdir -p ./generated_code/include # Move generated header files to include directory for file in ./generated_code/*.h; do if [ -f "$file" ]; then mv "$file" ./generated_code/include/ fi done # Also copy generated .cpp files to include directory for file in ./generated_code/*.cpp; do if [ -f "$file" ]; then cp "$file" ./generated_code/include/ fi done echo "Generated include directory:" ls -la ./generated_code/include/ else echo "Warning: No header files generated by logos-cpp-generator" fi runHook postPreConfigure ''; installPhase = '' runHook preInstall mkdir -p $out/lib # We are in build/; library is in build/modules/ if [ -f modules/blockchain_ui.dylib ]; then cp modules/blockchain_ui.dylib $out/lib/ elif [ -f modules/blockchain_ui.so ]; then cp modules/blockchain_ui.so $out/lib/ else echo "Error: No library file found" exit 1 fi # Also install the generated include files if [ -d "./generated_code/include" ]; then mkdir -p $out/include cp -r ./generated_code/include/* $out/include/ echo "Installed generated include files:" ls -la $out/include/ fi runHook postInstall ''; }