2019-01-19 15:00:30 +00:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2019-04-19 22:50:15 +00:00
|
|
|
# compile using regular Kotlin sdk command line tool
|
|
|
|
|
2019-01-19 15:00:30 +00:00
|
|
|
echo "Compiling the parser..."
|
2019-01-29 22:32:43 +00:00
|
|
|
java -jar ./parser/antlr/lib/antlr-4.7.2-complete.jar -o ./parser/src/prog8/parser -Xexact-output-dir -no-listener -no-visitor ./parser/antlr/prog8.g4
|
2019-01-19 15:00:30 +00:00
|
|
|
|
|
|
|
|
|
|
|
PARSER_CLASSES=./out/production/parser
|
|
|
|
COMPILER_JAR=prog8compiler.jar
|
|
|
|
ANTLR_RUNTIME=./parser/antlr/lib/antlr-runtime-4.7.2.jar
|
|
|
|
|
|
|
|
mkdir -p ${PARSER_CLASSES}
|
|
|
|
javac -d ${PARSER_CLASSES} -cp ${ANTLR_RUNTIME} ./parser/src/prog8/parser/prog8Lexer.java ./parser/src/prog8/parser/prog8Parser.java
|
|
|
|
|
|
|
|
echo "Compiling the compiler itself..."
|
2019-04-11 17:58:28 +00:00
|
|
|
JAVA_OPTS="-Xmx3G -Xms300M" kotlinc -verbose -include-runtime -d ${COMPILER_JAR} -jvm-target 1.8 -cp ${ANTLR_RUNTIME}:${PARSER_CLASSES} ./compiler/src/prog8
|
2019-01-19 15:00:30 +00:00
|
|
|
|
|
|
|
echo "Finalizing the compiler jar file..."
|
|
|
|
# add the antlr parser classes
|
|
|
|
jar ufe ${COMPILER_JAR} prog8.CompilerMainKt -C ${PARSER_CLASSES} prog8
|
|
|
|
|
|
|
|
# add the resources
|
|
|
|
jar uf ${COMPILER_JAR} -C ./compiler/res .
|
|
|
|
|
|
|
|
# add the antlr runtime classes
|
|
|
|
rm -rf antlr_runtime_extraction
|
|
|
|
mkdir antlr_runtime_extraction
|
|
|
|
(cd antlr_runtime_extraction; jar xf ../${ANTLR_RUNTIME})
|
|
|
|
jar uf ${COMPILER_JAR} -C antlr_runtime_extraction org
|
|
|
|
rm -rf antlr_runtime_extraction
|
|
|
|
|
|
|
|
echo "Done!"
|