Skip to content

Commit

Permalink
Merge pull request #395 from rwxayheee/use_msbuild
Browse files Browse the repository at this point in the history
Rewrite compile.bat and Update GA workflow to build binaries on Windows: Use Git Version, Use MSBuild, and Allow custom Boost and MSBuild paths
  • Loading branch information
joanimato authored Feb 15, 2025
2 parents 622ed8b + 3ba69f1 commit 677c037
Show file tree
Hide file tree
Showing 4 changed files with 148 additions and 45 deletions.
37 changes: 30 additions & 7 deletions .github/workflows/compile-binaries.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ on:

jobs:
compile_binaries:
name: Build wheels on ${{ matrix.os }} ${{ matrix.arch }}
name: Compile binaries on ${{ matrix.os }} ${{ matrix.arch }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
Expand All @@ -37,21 +37,22 @@ jobs:
- os: macos-latest
arch: aarch64
- os: windows-2019
arch: x64

steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Compile Vina for Linux x86-64
- name: Compile Vina for linux x86-64
if: matrix.os == 'ubuntu-latest' && matrix.arch == 'x86_64'
run: |
sudo apt-get update -y
sudo apt-get install -y libboost-all-dev swig
cd ./build/linux/release
make
- name: Compile Vina for Linux aarch64
if: matrix.os == 'ubuntu-latest' && matrix.arch != 'x86_64'
- name: Compile Vina for linux ${{ matrix.arch }}
if: matrix.os == 'ubuntu-latest' && matrix.arch == 'aarch64'
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.arch }}
Expand Down Expand Up @@ -80,16 +81,38 @@ jobs:
cd ./build/mac/release
make
- name: Compile Vina for Windows x64
if: matrix.os == 'windows-2019'
if: matrix.os == 'windows-2019' && matrix.arch == 'x64'
run: |
$Url = "https://sourceforge.net/projects/boost/files/boost-binaries/1.77.0/boost_1_77_0-msvc-14.2-64.exe"
# Download boost binary
$Url = "https://sourceforge.net/projects/boost/files/boost-binaries/1.83.0/boost_1_83_0-msvc-14.2-64.exe"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$wcl=(New-Object System.Net.WebClient)
$wcl.Headers.Add("user-agent", "Wget/1.21.0")
$wcl.DownloadFile($Url, "$env:TEMP\boost.exe")
Start-Process -Wait -FilePath "$env:TEMP\boost.exe" "/SILENT","/SP-","/SUPPRESSMSGBOXES"
# Install Git using Chocolatey (if not already installed)
if (-Not (Get-Command git -ErrorAction SilentlyContinue)) {
choco install git -y --no-progress
}
# Fetch all tags
if ($(git rev-parse --is-shallow-repository) -eq "true") {
git fetch --prune --unshallow --tags 2>$null
} else {
git fetch --prune --tags 2>$null
}
# Get the nearest tag, fallback to commit hash if no tag exists
$env:GIT_VERSION = $(git describe --tags --abbrev=7 --dirty --always 2>$null)
# Ensure fallback value if Git describe fails
if (-not $env:GIT_VERSION) { $env:GIT_VERSION = "0.0.0-unknown" }
echo "GIT_VERSION=$env:GIT_VERSION" >> $env:GITHUB_ENV
# Execute compile.bat (in cmd)
cd .\build\windows
.\compile.bat
.\compile.bat Release x64 "C:\local\boost_1_83_0\lib64-msvc-14.2" "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Current\Bin\MSBuild.exe" "$env:GIT_VERSION"
shell: powershell
- name: Upload artifacts for inspection
uses: actions/upload-artifact@v4
Expand Down
86 changes: 80 additions & 6 deletions build/windows/compile.bat
Original file line number Diff line number Diff line change
@@ -1,10 +1,84 @@
@echo off
setlocal enabledelayedexpansion

set target="Release|x64"
IF "%~1"=="" GOTO noparms
set target="%~1"
:noparms
:: Default settings
set config=Release
set platform=x64

for /f "usebackq delims=" %%s in (`"%programfiles(x86)%\Microsoft Visual Studio\Installer\vswhere" -latest -property installationPath`) do set devenv="%%s\Common7\IDE\devenv.com"
:: Default location of MSBuild.exe
set "msbuild_path=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\MSBuild\Current\Bin\amd64\MSBuild.exe"

%devenv% AutoDock-Vina.sln /Build %target%
:: Allow user to override with command-line arguments
if NOT "%~1"=="" set config=%~1
if NOT "%~2"=="" set platform=%~2

:: Check if Boost library is provided
if NOT "%~3"=="" (
set "boost_lib=%~3"
) else (
:: Default Boost library path based on choice of platform
if /i "%platform%"=="x64" (
set boost_lib=C:\local\boost_1_83_0\lib64-msvc-14.3
) else (
set boost_lib=C:\local\boost_1_83_0\lib32-msvc-14.3
)
)

