-
Notifications
You must be signed in to change notification settings - Fork 0
/
Rakefile
144 lines (121 loc) · 4.41 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#{*****************************************************************************}
#{ _ }
#{ /\/\ ___ | | ____ _ _ __ _ __ __ _ }
#{ / \ / _ \| |/ / _` | '__| '__/ _` | }
#{ / /\/\ \ (_) | < (_| | | | | | (_| | }
#{ \/ \/\___/|_|\_\__,_|_| |_| \__,_| }
#{ }
#{ Mokarra }
#{ (C)opyright 2011-2015 - LeafScale Systems, Inc. }
#{ }
#{ This software is protected under the LeafScale Software License }
#{ }
#{*****************************************************************************}
#{ /Rakefile }
#{ Mokarra Rakefile - Uses ruby rake to compile and assemble the software. }
#{*****************************************************************************}
# // SETUP \\
# ----------------------------------------------------------------------------
#//Build Dir - Where the build files (units, libs, binaries) will be stored.
build = "build"
# //Set default language mode for compatability [objfpc,delphi,fpc,tp]
fpc_mode="objfpc"
#//Set Platform Build Target
fpc_target="darwin"
#//Set custom FPC option flags
#
# -Sm = Support macros like C (global)
# -Sh = Use ansistrings by default instead of shortstrings
# -O2 = Set Level 2 Optimization flag
fpc_options="-Sm -O2 -Sh"
#//Set the compiler command line (can be overriden in source per file)
fpc="fpc -M#{fpc_mode} #{fpc_options} -T#{fpc_target}"
# // TASKS \\
# ----------------------------------------------------------------------------
desc "Default compile task 'build'"
task :default => ['contrib','lib_io','lib_system','lib_config','lib_reef','lib_menus','mokarra']
sh "mkdir -p build"
desc "Contributed Libraries"
task :contrib => []
# IO Library
desc "Compiling IO Library..."
task :lib_io do
puts "\nStarting task 'lib_io'..."
sh "mkdir -p build"
basedir="lib/io"
filelist = ['ansicrt','textutils','inputquestions','menu']
filelist.each do |file|
puts "Compiling #{basedir}/#{file} => #{build}"
sh "#{fpc} -o#{build}/#{file} #{basedir}/#{file}"
end
end
# Config Library
desc "Compiling Config Library..."
task :lib_config do
puts "\nStarting task 'lib_config'..."
sh "mkdir -p build"
basedir="lib/config"
filelist = ['configfile']
filelist.each do |file|
puts "Compiling #{basedir}/#{file} => #{build}"
sh "#{fpc} -o#{build}/#{file} #{basedir}/#{file}"
end
end
# System Library
desc "Compiling System Library..."
task :lib_system do
puts "\nStarting task 'lib_system'..."
sh "mkdir -p build"
basedir="lib/system"
filelist = ['version', 'errormsg','systeminfo', 'filesystem']
filelist.each do |file|
puts "\nCompiling #{basedir}/#{file} => #{build}"
sh "#{fpc} -o#{build}/#{file} #{basedir}/#{file}"
end
end
# Reef Library
desc "Compiling Reef Library..."
task :lib_reef do
puts "\nStarting task 'lib_reef'..."
sh "mkdir -p build"
basedir="lib/reef"
filelist = ['pkgsrc','reefindex','reefrepo']
filelist.each do |file|
puts "\nCompiling #{basedir}/#{file} => #{build}"
sh "#{fpc} -o#{build}/#{file} #{basedir}/#{file}"
end
end
# Menus Library
desc "Compiling Menus Library..."
task :lib_menus do
puts "\nStarting task 'lib_menus'..."
sh "mkdir -p build"
basedir="lib/menus"
filelist = ['configmenu']
filelist.each do |file|
puts "Compiling #{basedir}/#{file} => #{build}"
sh "#{fpc} -o#{build}/#{file} #{basedir}/#{file}"
end
end
# Build EXE
desc "Linking Binary 'mokarra'..."
task :mokarra do
puts "\nStarting task 'mokarra'..."
sh "mkdir -p build"
puts "\nCompiling and linking executable 'mokarra'"
sh "#{fpc} -o#{build}/mokarra -emokarra mokarra.lpr"
basedir="."
sh "cp #{build}/mokarra #{basedir}"
end
# Clean
desc "Cleaning for Mokarra"
task :clean do
puts "\nStarting task 'clean'..."
sh "rm -rf build; rm mokarra"
end
# Remove Backups
desc "Remove Backup Files"
task :rmbackups do
puts "\nStarting task 'rmbackups'..."
puts "-- task not written --"
end