Skip to content

Conversation

@Ylarod
Copy link
Contributor

@Ylarod Ylarod commented Sep 29, 2025

No description provided.

@sudhackar
Copy link
Contributor

sudhackar commented Oct 19, 2025

Has this been tested to work? Sorry, just saw https://github.com/Ylarod/qscripts/actions/runs/18088827909/job/51464644178

I think idacpp was added recently

#!/usr/bin/env bash
set -euxo pipefail

# ==================================================================
# Local build script for IDA plugin (qscripts.so)
# Compatible with Linux (Ubuntu, Debian, Arch, etc.)
# ==================================================================

# Environment variables
WORKDIR="$(pwd)"
idasdk_DIR="${WORKDIR}/ida-sdk/src"
export IDASDK="${WORKDIR}/ida-sdk/src"
BUILD_DIR="${WORKDIR}/build"
OUTPUT_DIR="${WORKDIR}/output"
PLUGIN_NAME="qscripts"

# ==================================================================
# Preparation: Clone Hex-Rays SDK, CMake helpers, idax and idacpp
# ==================================================================

echo "[INFO] Preparing IDA SDK and helpers..."
# mkdir -p "${idasdk_DIR}" "${OUTPUT_DIR}"

if [ ! -d "${WORKDIR}/ida-sdk/.git" ]; then
    git clone --depth 1 https://github.com/HexRaysSA/ida-sdk ida-sdk
fi

if [ ! -d "${idasdk_DIR}/ida-cmake/.git" ]; then
    git clone --depth 1 https://github.com/allthingsida/ida-cmake "${idasdk_DIR}/ida-cmake"
fi

if [ ! -d "${idasdk_DIR}/include/idax/.git" ]; then
    mkdir -p "${idasdk_DIR}/include"
    git clone --depth 1 https://github.com/allthingsida/idax "${idasdk_DIR}/include/idax"
fi

if [ ! -d "${idasdk_DIR}/include/idacpp/.git" ]; then
    mkdir -p "${idasdk_DIR}/include"
    git clone --depth 1 https://github.com/allthingsida/idacpp "${idasdk_DIR}/include/idacpp"
fi

# ==================================================================
# Configure build with CMake
# ==================================================================

echo "[INFO] Configuring project with CMake..."
cmake -S . -B "${BUILD_DIR}" -DCMAKE_BUILD_TYPE=Release

# ==================================================================
# Build plugin
# ==================================================================

echo "[INFO] Building plugin..."
cmake --build "${BUILD_DIR}" -- -j"$(nproc)"

# ==================================================================
# Copy output to artifact directory
# ==================================================================

PLUGIN_PATH="${idasdk_DIR}/bin/plugins/${PLUGIN_NAME}.so"

if [ -f "${PLUGIN_PATH}" ]; then
    mkdir -p "${OUTPUT_DIR}"
    cp "${PLUGIN_PATH}" "${OUTPUT_DIR}/${PLUGIN_NAME}-linux.so"
    echo "[SUCCESS] Plugin built successfully: ${OUTPUT_DIR}/${PLUGIN_NAME}-linux.so"
else
    echo "[ERROR] Could not find built plugin. Check build logs." >&2
    exit 1
fi

@0xeb
Copy link
Member

0xeb commented Nov 10, 2025

thank you @Ylarod .

@0xeb 0xeb merged commit a54285a into allthingsida:main Nov 10, 2025
@sudhackar
Copy link
Contributor

https://github.com/allthingsida/qscripts/actions/runs/19249397673/job/55030929254 failed because you need to consider the points I mentioned earlier. I can raise another PR

@sudhackar sudhackar mentioned this pull request Nov 11, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants