Skip to content

Instantly share code, notes, and snippets.

@lopesivan
Created November 26, 2025 10:52
Show Gist options
  • Select an option

  • Save lopesivan/0cde65dd19a6c15ddeb2bb6aeddf431e to your computer and use it in GitHub Desktop.

Select an option

Save lopesivan/0cde65dd19a6c15ddeb2bb6aeddf431e to your computer and use it in GitHub Desktop.
build wx
#!/usr/bin/env bash
set -euo pipefail
# ==============================
# Configurações
# ==============================
WX_VERSION="3.2.4"
OS=android
WX_SRC_DIR="wxWidgets-${WX_VERSION}-${OS}"
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_ZIP=wxWidgets-${WX_VERSION}.zip
# if exist path `_d' then remove.
_d=${OS}-wx-${WX_VERSION}
test -d $_d && rm -rf $_d
_d=wxWidgets-${WX_VERSION}-${OS}
test -d $_d && rm -rf $_d
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_ZIP}..."
unzip ${WX_ZIP} -d ${WX_SRC_DIR}
echo "[INFO] Código-fonte preparado em ${WX_SRC_DIR}"
# Prefixo onde o "framework" wx será instalado
# Ex.: $HOME/wx/android-wx-3.2.4/arm64-v8a/usr
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_ARCH="arm64-v8a"
WX_SYSROOT_USR="${WX_PREFIX_DIR}/${WX_ARCH}/usr"
# Diretório de build
WX_BUILD_DIR="${WX_SRC_DIR}/build_${WX_ARCH}"
# CMake / NDK / Qt
CMAKE_BIN="/home/ivan/Android/Sdk/cmake/3.22.1/bin/cmake"
ANDROID_NDK_ROOT="/home/ivan/Android/Sdk/ndk/android-ndk-r21e"
QT_ANDROID_ROOT="/home/ivan/.config/env/qt/5.15.2/android"
ANDROID_PLATFORM="android-28"
ANDROID_ABI="${WX_ARCH}"
# ==============================
# Configuração com CMake
# ==============================
echo "[INFO] Configurando CMake para ${ANDROID_ABI}..."
mkdir -p "${WX_BUILD_DIR}"
(
cd "${WX_BUILD_DIR}"
PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig \
"${CMAKE_BIN}" \
-S .. \
-B . \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_ROOT}/build/cmake/android.toolchain.cmake" \
-DCMAKE_INSTALL_PREFIX="${WX_SYSROOT_USR}" \
-DANDROID_PLATFORM="${ANDROID_PLATFORM}" \
-DANDROID_ABI="${ANDROID_ABI}" \
-DCMAKE_FIND_ROOT_PATH="${WX_SYSROOT_USR};${QT_ANDROID_ROOT}" \
-DCMAKE_FIND_DEBUG_MODE=ON \
-DCMAKE_EXE_LINKER_FLAGS="-llog -Wl,-rpath-link=${WX_SYSROOT_USR}/lib" \
-DCMAKE_MODULE_LINKER_FLAGS="-llog -Wl,-rpath-link=${WX_SYSROOT_USR}/lib" \
-DCMAKE_SHARED_LINKER_FLAGS="-llog -Wl,-rpath-link=${WX_SYSROOT_USR}/lib" \
-DCMAKE_C_FLAGS="" \
-DCMAKE_CXX_FLAGS="" \
-DwxBUILD_TOOLKIT=qt \
-DwxUSE_SECRETSTORE=OFF \
-DwxUSE_LIBICONV=OFF \
-DwxUSE_INTL=ON \
-DwxUSE_OPENGL=OFF \
-DwxUSE_REGEX=OFF
# -DwxBUILD_TOOLKIT=qt \
# -DwxUSE_SECRETSTORE=OFF \
# -DwxUSE_LIBICONV=OFF \
# -DwxUSE_INTL=ON \
# -DwxUSE_OPENGL=OFF \
# -DwxUSE_REGEX=OFF \
# -DwxBUILD_DEBUG_LEVEL=0 \
# -DwxUSE_LOG=OFF \
# -DwxUSE_LOGGUI=OFF \
# -DwxUSE_LOGWINDOW=OFF \
# -DwxUSE_LOG_DIALOG=OFF
echo "[INFO] CMake configurado em ${WX_BUILD_DIR}"
)
# ==============================
# Compilação e instalação
# ==============================
echo "[INFO] Compilando e instalando wxWidgets (${ANDROID_ABI}) em ${WX_SYSROOT_USR}..."
(
cd "${WX_BUILD_DIR}"
"${CMAKE_BIN}" --build . --target install/strip
)
echo "[INFO] wxWidgets ${WX_VERSION} (${ANDROID_ABI}) instalado em:"
echo " ${WX_SYSROOT_USR}"
exit 0
#!/usr/bin/env bash
set -euo pipefail
# ==============================
# Configurações
# ==============================
WX_VERSION="3.2.4"
WX_SRC_DIR="wxWidgets-${WX_VERSION}-${OS}"
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_ZIP=wxWidgets-${WX_VERSION}.zip
# if exist path `_d' then remove.
_d=${OS}-wx-${WX_VERSION}
test -d $_d && rm -rf $_d
_d=wxWidgets-${WX_VERSION}-${OS}
test -d $_d && rm -rf $_d
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_ZIP}..."
unzip ${WX_ZIP} -d ${WX_SRC_DIR}
# ==============================
# Configuração, compilação e instalação
# ==============================
# -----------------------------
# Blocos comuns / componíveis
# -----------------------------
COMMON_CORE=(
--with-cxx=17
--disable-monolithic
--disable-universal
--disable-mediactrl
--enable-aui
--enable-exceptions
--enable-gui
--enable-html
--enable-richtext
--enable-unicode
--enable-xrc
--with-regex=sys
--with-opengl
)
# --without-odbc
GTK2_BASE=(--with-gtk=2)
GTK3_BASE=(--with-gtk=3)
DEBUG_BASE=(--enable-debug)
RELEASE_BASE=(--disable-debug)
STATIC_BASE=(--disable-shared)
SHARED_BASE=(--enable-shared)
# -----------------------------------------
# Presets recriados por composição (iguais)
# -----------------------------------------
# Debug
GCCBuildDebugGTK3Unicode=(
"${GTK3_BASE[@]}"
"${DEBUG_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugSharedGTK3Unicode=(
"${GTK3_BASE[@]}"
"${DEBUG_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugGTK2Unicode=(
"${GTK2_BASE[@]}"
"${DEBUG_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugSharedGTK2Unicode=(
"${GTK2_BASE[@]}"
"${DEBUG_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
# Release
GCCBuildReleaseGTK3Unicode=(
"${GTK3_BASE[@]}"
"${RELEASE_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseSharedGTK3Unicode=(
"${GTK3_BASE[@]}"
"${RELEASE_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseGTK2Unicode=(
"${GTK2_BASE[@]}"
"${RELEASE_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseSharedGTK2Unicode=(
"${GTK2_BASE[@]}"
"${RELEASE_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
# ======== ESCOLHA EXATAMENTE UMA LINHA A SEGUIR ========
# GCC_OPT=("${GCCBuildDebugGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugSharedGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugSharedGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseGTK3Unicode[@]}")
GCC_OPT=("${GCCBuildReleaseSharedGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseSharedGTK2Unicode[@]}")
# ======== FIM DA ESCOLHA ========
(
cd "${WX_SRC_DIR}"
echo "[INFO] Configurando build..."
./configure \
--prefix="${WX_PREFIX_DIR}" \
${GCC_OPT[*]}
echo "[INFO] Compilando..."
make -j"$(nproc)"
echo "[INFO] Instalando em ${WX_PREFIX_DIR}..."
make install
)
# ==============================
# Opções extras possíveis:
# --with-x11
# --with-expat
# --with-libcurl
# --with-x
# ==============================
echo "[INFO] wxWidgets ${WX_VERSION} instalado com sucesso."
# git clone https://github.com/vslavik/bakefile
# cd bakefile/
# git checkout origin/legacy-0.2-branch
# git switch -c legacy-0.2-branch
# pyenv local 2.7.18
# sed '14d' -i Makefile.am
# sed '35d' -i configure.in
# ./bootstrap #<------------------- RODE no modo WITHOUTBREW
# ./configure --prefix=/home/ivan/wx/linux-wx-3.2.4
# make
# make install
#!/usr/bin/env bash
set -euo pipefail
# ==============================
# Configurações
# ==============================
WX_VERSION="3.3.1"
OS=linux
WX_SRC_DIR="wxWidgets-${WX_VERSION}-${OS}"
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_TAR_BZ2=wxWidgets-${WX_VERSION}.tar.bz2
# if exist path `_d' then remove.
_d=${OS}-wx-${WX_VERSION}
test -d $_d && rm -rf $_d
_d=wxWidgets-${WX_VERSION}-$OS
test -d $_d && rm -rf $_d
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_TAR_BZ2}..."
mkdir ${WX_SRC_DIR}
tar xvjf ${WX_TAR_BZ2} -C ${WX_SRC_DIR} --strip-components=1
# ==============================
# Configuração, compilação e instalação
# ==============================
# -----------------------------
# Blocos comuns / componíveis
# -----------------------------
COMMON_CORE=(
--with-cxx=17
--disable-monolithic
--disable-universal
--disable-mediactrl
--enable-aui
--enable-exceptions
--enable-gui
--enable-html
--enable-richtext
--enable-xrc
--with-regex=sys
--with-opengl
)
# --without-odbc
GTK2_BASE=(--with-gtk=2)
GTK3_BASE=(--with-gtk=3)
DEBUG_BASE=(--enable-debug)
RELEASE_BASE=(--disable-debug)
STATIC_BASE=(--disable-shared)
SHARED_BASE=(--enable-shared)
# -----------------------------------------
# Presets recriados por composição (iguais)
# -----------------------------------------
# Debug
GCCBuildDebugGTK3Unicode=(
"${GTK3_BASE[@]}"
"${DEBUG_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugSharedGTK3Unicode=(
"${GTK3_BASE[@]}"
"${DEBUG_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugGTK2Unicode=(
"${GTK2_BASE[@]}"
"${DEBUG_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildDebugSharedGTK2Unicode=(
"${GTK2_BASE[@]}"
"${DEBUG_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
# Release
GCCBuildReleaseGTK3Unicode=(
"${GTK3_BASE[@]}"
"${RELEASE_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseSharedGTK3Unicode=(
"${GTK3_BASE[@]}"
"${RELEASE_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseGTK2Unicode=(
"${GTK2_BASE[@]}"
"${RELEASE_BASE[@]}"
"${STATIC_BASE[@]}"
"${COMMON_CORE[@]}"
)
GCCBuildReleaseSharedGTK2Unicode=(
"${GTK2_BASE[@]}"
"${RELEASE_BASE[@]}"
"${SHARED_BASE[@]}"
"${COMMON_CORE[@]}"
)
# ======== ESCOLHA EXATAMENTE UMA LINHA A SEGUIR ========
# GCC_OPT=("${GCCBuildDebugGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugSharedGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildDebugSharedGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseGTK3Unicode[@]}")
GCC_OPT=("${GCCBuildReleaseSharedGTK3Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseGTK2Unicode[@]}")
# GCC_OPT=("${GCCBuildReleaseSharedGTK2Unicode[@]}")
# ======== FIM DA ESCOLHA ========
(
cd "${WX_SRC_DIR}"
echo "[INFO] Configurando build..."
./configure \
--prefix="${WX_PREFIX_DIR}" \
${GCC_OPT[*]}
echo "[INFO] Compilando..."
make -j"$(nproc)"
echo "[INFO] Instalando em ${WX_PREFIX_DIR}..."
make install
)
# ==============================
# Opções extras possíveis:
# --with-x11
# --with-expat
# --with-libcurl
# --with-x
# ==============================
echo "[INFO] wxWidgets ${WX_VERSION} instalado com sucesso."
# git clone https://github.com/vslavik/bakefile
# cd bakefile/
# git checkout origin/legacy-0.2-branch
# git switch -c legacy-0.2-branch
# pyenv local 2.7.18
# sed '14d' -i Makefile.am
# sed '35d' -i configure.in
# ./bootstrap #<------------------- RODE no modo WITHOUTBREW
# ./configure --prefix=/home/ivan/wx/linux-wx-3.2.4
# make
# make install
#!/usr/bin/env bash
set -euo pipefail
# ==============================
# Configurações
# ==============================
WX_VERSION="3.2.4"
WX_SRC_DIR="wxWidgets-${WX_VERSION}-linux"
WX_PREFIX_DIR="${HOME}/wx/linux-wx-${WX_VERSION}"
WX_ZIP=wxWidgets-${WX_VERSION}.zip
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_ZIP}..."
unzip ${WX_ZIP} -d ${WX_SRC_DIR}
exit 0
#!/bin/sh
set -xe
# ==============================
# Configurações
# ==============================
WX_VERSION="3.3.1"
OS=windows
WX_SRC_DIR="wxWidgets-${WX_VERSION}-${OS}"
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_TAR_BZ2=wxWidgets-${WX_VERSION}.tar.bz2
# if exist path `_d' then remove.
_d=${OS}-wx-${WX_VERSION}
test -d $_d && rm -rf $_d
_d=wxWidgets-${WX_VERSION}-$OS
test -d $_d && rm -rf $_d
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_TAR_BZ2}..."
mkdir ${WX_SRC_DIR}
tar xvjf ${WX_TAR_BZ2} -C ${WX_SRC_DIR} --strip-components=1
# FIX:
# $ cp /usr/x86_64-w64-mingw32/include/uxtheme.h{,.SAVED}
# $ diff /usr/x86_64-w64-mingw32/include/uxtheme.h{,.SAVED}
# 196c196
# < WTA_NONCLIENT = 1
# ---
# > WTA_NONCLIENT = 1
# 356c356
# < THEMEAPI GetThemeSysFont(HTHEME hTheme,int iFontId,LOGFONTW *plf);
# ---
# > THEMEAPI GetThemeSysFont(HTHEME hTheme,int iFontId,LOGFONT *plf);
# ^
cd ${WX_SRC_DIR} &&
mkdir build_w64 &&
cd build_w64 &&
../configure \
--prefix="${WX_PREFIX_DIR}" \
--host=x86_64-w64-mingw32 \
--build=x86_64-linux \
--disable-shared \
CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 &&
make
exit 0
#!/bin/sh
set -xe
WX_VERSION="3.2.4"
OS=windows
WX_SRC_DIR="wxWidgets-${WX_VERSION}-${OS}"
WX_PREFIX_DIR="${HOME}/wx/${OS}-wx-${WX_VERSION}"
WX_ZIP=wxWidgets-${WX_VERSION}.zip
# if exist path `_d' then remove.
_d=${OS}-wx-${WX_VERSION}
test -d $_d && rm -rf $_d
_d=wxWidgets-${WX_VERSION}-$OS
test -d $_d && rm -rf $_d
# ==============================
# Extração do código-fonte
# ==============================
echo "[INFO] Extraindo ${WX_ZIP}..."
unzip ${WX_ZIP} -d ${WX_SRC_DIR}
# FIX:
# $ cp /usr/x86_64-w64-mingw32/include/uxtheme.h{,.SAVED}
# $ diff /usr/x86_64-w64-mingw32/include/uxtheme.h{,.SAVED}
# 196c196
# < WTA_NONCLIENT = 1
# ---
# > WTA_NONCLIENT = 1
# 356c356
# < THEMEAPI GetThemeSysFont(HTHEME hTheme,int iFontId,LOGFONTW *plf);
# ---
# > THEMEAPI GetThemeSysFont(HTHEME hTheme,int iFontId,LOGFONT *plf);
# ^
cd ${WX_SRC_DIR} &&
mkdir build_w64 &&
cd build_w64 &&
DOCBOOK_TO_MAN="xmlto man --skip-validation" \
../configure \
--prefix="${WX_PREFIX_DIR}" \
--host=x86_64-w64-mingw32 \
--build=x86_64-linux \
--disable-shared \
CFLAGS=-m64 CXXFLAGS=-m64 LDFLAGS=-m64 &&
make
exit 0
#!/usr/bin/env bash
PYENV_VERSION="NEOVIM"
PYTHON_VERSION_PATH="$(pyenv root)/versions/${PYENV_VERSION}"
PYTHON_LIB_PATH="${PYTHON_VERSION_PATH}/lib"
WX_PACKAGES_PATH="${PYTHON_LIB_PATH}/python3.10/site-packages/wx"
echo LD_LIBRARY_PATH=${WX_PACKAGES_PATH} wxglade
LD_LIBRARY_PATH=${WX_PACKAGES_PATH} wxglade
exit 0
#!/usr/bin/env bash
PYENV_VERSION="NEOVIM"
PYTHON_VERSION_PATH="$(pyenv root)/versions/${PYENV_VERSION}"
PYTHON_LIB_PATH="${PYTHON_VERSION_PATH}/lib"
WX_PACKAGES_PATH="${PYTHON_LIB_PATH}/python3.10/site-packages/wx"
echo LD_LIBRARY_PATH=${WX_PACKAGES_PATH} python hello_world.py
LD_LIBRARY_PATH=${WX_PACKAGES_PATH} python hello_world.py
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment