Description:
Merge branch 'master' into windows
Commit status:
[Not Reviewed]
References:
merge default
Comments:
0 Commit comments 0 Inline Comments
Unresolved TODOs:
There are no unresolved TODOs
Add another comment

r116:5d4a79b51f8c - - 1 file changed: 1 inserted, 1 deleted

@@ -1,69 +1,69
1 #!/usr/bin/ruby
1 #!/usr/bin/ruby
2
2
3 require 'fileutils'
3 require 'fileutils'
4
4
5 ##############################
5 ##############################
6 #
6 #
7 # Standard Compile Script
7 # Standard Compile Script
8 #
8 #
9 # Supported compilers:
9 # Supported compilers:
10 # gcc, g++, and fpc.
10 # gcc, g++, and fpc.
11 #
11 #
12 ##############################
12 ##############################
13
13
14 def talk(msg)
14 def talk(msg)
15 if ENV['TALKATIVE']!=nil
15 if ENV['TALKATIVE']!=nil
16 puts str
16 puts str
17 end
17 end
18 if ENV['GRADER_LOGGING']!=nil
18 if ENV['GRADER_LOGGING']!=nil
19 log_fname = ENV['GRADER_LOGGING']
19 log_fname = ENV['GRADER_LOGGING']
20 fp = File.open(log_fname,"a")
20 fp = File.open(log_fname,"a")
21 - fp.puts("run: #{Time.new.strftime("%H:%M")} #{str}")
21 + fp.puts("run: #{Time.new.strftime("%H:%M")} #{msg}")
22 fp.close
22 fp.close
23 end
23 end
24 end
24 end
25
25
26 C_COMPILER = "gcc"
26 C_COMPILER = "gcc"
27 CPLUSPLUS_COMPILER = "g++"
27 CPLUSPLUS_COMPILER = "g++"
28 PASCAL_COMPILER = "fpc"
28 PASCAL_COMPILER = "fpc"
29
29
30 C_OPTIONS = "-O2 -s -static -std=c99 -DCONTEST -lm -Wall"
30 C_OPTIONS = "-O2 -s -static -std=c99 -DCONTEST -lm -Wall"
31 CPLUSPLUS_OPTIONS = "-O2 -s -static -DCONTEST -lm -Wall"
31 CPLUSPLUS_OPTIONS = "-O2 -s -static -DCONTEST -lm -Wall"
32 PASCAL_OPTIONS = "-O1 -XS -dCONTEST"
32 PASCAL_OPTIONS = "-O1 -XS -dCONTEST"
33
33
34 # Check for the correct number of arguments. Otherwise, print usage.
34 # Check for the correct number of arguments. Otherwise, print usage.
35 if ARGV.length == 0 or ARGV.length > 4
35 if ARGV.length == 0 or ARGV.length > 4
36 puts "Usage: compile <language> [<source-file>] [<output-file>] [<message-file>]"
36 puts "Usage: compile <language> [<source-file>] [<output-file>] [<message-file>]"
37 puts
37 puts
38 puts "<source-file> is defaulted to \"source\"."
38 puts "<source-file> is defaulted to \"source\"."
39 puts "<output-file> is defaulted to \"a.out\"."
39 puts "<output-file> is defaulted to \"a.out\"."
40 puts "<message-file> is defaulted to \"compiler_message\"."
40 puts "<message-file> is defaulted to \"compiler_message\"."
41 puts
41 puts
42 exit(127)
42 exit(127)
43 end
43 end
44
44
45 PARAMS = {
45 PARAMS = {
46 :source_file => [1,'source'],
46 :source_file => [1,'source'],
47 :output_file => [2,'a.out'],
47 :output_file => [2,'a.out'],
48 :message_file => [3,'compiler_message']
48 :message_file => [3,'compiler_message']
49 }
49 }
50
50
51 params = {}
51 params = {}
52 params[:prog_lang] = ARGV[0]
52 params[:prog_lang] = ARGV[0]
53 PARAMS.each_key do |param_name|
53 PARAMS.each_key do |param_name|
54 index, default = PARAMS[param_name]
54 index, default = PARAMS[param_name]
55 if ARGV.length > index
55 if ARGV.length > index
56 params[param_name] = ARGV[index]
56 params[param_name] = ARGV[index]
57 else
57 else
58 params[param_name] = default
58 params[param_name] = default
59 end
59 end
60 talk "#{param_name}: #{params[param_name]}"
60 talk "#{param_name}: #{params[param_name]}"
61 end
61 end
62
62
63 # Remove any remaining output files or message files.
63 # Remove any remaining output files or message files.
64 if FileTest.exists? params[:output_file]
64 if FileTest.exists? params[:output_file]
65 FileUtils.rm(params[:output_file])
65 FileUtils.rm(params[:output_file])
66 end
66 end
67 if FileTest.exists? params[:message_file]
67 if FileTest.exists? params[:message_file]
68 FileUtils.rm(params[:message_file])
68 FileUtils.rm(params[:message_file])
69 end
69 end
You need to be logged in to leave comments. Login now