:: Validate Boost library path
if NOT exist "%boost_lib%" (
echo ERROR: Boost library files not found at "%boost_lib%" for %platform%!
exit /b 1
)
echo Using Boost library: "%boost_lib%"

:: Check if MSBuild path is provided
if NOT "%~4"=="" (
set "msbuild_path=%~4"
)

:: Validate MSBuild path
if NOT exist "%msbuild_path%" (
echo WARNING: MSBuild not found at "%msbuild_path%". Searching...

set msbuild_path=

:: Define possible search locations
set "search_dirs=%ProgramFiles(x86)% %ProgramFiles% %LocalAppData%"

:: Define expected MSBuild paths
set "expect_paths=MSBuild\Current\Bin\MSBuild.exe"
if /i "%platform%"=="x64" set "expect_paths=MSBuild\Current\Bin\amd64\MSBuild.exe MSBuild\Current\Bin\MSBuild.exe"

:: Loop through search directories to find MSBuild
for %%D in (%search_dirs%) do (
for %%P in (%expect_paths%) do (
for /f "delims=" %%A in ('cmd /c dir "%%D\Microsoft Visual Studio\" /s /b 2^>nul') do (
if exist "%%A\%expect_paths%" (
set "msbuild_path=%%A\%expect_paths%"
goto found
)
)
)
)

:: If MSBuild.exe is not found
if not defined msbuild_path (
echo ERROR: MSBuild.exe not found for %platform%!
exit /b 1
)
)

:: If MSBuild.exe is found
:found
echo Using MSBuild: "%msbuild_path%"

:: Retrieve Git Version
if NOT "%~5"=="" set "GIT_VERSION=%~5"
if "%GIT_VERSION%"=="" set GIT_VERSION=0.0.0-unknown

:: Print Git Version
echo Program Version from Git: "%GIT_VERSION%"

:: Run MSBuild
call "%msbuild_path%" AutoDock-Vina.sln /p:Configuration=%config% /p:Platform=%platform% /p:BoostLibraryPath="%boost_lib%" /p:GIT_VERSION="%GIT_VERSION%" /m
endlocal
35 changes: 19 additions & 16 deletions build/windows/vina.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -31,29 +31,32 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v142</PlatformToolset>
<PlatformToolset>$(DefaultPlatformToolset)</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet>
</PropertyGroup>
<PropertyGroup>
<BoostRootPath>$([System.IO.Path]::GetDirectoryName($(BoostLibraryPath)))</BoostRootPath>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
Expand Down Expand Up @@ -96,8 +99,8 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;VERSION="v1.2.5";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>C:\local\boost_1_77_0;..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_CONSOLE;VERSION="$(GIT_VERSION)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(BoostIncludePath);..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<DisableSpecificWarnings>4244;4267</DisableSpecificWarnings>
Expand All @@ -106,7 +109,7 @@
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>C:\local\boost_1_77_0\lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(BoostLibraryPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
Expand All @@ -116,8 +119,8 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;VERSION="v1.2.5";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>C:\local\boost_1_77_0;..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_CONSOLE;VERSION="$(GIT_VERSION)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(BoostIncludePath);..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DisableSpecificWarnings>4244;4267</DisableSpecificWarnings>
Expand All @@ -126,7 +129,7 @@
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>C:\local\boost_1_77_0\lib32-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(BoostLibraryPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand All @@ -136,8 +139,8 @@
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;VERSION="v1.2.5";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>C:\local\boost_1_77_0;..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>_DEBUG;_CONSOLE;VERSION="$(GIT_VERSION)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(BoostIncludePath);..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreadedDebug</RuntimeLibrary>
<DisableSpecificWarnings>4244;4267</DisableSpecificWarnings>
Expand All @@ -146,7 +149,7 @@
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>C:\local\boost_1_77_0\lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(BoostLibraryPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
Expand All @@ -156,8 +159,8 @@
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;VERSION="v1.2.5";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>C:\local\boost_1_77_0;..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>NDEBUG;_CONSOLE;VERSION="$(GIT_VERSION)";%(PreprocessorDefinitions)</PreprocessorDefinitions>
<AdditionalIncludeDirectories>$(BoostRootPath);..\..\src\lib;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<ConformanceMode>true</ConformanceMode>
<RuntimeLibrary>MultiThreaded</RuntimeLibrary>
<DisableSpecificWarnings>4244;4267</DisableSpecificWarnings>
Expand All @@ -166,7 +169,7 @@
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
<AdditionalLibraryDirectories>C:\local\boost_1_77_0\lib64-msvc-14.2;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<AdditionalLibraryDirectories>$(BoostLibraryPath);%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
<GenerateDebugInformation>true</GenerateDebugInformation>
Expand Down
Loading

0 comments on commit 677c037

Please sign in to comment.