1+ # .github/workflows/build.yml
2+
3+ name : Build Sierra Chart Study DLL
4+
5+ on :
6+ push :
7+ branches : [ "main" ]
8+ pull_request :
9+ branches : [ "main" ]
10+
11+ env :
12+ PROJECT_NAME : scsf_StrategyOptimizer
13+ # IMPORTANT: You must create an 'ACSIL' folder in your repository
14+ # and add the sierrachart.h header file to it.
15+ ACSIL_DIR : ACSIL
16+
17+ jobs :
18+ build :
19+ runs-on : windows-latest
20+ strategy :
21+ matrix :
22+ configuration : [Debug, Release]
23+
24+ steps :
25+ - name : Checkout repository
26+ uses : actions/checkout@v3
27+
28+ - name : Set up MSVC developer command prompt
29+ uses : ilammy/msvc-dev-cmd@v1
30+
31+ - name : Set up Build Variables
32+ id : build_vars
33+ shell : bash
34+ run : |
35+ if [ "${{ matrix.configuration }}" == "Debug" ]; then
36+ echo "COMPILER_FLAGS=/c /I ${{ env.ACSIL_DIR }} /Zi /W3 /WX- /Od /D _DEBUG /D WIN32 /D _WINDOWS /D _USRDLL /D _WINDLL /Gm- /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Gd /TP" >> $GITHUB_ENV
37+ echo "LINKER_FLAGS=/DLL /MACHINE:X86 /INCREMENTAL /DYNAMICBASE /NXCOMPAT /DEBUG Gdi32.lib User32.lib Shell32.lib" >> $GITHUB_ENV
38+ elif [ "${{ matrix.configuration }}" == "Release" ]; then
39+ echo "COMPILER_FLAGS=/c /I ${{ env.ACSIL_DIR }} /W3 /WX- /O2 /D NDEBUG /D WIN32 /D _WINDOWS /D _USRDLL /D _WINDLL /Gm- /EHsc /MD /GS /fp:precise /Zc:wchar_t /Zc:forScope /Zc:inline /Gd /TP" >> $GITHUB_ENV
40+ echo "LINKER_FLAGS=/DLL /MACHINE:X86 /DYNAMICBASE /NXCOMPAT /OPT:REF /OPT:ICF Gdi32.lib User32.lib Shell32.lib" >> $GITHUB_ENV
41+ fi
42+
43+ - name : Build ${{ matrix.configuration }}
44+ run : |
45+ $CPP_FILES = Get-ChildItem -Path . -Filter *.cpp | ForEach-Object { $_.FullName }
46+ $INTERMEDIATE_DIR = "build\${{ matrix.configuration }}"
47+ $OUTPUT_DLL = "$INTERMEDIATE_DIR\${{ env.PROJECT_NAME }}.dll"
48+
49+ New-Item -ItemType Directory -Force -Path $INTERMEDIATE_DIR
50+
51+ cl.exe $env:COMPILER_FLAGS /Fo"$INTERMEDIATE_DIR\\" /Fd"$INTERMEDIATE_DIR\vc143.pdb" $CPP_FILES
52+ link.exe /OUT:"$OUTPUT_DLL" $env:LINKER_FLAGS "$INTERMEDIATE_DIR\*.obj"
53+
54+ - name : Upload Artifact
55+ uses : actions/upload-artifact@v3
56+ with :
57+ name : ${{ env.PROJECT_NAME }}-${{ matrix.configuration }}
58+ path : build/${{ matrix.configuration }}/${{ env.PROJECT_NAME }}.dll
0 commit comments