1*f4ee7fbaSAndroid Build Coastguard Workerif ! which mvn >/dev/null; then 2*f4ee7fbaSAndroid Build Coastguard Worker echo -e '\033[01;31mMaven is not installed / configured.\033[00m' 3*f4ee7fbaSAndroid Build Coastguard Worker exit 1 4*f4ee7fbaSAndroid Build Coastguard Workerfi 5*f4ee7fbaSAndroid Build Coastguard Worker 6*f4ee7fbaSAndroid Build Coastguard Workerif ! which mono >/dev/null; then 7*f4ee7fbaSAndroid Build Coastguard Worker echo -e '\033[01;31mMono platform is not installed / configured.\033[00m' 8*f4ee7fbaSAndroid Build Coastguard Worker exit 1 9*f4ee7fbaSAndroid Build Coastguard Workerfi 10*f4ee7fbaSAndroid Build Coastguard Worker 11*f4ee7fbaSAndroid Build Coastguard Workerif ! which nuget >/dev/null; then 12*f4ee7fbaSAndroid Build Coastguard Worker echo -e '\033[01;31mNuGet compiler is not installed / configured.\033[00m' 13*f4ee7fbaSAndroid Build Coastguard Worker exit 1 14*f4ee7fbaSAndroid Build Coastguard Workerfi 15*f4ee7fbaSAndroid Build Coastguard Worker 16*f4ee7fbaSAndroid Build Coastguard Workerif ! which mcs >/dev/null; then 17*f4ee7fbaSAndroid Build Coastguard Worker echo -e '\033[01;31mC# compiler is not installed / configured.\033[00m' 18*f4ee7fbaSAndroid Build Coastguard Worker exit 1 19*f4ee7fbaSAndroid Build Coastguard Workerfi 20*f4ee7fbaSAndroid Build Coastguard Worker 21*f4ee7fbaSAndroid Build Coastguard Workerrm -rf build 22*f4ee7fbaSAndroid Build Coastguard Workermkdir build 23*f4ee7fbaSAndroid Build Coastguard Workercd build 24*f4ee7fbaSAndroid Build Coastguard Worker 25*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 26*f4ee7fbaSAndroid Build Coastguard Worker 27*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\033[01;33mFetching Sharpen sources.\033[00m' 28*f4ee7fbaSAndroid Build Coastguard Worker 29*f4ee7fbaSAndroid Build Coastguard Workergit clone https://github.com/stanislaw89/sharpen.git 30*f4ee7fbaSAndroid Build Coastguard Workercd sharpen 31*f4ee7fbaSAndroid Build Coastguard Workergit checkout 4f609ed42862a1f9aab1be00374ff86534a5e6d6 || exit 1 32*f4ee7fbaSAndroid Build Coastguard Worker 33*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 34*f4ee7fbaSAndroid Build Coastguard Worker 35*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mCompiling Sharpen.\033[00m' 36*f4ee7fbaSAndroid Build Coastguard Worker 37*f4ee7fbaSAndroid Build Coastguard Workermvn clean package -DskipTests 38*f4ee7fbaSAndroid Build Coastguard Workermvn dependency:copy -Dartifact=junit:junit:4.12 -DoutputDirectory=.. 39*f4ee7fbaSAndroid Build Coastguard Workercd .. 40*f4ee7fbaSAndroid Build Coastguard Workercp sharpen/target/sharpencore-0.0.1-SNAPSHOT-jar-with-dependencies.jar ./sharpen.jar 41*f4ee7fbaSAndroid Build Coastguard Worker 42*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 43*f4ee7fbaSAndroid Build Coastguard Worker 44*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mTranspiling.\033[00m' 45*f4ee7fbaSAndroid Build Coastguard Worker 46*f4ee7fbaSAndroid Build Coastguard Workercd .. 47*f4ee7fbaSAndroid Build Coastguard Workerjava -jar build/sharpen.jar ../java/org/brotli/dec/ -cp build/junit-4.12.jar @sharpen.cfg 48*f4ee7fbaSAndroid Build Coastguard Worker 49*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 50*f4ee7fbaSAndroid Build Coastguard Worker 51*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mPatching.\033[00m' 52*f4ee7fbaSAndroid Build Coastguard Worker 53*f4ee7fbaSAndroid Build Coastguard Worker# TODO: detect "dead" files, that are not generated by sharpen anymore. 54*f4ee7fbaSAndroid Build Coastguard Workercp -r build/generated/* ./ 55*f4ee7fbaSAndroid Build Coastguard Worker 56*f4ee7fbaSAndroid Build Coastguard Worker# Reflection does not work without Sharpen.cs 57*f4ee7fbaSAndroid Build Coastguard Workerrm org/brotli/dec/EnumTest.cs 58*f4ee7fbaSAndroid Build Coastguard Worker 59*f4ee7fbaSAndroid Build Coastguard WorkerPATTERN='\/\/ \<\{\[INJECTED CODE\]\}\>' 60*f4ee7fbaSAndroid Build Coastguard WorkerCODE=$(<org/brotli/dec/BrotliInputStream.cs) 61*f4ee7fbaSAndroid Build Coastguard WorkerREPLACEMENT=$(<injected_code.txt) 62*f4ee7fbaSAndroid Build Coastguard Workerecho "${CODE//$PATTERN/$REPLACEMENT}" > org/brotli/dec/BrotliInputStream.cs 63*f4ee7fbaSAndroid Build Coastguard Worker 64*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 65*f4ee7fbaSAndroid Build Coastguard Worker 66*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mDowloading dependencies.\033[00m' 67*f4ee7fbaSAndroid Build Coastguard Worker 68*f4ee7fbaSAndroid Build Coastguard Workercd build 69*f4ee7fbaSAndroid Build Coastguard Workernuget install NUnit -Version 3.6.1 70*f4ee7fbaSAndroid Build Coastguard Workernuget install NUnit.ConsoleRunner -Version 3.6.1 71*f4ee7fbaSAndroid Build Coastguard Workercd .. 72*f4ee7fbaSAndroid Build Coastguard Worker 73*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 74*f4ee7fbaSAndroid Build Coastguard Worker 75*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mCompiling generated code.\033[00m' 76*f4ee7fbaSAndroid Build Coastguard Worker 77*f4ee7fbaSAndroid Build Coastguard WorkerSOURCES=`find org/brotli -type file ! -path "*Test.cs"` 78*f4ee7fbaSAndroid Build Coastguard WorkerTESTS_SOURCES=`find org/brotli -type file -path "*Test.cs"` 79*f4ee7fbaSAndroid Build Coastguard Worker 80*f4ee7fbaSAndroid Build Coastguard Workermcs $SOURCES -target:library -out:build/brotlidec.dll 81*f4ee7fbaSAndroid Build Coastguard Workermcs $SOURCES $TESTS_SOURCES -target:library -out:build/brotlidec_test.dll -r:build/NUnit.3.6.1/lib/net45/nunit.framework.dll 82*f4ee7fbaSAndroid Build Coastguard Worker 83*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 84*f4ee7fbaSAndroid Build Coastguard Worker 85*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mRunning tests.\033[00m' 86*f4ee7fbaSAndroid Build Coastguard Worker 87*f4ee7fbaSAndroid Build Coastguard Workerexport MONO_PATH=$MONO_PATH:`pwd`/build/NUnit.3.6.1/lib/net45 88*f4ee7fbaSAndroid Build Coastguard Workermono --debug build/NUnit.ConsoleRunner.3.6.1/tools/nunit3-console.exe build/brotlidec_test.dll 89*f4ee7fbaSAndroid Build Coastguard Worker 90*f4ee7fbaSAndroid Build Coastguard Worker#------------------------------------------------------------------------------- 91*f4ee7fbaSAndroid Build Coastguard Worker 92*f4ee7fbaSAndroid Build Coastguard Workerecho -e '\n\033[01;33mCleanup.\033[00m' 93*f4ee7fbaSAndroid Build Coastguard Workerrm TestResult.xml 94*f4ee7fbaSAndroid Build Coastguard Workerrm -rf build 95