diff --git a/.github/scripts/build_windows_executables.bat b/.github/scripts/build_windows_executables.bat new file mode 100644 index 0000000000..70257fcb69 --- /dev/null +++ b/.github/scripts/build_windows_executables.bat @@ -0,0 +1,42 @@ +@call "C:\Program Files (x86)\Intel\oneAPI\setvars-vcvarsall.bat" %VS_VER% + +for /f "tokens=* usebackq" %%f in (`dir /b "C:\Program Files (x86)\Intel\oneAPI\compiler\" ^| findstr /V latest ^| sort`) do @set "LATEST_VERSION=%%f" +@call "C:\Program Files (x86)\Intel\oneAPI\compiler\%LATEST_VERSION%\env\vars.bat" + +@REM Make the script that generates the git version description ignore dirty +@REM since building the Visual Studio projects modifies files +powershell -command "(Get-Content -Path '.\vs-build\CreateGitVersion.bat') -replace '--dirty', '' | Set-Content -Path '.\vs-build\CreateGitVersion.bat'" + +echo on + +@REM Build all solutions +devenv vs-build/AeroDisk/AeroDisk_Driver.sln /Build "Release|x64" +devenv vs-build/AeroDyn/AeroDyn_Driver.sln /Build "Release|x64" +devenv vs-build/AeroDyn/AeroDyn_Driver.sln /Build "Release_OpenMP|x64" +devenv vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.sln /Build "Release|x64" +devenv vs-build/AeroDyn_Inflow_c_binding/AeroDyn_Inflow_c_binding.sln /Build "Release_OpenMP|x64" +devenv vs-build/BeamDyn/BeamDyn-w-registry.sln /Build "Release|x64" +devenv vs-build/Discon/Discon.sln /Build "Release|x64" +devenv vs-build/FAST-farm/FAST-Farm.sln /Build "Release|x64" +devenv vs-build/FAST-farm/FAST-Farm.sln /Build "Release_OpenMP|x64" +devenv vs-build/HydroDyn/HydroDynDriver.sln /Build "Release|x64" +devenv vs-build/HydroDyn_c_binding/HydroDyn_c_binding.sln /Build "Release|x64" +devenv vs-build/InflowWind_c_binding/InflowWind_c_binding.sln /Build "Release|x64" +devenv vs-build/InflowWind/InflowWind_driver.sln /Build "Release|x64" +devenv vs-build/InflowWind/InflowWind_driver.sln /Build "Release_OpenMP|x64" +devenv vs-build/MoorDyn/MoorDynDriver.sln /Build "Release|x64" +devenv vs-build/MoorDyn_c_binding/MoorDyn_c_binding.sln /Build "Release|x64" +devenv vs-build/FAST/FAST.sln /Build "Release|x64" +devenv vs-build/SeaState/SeaStateDriver.sln /Build "Release|x64" +devenv vs-build/SimpleElastoDyn/SimpleElastoDyn_Driver.sln /Build "Release|x64" +devenv vs-build/SubDyn/SubDyn.sln /Build "Release|x64" +devenv vs-build/TurbSim/TurbSim.vfproj /Build "Release|x64" +devenv vs-build/UnsteadyAero/UnsteadyAero.sln /Build "Release|x64" + +@REM Build MATLAB solution last +devenv vs-build/FAST/FAST.sln /Build "Release_Matlab|x64" + +@REM Copy controllers to bin directory +xcopy .\reg_tests\r-test\glue-codes\openfast\5MW_Baseline\ServoData\*.dll .\build\bin\ /y + +exit /b %ERRORLEVEL% diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 87240dbce4..adf3513704 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -11,11 +11,20 @@ on: types: - released + push: + paths-ignore: + - 'LICENSE' + - 'README.rst' + - 'docs/**' + - 'share/**' jobs: + + # Disabled as publish-to-pypi is working correctly publish-to-pypi-test: runs-on: ubuntu-latest - if: github.event_name == 'workflow_dispatch' + if: false + # if: github.event_name == 'workflow_dispatch' steps: - uses: actions/checkout@v3 @@ -44,7 +53,7 @@ jobs: publish-to-pypi: runs-on: ubuntu-latest - if: github.event_name == 'release' + if: github.event_name == 'release' steps: - uses: actions/checkout@v3 @@ -71,9 +80,11 @@ jobs: run: hatch publish working-directory: openfast_io + # Disabled as it fails due to huge memory requirements docker-build-and-push: runs-on: ubuntu-latest - if: github.event_name == 'release' + if: false + # if: github.event_name == 'release' timeout-minutes: 500 env: DOCKERFILE_PATH: share/docker/Dockerfile @@ -123,3 +134,87 @@ jobs: push: true cache-from: type=gha cache-to: type=gha,mode=max + + build-windows-executables: + runs-on: windows-2022 + if: github.event_name == 'workflow_dispatch' || github.event_name == 'release' + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + fetch-depth: 0 + + - name: Install Intel oneAPI BaseKit (Windows) + shell: cmd + env: + URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7dff44ba-e3af-4448-841c-0d616c8da6e7/w_BaseKit_p_2024.1.0.595_offline.exe + COMPONENTS: intel.oneapi.win.mkl.devel + run: | + curl.exe --output %TEMP%\webimage.exe --url %URL% --retry 5 --retry-delay 5 + start /b /wait %TEMP%\webimage.exe -s -x -f webimage_extracted --log extract.log + del %TEMP%\webimage.exe + webimage_extracted\bootstrapper.exe -s --action install --components=%COMPONENTS% --eula=accept -p=NEED_VS2017_INTEGRATION=0 -p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=1 --log-dir=. + set installer_exit_code=%ERRORLEVEL% + rd /s/q "webimage_extracted" + exit /b %installer_exit_code% + + - name: Install Intel oneAPI HPCKit (Windows) + shell: cmd + env: + URL: https://registrationcenter-download.intel.com/akdlm/IRC_NAS/c95a3b26-fc45-496c-833b-df08b10297b9/w_HPCKit_p_2024.1.0.561_offline.exe + COMPONENTS: intel.oneapi.win.ifort-compiler + run: | + curl.exe --output %TEMP%\webimage.exe --url %URL% --retry 5 --retry-delay 5 + start /b /wait %TEMP%\webimage.exe -s -x -f webimage_extracted --log extract.log + del %TEMP%\webimage.exe + webimage_extracted\bootstrapper.exe -s --action install --components=%COMPONENTS% --eula=accept -p=NEED_VS2017_INTEGRATION=0 -p=NEED_VS2019_INTEGRATION=0 -p=NEED_VS2022_INTEGRATION=1 --log-dir=. + set installer_exit_code=%ERRORLEVEL% + rd /s/q "webimage_extracted" + exit /b %installer_exit_code% + + - name: Set up MATLAB + id: setup-matlab + uses: matlab-actions/setup-matlab@v2 + with: + products: Simulink + + - name: Build Executables + env: + MATLAB_ROOT: ${{ steps.setup-matlab.outputs.matlabroot }} + run: .github/scripts/build_windows_executables.bat + + - name: Test version output + run: | + build/bin/openfast_x64.exe -h + build/bin/TurbSim_x64.exe -h + build/bin/FAST.Farm_x64.exe -h + + - name: Build MATLAB Mex File + uses: matlab-actions/run-command@v2 + with: + command: | + mexname = 'FAST_SFunc'; + mex('-largeArrayDims', ... + '-v', ... + ['-L' fullfile('build','bin')], ... + ['-I' fullfile('modules','openfast-library','src')], ... % "FAST_Library.h" + ['-I' fullfile('modules','supercontroller','src')], ... % "SuperController_Types.h" + ['-I' fullfile('modules','externalinflow','src')], ... % "ExternalInflow_Types.h" + ['-I' fullfile('modules','extloads','src')], ... % "ExtLoadsDX_Types.h" + ['-I' fullfile(matlabroot,'simulink','include')], ... + ['-I' fullfile(matlabroot,'extern','include')], ... + ['COMPFLAGS=$COMPFLAGS -MT -DS_FUNCTION_NAME=' mexname], ... + '-lOpenFAST-Simulink_x64', ... + '-outdir', fullfile('build','bin'), ... + '-output', mexname, ... + fullfile('glue-codes','simulink','src','FAST_SFunc.c')); + + - name: Upload executables + uses: actions/upload-artifact@v4 + with: + name: openfast-binaries + path: | + build/bin/*.exe + build/bin/*.dll + build/bin/*.mexw64 diff --git a/reg_tests/r-test b/reg_tests/r-test index df9ee7dae9..54a2998d96 160000 --- a/reg_tests/r-test +++ b/reg_tests/r-test @@ -1 +1 @@ -Subproject commit df9ee7dae97c20aa9664f11dc9daafd73f12ab3a +Subproject commit 54a2998d96908461eeb554f756bfc9da69055804 diff --git a/vs-build/OpenFAST-Simulink/OpenFAST-Simulink.vfproj b/vs-build/OpenFAST-Simulink/OpenFAST-Simulink.vfproj index 1b7110e1d7..655b2435a6 100644 --- a/vs-build/OpenFAST-Simulink/OpenFAST-Simulink.vfproj +++ b/vs-build/OpenFAST-Simulink/OpenFAST-Simulink.vfproj @@ -16,7 +16,7 @@ - + @@ -36,7 +36,7 @@ - +