mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-18 10:56:11 +00:00
Use cutter-deps on Windows (#1286)
Also enable python plugins for Windows builds
This commit is contained in:
parent
46bb07d725
commit
8061120657
@ -32,6 +32,8 @@ environment:
|
||||
|
||||
install:
|
||||
- ps: $env:path = ($env:path -split ";").Where({!($_ -like "*Microsoft SQL Server*")}) -join ";"
|
||||
- cmd: C:\msys64\usr\bin\bash -lc "cd $APPVEYOR_BUILD_FOLDER && scripts/fetch_deps.sh"
|
||||
- cmd: set "CUTTER_DEPS_DIR=%APPVEYOR_BUILD_FOLDER%\cutter-deps"
|
||||
- cmd: set "PATH=%CD%;%PYTHON%;%PATH%"
|
||||
- cmd: call "%VSVARSALLPATH%" %ARCH%
|
||||
- cmd: if "%ARCH%" == "x64" ( set "PATH=%QT64PATH%\bin;%PATH%" ) else ( set "PATH=%QT32PATH%\bin;%PATH%" )
|
||||
@ -47,7 +49,7 @@ before_build:
|
||||
|
||||
# Build config
|
||||
build_script:
|
||||
- cmd: if defined QMAKE ( call prepare_r2.bat && call build.bat CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=false CUTTER_ENABLE_JUPYTER=true CUTTER_ENABLE_QTWEBENGINE=false CUTTER_APPVEYOR_R2DEC=true )
|
||||
- cmd: if defined QMAKE ( call prepare_r2.bat && call build.bat CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=false CUTTER_ENABLE_JUPYTER=true CUTTER_ENABLE_QTWEBENGINE=false CUTTER_APPVEYOR_R2DEC=true CUTTER_ENABLE_PYTHON=true CUTTER_ENABLE_PYTHON_BINDINGS=true SHIBOKEN_EXECUTABLE="%CUTTER_DEPS_DIR%\pyside\bin\shiboken2.exe" SHIBOKEN_INCLUDEDIR="%CUTTER_DEPS_DIR%/pyside/include/shiboken2" SHIBOKEN_LIBRARY="%CUTTER_DEPS_DIR%/pyside/lib/shiboken2.cp36-win_amd64.lib" PYSIDE_INCLUDEDIR="%CUTTER_DEPS_DIR%/pyside/include/PySide2" PYSIDE_LIBRARY="%CUTTER_DEPS_DIR%/pyside/lib/pyside2.cp36-win_amd64.lib" PYSIDE_TYPESYSTEMS="%CUTTER_DEPS_DIR%/pyside/share/PySide2/typesystems")
|
||||
- cmd: if defined MESON ( python meson.py --release --dist=%ARTIFACT_PATH% --backend=%BACKEND% --python --jupyter )
|
||||
|
||||
after_build:
|
||||
@ -67,6 +69,9 @@ after_build:
|
||||
- cmd: copy python_embed\*.pyd "%ARTIFACT_PATH%\python36\"
|
||||
- cmd: copy python_embed\sqlite3.dll "%ARTIFACT_PATH%\python36\"
|
||||
- cmd: copy python_embed\python*.dll "%ARTIFACT_PATH%\"
|
||||
- cmd: xcopy "%CUTTER_DEPS_DIR%\pyside\lib\site-packages" "%ARTIFACT_PATH%\python36\site-packages" /e /i /h
|
||||
- cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\shiboken2.cp36-win_amd64.dll" "%ARTIFACT_PATH%\"
|
||||
- cmd: copy "%CUTTER_DEPS_DIR%\pyside\bin\pyside2.cp36-win_amd64.dll" "%ARTIFACT_PATH%\"
|
||||
- cmd: powershell -Command "[System.IO.File]::WriteAllLines(\"%ARTIFACT_PATH%\python36._pth\", \"python36`r`npython36\python36.zip`r`npython36\site-packages\")"
|
||||
|
||||
# Tests
|
||||
|
@ -22,9 +22,9 @@ FOR %%i in (src\translations\*.ts) DO lrelease %%i
|
||||
CD %BUILDDIR%
|
||||
|
||||
ECHO Building cutter
|
||||
qmake %* ..\src\cutter.pro -config release -tp vc
|
||||
qmake %* ..\src\cutter.pro -config release
|
||||
IF !ERRORLEVEL! NEQ 0 EXIT /B 1
|
||||
msbuild /m cutter.vcxproj /p:Configuration=Release
|
||||
nmake
|
||||
IF !ERRORLEVEL! NEQ 0 EXIT /B 1
|
||||
|
||||
ECHO Deploying cutter
|
||||
|
@ -4,25 +4,35 @@ cd $(dirname "${BASH_SOURCE[0]}")/..
|
||||
mkdir -p cutter-deps && cd cutter-deps
|
||||
|
||||
LINUX_FILE="cutter-deps-linux.tar.gz"
|
||||
LINUX_MD5=b52ab4f06cb9e4b92372022c37920bf1
|
||||
LINUX_URL=https://github.com/radareorg/cutter-deps/releases/download/v6/cutter-deps-linux.tar.gz
|
||||
LINUX_MD5=0d20ec9217bed56098b78e9031b544ab
|
||||
LINUX_URL=https://github.com/radareorg/cutter-deps/releases/download/v8/cutter-deps-linux.tar.gz
|
||||
|
||||
MACOS_FILE="cutter-deps-macos.tar.gz"
|
||||
MACOS_MD5=85b663ea73b80663a532dfafe998905d
|
||||
MACOS_URL=https://github.com/radareorg/cutter-deps/releases/download/v6/cutter-deps-macos.tar.gz
|
||||
MACOS_MD5=2763c59a9917a0f7c88995d4b77ec209
|
||||
MACOS_URL=https://github.com/radareorg/cutter-deps/releases/download/v8/cutter-deps-macos.tar.gz
|
||||
|
||||
UNAME_S="$(uname -s)"
|
||||
if [ "$UNAME_S" == "Linux" ]; then
|
||||
FILE="${LINUX_FILE}"
|
||||
MD5="${LINUX_MD5}"
|
||||
URL="${LINUX_URL}"
|
||||
elif [ "$UNAME_S" == "Darwin" ]; then
|
||||
FILE="${MACOS_FILE}"
|
||||
MD5="${MACOS_MD5}"
|
||||
URL="${MACOS_URL}"
|
||||
WIN_FILE="cutter-deps-win.tar.gz"
|
||||
WIN_MD5=74aa2b35a2c87ceba81c8049d702f63d
|
||||
WIN_URL=https://github.com/radareorg/cutter-deps/releases/download/v8/cutter-deps-win.tar.gz
|
||||
|
||||
if [ "$OS" == "Windows_NT" ]; then
|
||||
FILE="${WIN_FILE}"
|
||||
MD5="${WIN_MD5}"
|
||||
URL="${WIN_URL}"
|
||||
else
|
||||
echo "Unsupported Platform: $UNAME_S"
|
||||
exit 1
|
||||
UNAME_S="$(uname -s)"
|
||||
if [ "$UNAME_S" == "Linux" ]; then
|
||||
FILE="${LINUX_FILE}"
|
||||
MD5="${LINUX_MD5}"
|
||||
URL="${LINUX_URL}"
|
||||
elif [ "$UNAME_S" == "Darwin" ]; then
|
||||
FILE="${MACOS_FILE}"
|
||||
MD5="${MACOS_MD5}"
|
||||
URL="${MACOS_URL}"
|
||||
else
|
||||
echo "Unsupported Platform: uname -s => $UNAME_S, \$OS => $OS"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
curl -L "$URL" -o "$FILE" || exit 1
|
||||
@ -39,5 +49,8 @@ else
|
||||
fi
|
||||
|
||||
tar -xf "$FILE" || exit 1
|
||||
./relocate.sh || exit 1
|
||||
|
||||
if [ -f relocate.sh ]; then
|
||||
./relocate.sh || exit 1
|
||||
fi
|
||||
|
||||
|
@ -96,7 +96,7 @@ win32 {
|
||||
# Generate debug symbols in release mode
|
||||
QMAKE_CXXFLAGS_RELEASE += -Zi # Compiler
|
||||
QMAKE_LFLAGS_RELEASE += /DEBUG # Linker
|
||||
|
||||
|
||||
# Multithreaded compilation
|
||||
QMAKE_CXXFLAGS += -MP
|
||||
}
|
||||
@ -124,7 +124,8 @@ include(lib_radare2.pri)
|
||||
|
||||
CUTTER_ENABLE_PYTHON {
|
||||
win32 {
|
||||
PYTHON_EXECUTABLE = $$quote($$system("where python"))
|
||||
PYTHON_EXECUTABLE = $$system("where python", lines)
|
||||
PYTHON_EXECUTABLE = $$first(PYTHON_EXECUTABLE)
|
||||
pythonpath = $$replace(PYTHON_EXECUTABLE, ".exe ", ".exe;")
|
||||
pythonpath = $$section(pythonpath, ";", 0, 0)
|
||||
pythonpath = $$clean_path($$dirname(pythonpath))
|
||||
@ -147,10 +148,10 @@ CUTTER_ENABLE_PYTHON {
|
||||
}
|
||||
|
||||
CUTTER_ENABLE_PYTHON_BINDINGS {
|
||||
!packagesExist(shiboken2) {
|
||||
isEmpty(SHIBOKEN_EXECUTABLE):!packagesExist(shiboken2) {
|
||||
error("ERROR: Shiboken2, which is required to build the Python Bindings, could not be found. Make sure it is available to pkg-config.")
|
||||
}
|
||||
!packagesExist(pyside2) {
|
||||
isEmpty(PYSIDE_LIBRARY):!packagesExist(pyside2) {
|
||||
error("ERROR: PySide2, which is required to build the Python Bindings, could not be found. Make sure it is available to pkg-config.")
|
||||
}
|
||||
win32 {
|
||||
@ -169,25 +170,50 @@ CUTTER_ENABLE_PYTHON {
|
||||
for(path, INCLUDEPATH) {
|
||||
BINDINGS_INCLUDE_DIRS += $$absolute_path("$$path")
|
||||
}
|
||||
BINDINGS_INCLUDE_DIRS = $$join(BINDINGS_INCLUDE_DIRS, ":")
|
||||
PYSIDE_TYPESYSTEMS = $$system("pkg-config --variable=typesystemdir pyside2")
|
||||
PYSIDE_INCLUDEDIR = $$system("pkg-config --variable=includedir pyside2")
|
||||
|
||||
win32 {
|
||||
PATH_SEP = ";"
|
||||
} else {
|
||||
PATH_SEP = ":"
|
||||
}
|
||||
BINDINGS_INCLUDE_DIRS = $$join(BINDINGS_INCLUDE_DIRS, $$PATH_SEP)
|
||||
|
||||
isEmpty(SHIBOKEN_EXECUTABLE) {
|
||||
SHIBOKEN_EXECUTABLE = $$system("pkg-config --variable=generator_location shiboken2")
|
||||
}
|
||||
|
||||
isEmpty(PYSIDE_TYPESYSTEMS) {
|
||||
PYSIDE_TYPESYSTEMS = $$system("pkg-config --variable=typesystemdir pyside2")
|
||||
}
|
||||
isEmpty(PYSIDE_INCLUDEDIR) {
|
||||
PYSIDE_INCLUDEDIR = $$system("pkg-config --variable=includedir pyside2")
|
||||
}
|
||||
|
||||
QMAKE_SUBSTITUTES += bindings/bindings.txt.in
|
||||
SHIBOKEN_EXECUTABLE = $$system("pkg-config --variable=generator_location shiboken2")
|
||||
|
||||
SHIBOKEN_OPTIONS = --project-file="$${BINDINGS_BUILD_DIR}/bindings.txt"
|
||||
win32:SHIBOKEN_OPTIONS += --avoid-protected-hack
|
||||
bindings.target = bindings_target
|
||||
bindings.commands = "$${SHIBOKEN_EXECUTABLE}" --project-file="$${BINDINGS_BUILD_DIR}/bindings.txt"
|
||||
bindings.commands = "$${SHIBOKEN_EXECUTABLE}" $${SHIBOKEN_OPTIONS}
|
||||
QMAKE_EXTRA_TARGETS += bindings
|
||||
GENERATED_SOURCES += $${BINDINGS_SOURCE}
|
||||
INCLUDEPATH += "$${BINDINGS_BUILD_DIR}/CutterBindings"
|
||||
PRE_TARGETDEPS += bindings_target
|
||||
macx {
|
||||
GENERATED_SOURCES += $${BINDINGS_SOURCE}
|
||||
|
||||
INCLUDEPATH += "$${BINDINGS_BUILD_DIR}/CutterBindings"
|
||||
|
||||
win32:DEFINES += WIN32_LEAN_AND_MEAN
|
||||
|
||||
!isEmpty(PYSIDE_LIBRARY) {
|
||||
LIBS += "$$SHIBOKEN_LIBRARY" "$$PYSIDE_LIBRARY"
|
||||
INCLUDEPATH += "$$SHIBOKEN_INCLUDEDIR"
|
||||
} else:macx {
|
||||
# Hack needed because with regular PKGCONFIG qmake will mess up everything
|
||||
QMAKE_CXXFLAGS += $$system("pkg-config --cflags shiboken2 pyside2")
|
||||
LIBS += $$system("pkg-config --libs shiboken2 pyside2")
|
||||
} else {
|
||||
PKGCONFIG += shiboken2 pyside2
|
||||
}
|
||||
INCLUDEPATH += "$$PYSIDE_INCLUDEDIR/QtCore" "$$PYSIDE_INCLUDEDIR/QtWidgets" "$$PYSIDE_INCLUDEDIR/QtGui"
|
||||
INCLUDEPATH += "$$PYSIDE_INCLUDEDIR" "$$PYSIDE_INCLUDEDIR/QtCore" "$$PYSIDE_INCLUDEDIR/QtWidgets" "$$PYSIDE_INCLUDEDIR/QtGui"
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user