-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcompile.bat
More file actions
90 lines (77 loc) · 3.3 KB
/
Copy pathcompile.bat
File metadata and controls
90 lines (77 loc) · 3.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
@echo off
:: FastJava Native DLL Compiler Script
:: Auto-detects Visual Studio and JAVA_HOME
echo ========================================
echo FastAudioProcess Native Library Builder
echo ========================================
:: Configuration
set LIB_NAME=fastaudioprocess
:: Try to find VS using vswhere.exe (most reliable)
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
if exist "%VSWHERE%" (
for /f "usebackq tokens=*" %%i in (`"%VSWHERE%" -latest -products * -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -property installationPath`) do (
set "VS_PATH=%%i"
)
)
:: Fallback: Check standard paths if vswhere didn't work
if not defined VS_PATH (
if exist "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" (
set "VS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Community"
) else if exist "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvars64.bat" (
set "VS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Enterprise"
) else if exist "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Auxiliary\Build\vcvars64.bat" (
set "VS_PATH=C:\Program Files\Microsoft Visual Studio\2022\Professional"
) else if exist "C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Auxiliary\Build\vcvars64.bat" (
set "VS_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools"
) else if exist "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvars64.bat" (
set "VS_PATH=C:\Program Files (x86)\Microsoft Visual Studio\2019\Community"
)
)
if not defined VS_PATH (
echo ERROR: Visual Studio not found!
echo Please install Visual Studio 2019 or 2022 with "Desktop development with C++"
exit /b 1
)
echo Found Visual Studio at: %VS_PATH%
:: Try to detect JAVA_HOME if not set
if not defined JAVA_HOME (
if exist "C:\Program Files\Java\jdk-25.0.3" (
set "JAVA_HOME=C:\Program Files\Java\jdk-25.0.3"
) else if exist "C:\Program Files\Java\jdk-21.0.11" (
set "JAVA_HOME=C:\Program Files\Java\jdk-21.0.11"
) else if exist "C:\Program Files\Java\jdk-25" (
set "JAVA_HOME=C:\Program Files\Java\jdk-25"
) else if exist "C:\Program Files\Java\jdk-21" (
set "JAVA_HOME=C:\Program Files\Java\jdk-21"
) else if exist "C:\Program Files\Eclipse Adoptium\jdk-17-hotspot" (
set "JAVA_HOME=C:\Program Files\Eclipse Adoptium\jdk-17-hotspot"
) else if exist "C:\Program Files\Java\jdk-17" (
set "JAVA_HOME=C:\Program Files\Java\jdk-17"
)
)
if not defined JAVA_HOME (
echo ERROR: JAVA_HOME not set!
exit /b 1
)
echo Using JAVA_HOME: %JAVA_HOME%
:: Setup environment
call "%VS_PATH%\VC\Auxiliary\Build\vcvars64.bat"
:: Create build directory
if not exist build mkdir build
:: Compile C++ source
cl.exe /O2 /W3 /MD /EHsc /LD ^
/I "%JAVA_HOME%\include" ^
/I "%JAVA_HOME%\include\win32" ^
/Fo:build\ ^
/Fe:build\%LIB_NAME%.dll ^
native\*.cpp ^
user32.lib gdi32.lib shcore.lib advapi32.lib dwmapi.lib ^
/link /DLL /MACHINE:X64 /DEF:native\%LIB_NAME%.def
if %ERRORLEVEL% == 0 (
echo.
echo [SUCCESS] DLL built at: build\%LIB_NAME%.dll
) else (
echo.
echo [FAILED] Compilation failed.
exit /b 1
)