Add compiler scripts for Windows (#625)

This commit is contained in:
SvyatoslavScherbina
2017-06-02 13:50:27 +03:00
committed by GitHub
parent 977ae063f8
commit 94add3cc20
6 changed files with 249 additions and 0 deletions
+3
View File
@@ -284,6 +284,9 @@ task distCompiler(type: Copy) {
from(file('cmd')) {
fileMode(0755)
into('bin')
if (!isWindows()) {
exclude('**/*.bat')
}
}
from(konanPropertiesFile) {
into('konan')
+117
View File
@@ -0,0 +1,117 @@
@echo off
rem based on scalac.bat from the Scala distribution
rem ##########################################################################
rem # Copyright 2002-2011, LAMP/EPFL
rem # Copyright 2011-2017, JetBrains
rem #
rem # This is free software; see the distribution for copying conditions.
rem # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
rem # PARTICULAR PURPOSE.
rem ##########################################################################
setlocal enabledelayedexpansion
call :set_home
call :set_path
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
)
if "%_JAVACMD%"=="" set _JAVACMD=java
set OUTPUT_FILE_NAME=nativelib
set TARGET=host
set JAVA_ARGS=
set INTEROP_ARGS=
:again
set "ARG=%1"
if not "!ARG!" == "" (
if "!ARG:~0,2!" == "-D" (
set "JAVA_ARGS=%JAVA_ARGS% %ARG%"
goto next
)
if "!ARG:~0,2!" == "-J" (
set "JAVA_ARGS=%JAVA_ARGS% !ARG:~2!"
goto next
)
if "!ARG!" == "-o" (
set "OUTPUT_FILE_NAME=%2"
shift
goto next
)
if "!ARG!" == "-target" (
set "TARGET=%2"
shift
goto next
)
set "INTEROP_ARGS=%INTEROP_ARGS% %ARG%"
:next
shift
goto again
)
set "NATIVE_LIB=%_KONAN_HOME%\konan\nativelib"
set JAVA_OPTS=-ea ^
"-Djava.library.path=%NATIVE_LIB%" ^
"-Dkonan.home=%_KONAN_HOME%" ^
-Dfile.encoding=UTF-8
set "STUB_GENERATOR_JAR=%_KONAN_HOME%\konan\lib\StubGenerator.jar"
set "KOTLIN_JAR=%_KONAN_HOME%\konan\lib\kotlin-compiler.jar"
set "INTEROP_INDEXER_JAR=%_KONAN_HOME%\konan\lib\Indexer.jar"
set "INTEROP_RUNTIME_JAR=%_KONAN_HOME%\konan\lib\Runtime.jar"
set "HELPERS_JAR=%_KONAN_HOME%\konan\lib\helpers.jar"
set "INTEROP_CLASSPATH=%STUB_GENERATOR_JAR%;%KOTLIN_JAR%;%INTEROP_INDEXER_JAR%;%INTEROP_RUNTIME_JAR%;%HELPERS_JAR%"
set "INTEROP_TOOL=org.jetbrains.kotlin.native.interop.gen.jvm.MainKt"
set "FLAVOR_ARG=-flavor native"
set "GENERATED_DIR=%OUTPUT_FILE_NAME%-build/kotlin"
set "GENERATED_ARG=-generated "%GENERATED_DIR%""
set "NATIVES_DIR=%OUTPUT_FILE_NAME%-build/natives"
set "NATIVES_ARG=-natives "%NATIVES_DIR%""
set "CSTUBSNAME=cstubs"
set "CSTUBSNAME_ARG=-cstubsname %CSTUBSNAME%"
set LIBCLANG_DISABLE_CRASH_RECOVERY=1
"%_JAVACMD%" %JAVA_OPTS% %JAVA_ARGS% ^
-cp "%INTEROP_CLASSPATH%" ^
%INTEROP_TOOL% ^
%GENERATED_ARG% %NATIVES_ARG% %CSTUBSNAME_ARG% ^
%FLAVOR_ARG% -target "%TARGET%" %INTEROP_ARGS%
if ERRORLEVEL 1 exit /b %ERRORLEVEL%
rem Stubs may be rather big, so we may need more heap space.
set XMX_ARG=-J-Xmx3G
call "%_KONAN_HOME%\bin\konanc.bat" %XMX_ARG% "%GENERATED_DIR%" -produce library ^
-nativelibrary "%NATIVES_DIR%/%CSTUBSNAME%.bc" ^
-o "%OUTPUT_FILE_NAME%" -target "%TARGET%"
exit /b %ERRORLEVEL%
goto end
rem ##########################################################################
rem # subroutines
:set_home
set _BIN_DIR=
for %%i in (%~sf0) do set _BIN_DIR=%_BIN_DIR%%%~dpsi
set _KONAN_HOME=%_BIN_DIR%..
goto :eof
:set_path
rem libclang.dll is dynamically linked and thus requires correct PATH to be loaded.
rem TODO: remove this hack.
set "PATH=%_KONAN_HOME%\dependencies\msys2-mingw-w64-x86_64-gcc-6.3.0-clang-llvm-3.9.1-windows-x86-64\bin;%PATH%"
goto :eof
:end
endlocal
+82
View File
@@ -0,0 +1,82 @@
@echo off
rem based on scalac.bat from the Scala distribution
rem ##########################################################################
rem # Copyright 2002-2011, LAMP/EPFL
rem # Copyright 2011-2017, JetBrains
rem #
rem # This is free software; see the distribution for copying conditions.
rem # There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
rem # PARTICULAR PURPOSE.
rem ##########################################################################
setlocal enabledelayedexpansion
call :set_home
if "%_KONAN_COMPILER%"=="" set _KONAN_COMPILER=org.jetbrains.kotlin.cli.bc.K2NativeKt
if not "%JAVA_HOME%"=="" (
if exist "%JAVA_HOME%\bin\java.exe" set "_JAVACMD=%JAVA_HOME%\bin\java.exe"
)
if "%_JAVACMD%"=="" set _JAVACMD=java
set JAVA_ARGS=
set KONAN_ARGS=
:again
set "ARG=%1"
if not "!ARG!" == "" (
if "!ARG:~0,2!" == "-D" (
set "JAVA_ARGS=%JAVA_ARGS% %ARG%"
goto next
)
if "!ARG:~0,2!" == "-J" (
set "JAVA_ARGS=%JAVA_ARGS% !ARG:~2!"
goto next
)
if "!ARG:~0,2!" == "-X" (
echo "TODO: need to pass arguments to all the tools somehow."
goto next
)
if "!ARG!" == "--time" (
set "KONAN_ARGS=%KONAN_ARGS% --time"
set "JAVA_ARGS=%JAVA_ARGS% -agentlib:hprof=cpu=samples -Dkonan.profile=true"
goto next
)
set "KONAN_ARGS=%KONAN_ARGS% %ARG%"
:next
shift
goto again
)
set "KONAN_JAR=%_KONAN_HOME%\konan\lib\backend.native.jar"
set "KOTLIN_JAR=%_KONAN_HOME%\konan\lib\kotlin-compiler.jar"
set "INTEROP_JAR=%_KONAN_HOME%\konan\lib\Runtime.jar"
set "HELPERS_JAR=%_KONAN_HOME%\konan\lib\helpers.jar"
set "NATIVE_LIB=%_KONAN_HOME%\konan\nativelib"
set "KONAN_CLASSPATH=%KOTLIN_JAR%;%INTEROP_JAR%;%KONAN_JAR%;%HELPERS_JAR%"
set "JAVA_OPTS=-ea -Dfile.encoding=UTF-8"
set "JAVA_ARGS=%JAVA_ARGS% -noverify -Dkonan.home=%_KONAN_HOME% -Djava.library.path=%NATIVE_LIB%"
"%_JAVACMD%" %JAVA_OPTS% %JAVA_ARGS% -cp %KONAN_CLASSPATH% %_KONAN_COMPILER% %KONAN_ARGS%
exit /b %ERRORLEVEL%
goto end
rem ##########################################################################
rem # subroutines
:set_home
set _BIN_DIR=
for %%i in (%~sf0) do set _BIN_DIR=%_BIN_DIR%%%~dpsi
set _KONAN_HOME=%_BIN_DIR%..
goto :eof
:end
endlocal
+17
View File
@@ -0,0 +1,17 @@
@echo off
rem Copyright 2010-2017 JetBrains s.r.o.
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.
call %~dps0konanc.bat %*
+17
View File
@@ -0,0 +1,17 @@
@echo off
rem Copyright 2010-2017 JetBrains s.r.o.
rem
rem Licensed under the Apache License, Version 2.0 (the "License");
rem you may not use this file except in compliance with the License.
rem You may obtain a copy of the License at
rem
rem http://www.apache.org/licenses/LICENSE-2.0
rem
rem Unless required by applicable law or agreed to in writing, software
rem distributed under the License is distributed on an "AS IS" BASIS,
rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
rem See the License for the specific language governing permissions and
rem limitations under the License.
call %~dps0konanc.bat %*
+13
View File
@@ -0,0 +1,13 @@
@echo off
setlocal
set DIR=.
set "PATH=..\..\dist\bin;..\..\bin;%PATH%"
if "%TARGET%" == "" set TARGET=mingw
call cinterop -def "%DIR%\stdio.def" -target "%TARGET%" -o stdio
if ERRORLEVEL 1 exit /b %ERRORLEVEL%
call konanc -target "%TARGET%" "%DIR%\CsvParser.kt" -library stdio -o CsvParser
exit /b %ERRORLEVEL%