#!/bin/sh # # Fetch X11 headers from official freedesktop.org sources # Run this script to populate xlibs/include with X11 headers # set -e XLIBS_DIR="$(dirname "$0")" INCLUDE_DIR="$XLIBS_DIR/include" TMP_DIR="$XLIBS_DIR/tmp" mkdir -p "$INCLUDE_DIR/X11/extensions" mkdir -p "$INCLUDE_DIR/X11/Xcursor" mkdir -p "$TMP_DIR" echo "Downloading X11 headers..." # xorgproto - X11 protocol headers XORGPROTO_VER="2024.1" XORGPROTO_URL="https://xorg.freedesktop.org/archive/individual/proto/xorgproto-${XORGPROTO_VER}.tar.xz" if [ ! -f "$TMP_DIR/xorgproto-${XORGPROTO_VER}.tar.xz" ]; then echo "Fetching xorgproto..." curl -L -o "$TMP_DIR/xorgproto-${XORGPROTO_VER}.tar.xz" "$XORGPROTO_URL" fi tar -xf "$TMP_DIR/xorgproto-${XORGPROTO_VER}.tar.xz" -C "$TMP_DIR" cp -r "$TMP_DIR/xorgproto-${XORGPROTO_VER}/include/X11/"* "$INCLUDE_DIR/X11/" # libX11 - Core X11 headers LIBX11_VER="1.8.10" LIBX11_URL="https://xorg.freedesktop.org/archive/individual/lib/libX11-${LIBX11_VER}.tar.xz" if [ ! -f "$TMP_DIR/libX11-${LIBX11_VER}.tar.xz" ]; then echo "Fetching libX11..." curl -L -o "$TMP_DIR/libX11-${LIBX11_VER}.tar.xz" "$LIBX11_URL" fi tar -xf "$TMP_DIR/libX11-${LIBX11_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libX11-${LIBX11_VER}/include/X11/"*.h "$INCLUDE_DIR/X11/" 2>/dev/null || true # libXext - Extension headers LIBXEXT_VER="1.3.6" LIBXEXT_URL="https://xorg.freedesktop.org/archive/individual/lib/libXext-${LIBXEXT_VER}.tar.xz" if [ ! -f "$TMP_DIR/libXext-${LIBXEXT_VER}.tar.xz" ]; then echo "Fetching libXext..." curl -L -o "$TMP_DIR/libXext-${LIBXEXT_VER}.tar.xz" "$LIBXEXT_URL" fi tar -xf "$TMP_DIR/libXext-${LIBXEXT_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libXext-${LIBXEXT_VER}/include/X11/extensions/"*.h "$INCLUDE_DIR/X11/extensions/" 2>/dev/null || true # libXrender LIBXRENDER_VER="0.9.12" LIBXRENDER_URL="https://xorg.freedesktop.org/archive/individual/lib/libXrender-${LIBXRENDER_VER}.tar.xz" if [ ! -f "$TMP_DIR/libXrender-${LIBXRENDER_VER}.tar.xz" ]; then echo "Fetching libXrender..." curl -L -o "$TMP_DIR/libXrender-${LIBXRENDER_VER}.tar.xz" "$LIBXRENDER_URL" fi tar -xf "$TMP_DIR/libXrender-${LIBXRENDER_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libXrender-${LIBXRENDER_VER}/include/X11/extensions/"*.h "$INCLUDE_DIR/X11/extensions/" 2>/dev/null || true # libXinerama LIBXINERAMA_VER="1.1.5" LIBXINERAMA_URL="https://xorg.freedesktop.org/archive/individual/lib/libXinerama-${LIBXINERAMA_VER}.tar.xz" if [ ! -f "$TMP_DIR/libXinerama-${LIBXINERAMA_VER}.tar.xz" ]; then echo "Fetching libXinerama..." curl -L -o "$TMP_DIR/libXinerama-${LIBXINERAMA_VER}.tar.xz" "$LIBXINERAMA_URL" fi tar -xf "$TMP_DIR/libXinerama-${LIBXINERAMA_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libXinerama-${LIBXINERAMA_VER}/include/X11/extensions/"*.h "$INCLUDE_DIR/X11/extensions/" 2>/dev/null || true # libXfixes LIBXFIXES_VER="6.0.1" LIBXFIXES_URL="https://xorg.freedesktop.org/archive/individual/lib/libXfixes-${LIBXFIXES_VER}.tar.xz" if [ ! -f "$TMP_DIR/libXfixes-${LIBXFIXES_VER}.tar.xz" ]; then echo "Fetching libXfixes..." curl -L -o "$TMP_DIR/libXfixes-${LIBXFIXES_VER}.tar.xz" "$LIBXFIXES_URL" fi tar -xf "$TMP_DIR/libXfixes-${LIBXFIXES_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libXfixes-${LIBXFIXES_VER}/include/X11/extensions/"*.h "$INCLUDE_DIR/X11/extensions/" 2>/dev/null || true # libXcursor LIBXCURSOR_VER="1.2.2" LIBXCURSOR_URL="https://xorg.freedesktop.org/archive/individual/lib/libXcursor-${LIBXCURSOR_VER}.tar.xz" if [ ! -f "$TMP_DIR/libXcursor-${LIBXCURSOR_VER}.tar.xz" ]; then echo "Fetching libXcursor..." curl -L -o "$TMP_DIR/libXcursor-${LIBXCURSOR_VER}.tar.xz" "$LIBXCURSOR_URL" fi tar -xf "$TMP_DIR/libXcursor-${LIBXCURSOR_VER}.tar.xz" -C "$TMP_DIR" cp "$TMP_DIR/libXcursor-${LIBXCURSOR_VER}/include/X11/Xcursor/"*.h "$INCLUDE_DIR/X11/Xcursor/" 2>/dev/null || true echo "Cleaning up..." rm -rf "$TMP_DIR" echo "Done. Headers installed in $INCLUDE_DIR" echo "" echo "Add to Makefile: CXXFLAGS += -I./xlibs/include"