Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: tools/gcmole/gcmole.lua

Issue 14320024: Switch GCMole to use GYP build file instead of SCons. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | tools/gyp/v8.gyp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 -- Copyright 2011 the V8 project authors. All rights reserved. 1 -- Copyright 2011 the V8 project authors. All rights reserved.
2 -- Redistribution and use in source and binary forms, with or without 2 -- Redistribution and use in source and binary forms, with or without
3 -- modification, are permitted provided that the following conditions are 3 -- modification, are permitted provided that the following conditions are
4 -- met: 4 -- met:
5 -- 5 --
6 -- * Redistributions of source code must retain the above copyright 6 -- * Redistributions of source code must retain the above copyright
7 -- notice, this list of conditions and the following disclaimer. 7 -- notice, this list of conditions and the following disclaimer.
8 -- * Redistributions in binary form must reproduce the above 8 -- * Redistributions in binary form must reproduce the above
9 -- copyright notice, this list of conditions and the following 9 -- copyright notice, this list of conditions and the following
10 -- disclaimer in the documentation and/or other materials provided 10 -- disclaimer in the documentation and/or other materials provided
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
110 log("-- %s", filename) 110 log("-- %s", filename)
111 local action = cmd_line .. " src/" .. filename .. " 2>&1" 111 local action = cmd_line .. " src/" .. filename .. " 2>&1"
112 if FLAGS.verbose then print('popen ', action) end 112 if FLAGS.verbose then print('popen ', action) end
113 local pipe = io.popen(action) 113 local pipe = io.popen(action)
114 func(filename, pipe:lines()) 114 func(filename, pipe:lines())
115 pipe:close() 115 pipe:close()
116 end 116 end
117 end 117 end
118 118
119 ------------------------------------------------------------------------------- 119 -------------------------------------------------------------------------------
120 -- SConscript parsing 120 -- GYP file parsing
121 121
122 local function ParseSConscript() 122 local function ParseGYPFile()
123 local f = assert(io.open("src/SConscript"), "failed to open SConscript") 123 local f = assert(io.open("tools/gyp/v8.gyp"), "failed to open GYP file")
124 local sconscript = f:read('*a') 124 local gyp = f:read('*a')
125 f:close() 125 f:close()
126 126
127 local SOURCES = sconscript:match "SOURCES = {(.-)}"; 127 local result = {}
128 128
129 local sources = {} 129 for condition, sources in
130 130 gyp:gmatch "'sources': %[.-### gcmole%((.-)%) ###(.-)%]" do
131 for condition, list in
132 SOURCES:gmatch "'([^']-)': Split%(\"\"\"(.-)\"\"\"%)" do
133 local files = {} 131 local files = {}
134 for file in list:gmatch "[^%s]+" do table.insert(files, file) end 132 for file in sources:gmatch "'%.%./%.%./src/([^']-%.cc)'" do
135 sources[condition] = files 133 table.insert(files, file)
134 end
135 result[condition] = files
136 end 136 end
137 137
138 for condition, list in SOURCES:gmatch "'([^']-)': %[(.-)%]" do 138 return result
139 local files = {}
140 for file in list:gmatch "'([^']-)'" do table.insert(files, file) end
141 sources[condition] = files
142 end
143
144 return sources
145 end 139 end
146 140
147 local function EvaluateCondition(cond, props) 141 local function EvaluateCondition(cond, props)
148 if cond == 'all' then return true end 142 if cond == 'all' then return true end
149 143
150 local p, v = cond:match "(%w+):(%w+)" 144 local p, v = cond:match "(%w+):(%w+)"
151 145
152 assert(p and v, "failed to parse condition: " .. cond) 146 assert(p and v, "failed to parse condition: " .. cond)
153 assert(props[p] ~= nil, "undefined configuration property: " .. p) 147 assert(props[p] ~= nil, "undefined configuration property: " .. p)
154 148
155 return props[p] == v 149 return props[p] == v
156 end 150 end
157 151
158 local function BuildFileList(sources, props) 152 local function BuildFileList(sources, props)
159 local list = {} 153 local list = {}
160 for condition, files in pairs(sources) do 154 for condition, files in pairs(sources) do
161 if EvaluateCondition(condition, props) then 155 if EvaluateCondition(condition, props) then
162 for i = 1, #files do table.insert(list, files[i]) end 156 for i = 1, #files do table.insert(list, files[i]) end
163 end 157 end
164 end 158 end
165 return list 159 return list
166 end 160 end
167 161
168 local sources = ParseSConscript() 162 local sources = ParseGYPFile()
169 163
170 local function FilesForArch(arch) 164 local function FilesForArch(arch)
171 return BuildFileList(sources, { os = 'linux', 165 return BuildFileList(sources, { os = 'linux',
172 arch = arch, 166 arch = arch,
173 mode = 'debug', 167 mode = 'debug',
174 simulator = ''}) 168 simulator = ''})
175 end 169 end
176 170
177 local mtConfig = {} 171 local mtConfig = {}
178 172
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after
372 366
373 for _, arch in ipairs(ARCHS) do 367 for _, arch in ipairs(ARCHS) do
374 if not ARCHITECTURES[arch] then 368 if not ARCHITECTURES[arch] then
375 error ("Unknown arch: " .. arch) 369 error ("Unknown arch: " .. arch)
376 end 370 end
377 371
378 errors = SafeCheckCorrectnessForArch(arch, report) or errors 372 errors = SafeCheckCorrectnessForArch(arch, report) or errors
379 end 373 end
380 374
381 os.exit(errors and 1 or 0) 375 os.exit(errors and 1 or 0)
OLDNEW
« no previous file with comments | « no previous file | tools/gyp/v8.gyp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698