OLD | NEW |
| (Empty) |
1 #!/bin/bash | |
2 | |
3 # Copyright (c) 2015, the Dartino project authors. Please see the AUTHORS file | |
4 # for details. All rights reserved. Use of this source code is governed by a | |
5 # BSD-style license that can be found in the LICENSE.md file. | |
6 | |
7 set -eu | |
8 | |
9 THIS_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) | |
10 ROOT_DIR=$(cd "$THIS_DIR/../.." && pwd) | |
11 | |
12 TEST_PY="$ROOT_DIR/tools/test.py" | |
13 | |
14 ARCH="ia32" | |
15 MODE="release" | |
16 TARGET="" | |
17 OUT="" | |
18 | |
19 function print_help() { | |
20 echo | |
21 echo "This script can be run as:" | |
22 echo " compile.sh [<options>] <target>" | |
23 echo | |
24 echo " where <options> are:" | |
25 echo " -a <arch> (eg, ia32, x64)" | |
26 echo " -m <mode> (eg, debug, release)" | |
27 echo | |
28 echo " and <target> is one of:" | |
29 echo " cc (run the C-based CLI)" | |
30 echo " java (run the Java-based CLI)" | |
31 } | |
32 | |
33 function print_error() { | |
34 echo "Error: $1" | |
35 print_help | |
36 exit 1 | |
37 } | |
38 | |
39 function build() { | |
40 SUFFIX=service_tests/simple_todo_$1 | |
41 OUT="$ROOT_DIR/out/${MODE_CC}${ARCH_UC}/temporary_test_output/$SUFFIX" | |
42 $TEST_PY -a $ARCH -m $MODE dartino_tests/$SUFFIX | |
43 echo | |
44 echo "Compilation and testing succeeded" | |
45 echo "Compiled output in" | |
46 echo " $OUT" | |
47 } | |
48 | |
49 while [[ $# > 1 ]]; do | |
50 case "$1" in | |
51 -a|--arch) ARCH="$2"; shift 2;; | |
52 -m|--mode) MODE="$2"; shift 2;; | |
53 *) echo "Unknown option $1"; exit 1;; | |
54 esac | |
55 done | |
56 | |
57 if [[ $# == 1 ]]; then | |
58 TARGET="$1" | |
59 shift | |
60 else | |
61 print_error "unsupplied target" | |
62 fi | |
63 | |
64 # lowercase and uppercase arch | |
65 ARCH=$(echo -n "$ARCH" | tr "[:upper:]" "[:lower:]") | |
66 ARCH_UC=$(echo -n "$ARCH" | tr "[:lower:]" "[:upper:]") | |
67 | |
68 # lowercase and capitalized mode | |
69 MODE=$(echo -n "$MODE" | tr "[:upper:]" "[:lower:]") | |
70 MODE_CC=$(echo -n "${MODE:0:1}" | tr "[:lower:]" "[:upper:]"; echo "${MODE:1}") | |
71 | |
72 case "$TARGET" in | |
73 cc) | |
74 build cc | |
75 $OUT/simple_todo_sample $OUT/simple_todo.snapshot | |
76 ;; | |
77 java) | |
78 if [[ "$ARCH" != "x64" ]]; then | |
79 print_error "Target java requires using 64 bit by setting: -a x64" | |
80 fi | |
81 build java | |
82 LD_LIBRARY_PATH=$OUT \ | |
83 java -d64 -ea -cp $OUT/simple_todo.jar -Djava.library.path=$OUT \ | |
84 SimpleTodo $OUT/simple_todo.snapshot | |
85 ;; | |
86 *) | |
87 print_error "unknown target '$TARGET'" | |
88 ;; | |
89 esac | |
OLD | NEW |