5 ############################# Platforms #############################
7 # Platforms is used in the most general sense of the word. We don't #
8 # discriminate between OS-platforms and a lightweight framework - #
9 # any type of dependency is fair game. #
11 # What guides what we add here is mostly for internal Ohloh #
14 #####################################################################
16 define_platform 'posix' do
18 c_headers 'pthread.h', 'xstrtol.h', 'xreadlink.h', 'fatal-signal.h', 'diacrit.h', 'syslog.h', 'sys/stat.h'
20 # autoconf means m4 (unix macro processor)
24 define_platform 'win32' do
26 c_keywords 'WM_PAINT', 'ReleaseDC', 'WndProc', :min => 2
29 define_platform 'visualbasic' do
30 language :visualbasic, :min_percent => 5
33 define_platform 'ruby' do
34 language :ruby, :min_percent => 15
37 define_platform 'rails' do
39 gestalt(:platform, 'ruby')
40 ruby_keywords("RAILS_ROOT")
44 define_platform 'java' do
45 language :java, :min_percent => 15
48 define_platform 'javascript' do
49 language :javascript, :min_percent => 20
52 define_platform 'jquery' do
53 filenames 'jquery-\d.\d.\d.min.js$'
56 define_platform 'mootools' do
57 filenames '\bmootools-\d(\.\d)*(-core)?(-..)?\.js$'
60 define_platform 'prototype' do
61 filenames '\bprototype(-\d+(\.\d)+)?.js$'
64 define_platform 'yui' do
66 filenames '\byahoo-min\.js$'
67 html_keywords '\byahoo-min\.js\b'
71 define_platform 'dojo' do
73 filenames '\bdojo\.js$'
74 html_keywords '\bdojo\.xd\.js\b'
78 define_platform 'flash' do
80 language :actionscript, :min_percent => 1
82 gestalt(:platform, 'java')
83 java_import /^(flash)\..+/
88 define_platform 'flex' do
90 language :mxml, :min_percent => 1
92 gestalt(:platform, 'java')
93 java_import /^(mx)\..+/
98 define_platform 'xwindows' do
99 c_headers 'Xlib.h', 'X11\/xpm.h', 'X11/Xlib.h'
102 define_platform 'mac' do
104 c_keywords 'AppleEvent', 'AEBuildAppleEvent'
106 # plist is a mac thing, right?
110 define_platform 'php' do
111 language :php, :min_percent => 15
114 define_platform 'wxwidgets' do
115 c_headers 'wx/window.h'
118 define_platform 'zendframework' do
120 gestalt(:platform, 'php')
121 php_keywords('Zend_Controller_Action')
125 define_platform 'symfony' do
127 gestalt(:platform, 'php')
128 php_keywords('sfCore', 'sfConfig')
132 define_platform 'pear' do
134 gestalt(:platform, 'php')
136 filenames('\bpackage\.xml(\.tpl)?$')
137 xml_keywords('pear\.php\.net/dtd/package\-2\.0')
142 define_platform 'moodle' do
144 gestalt(:platform, 'php')
145 php_keywords("moodle")
149 define_platform 'sql' do
153 define_platform 'mysql' do
154 php_keywords('mysql_connect')
157 define_platform 'postgresql' do
158 php_keywords('pg_connect')
161 define_platform 'python' do
162 language :python, :min_percent => 15
165 define_platform 'perl' do
166 language :perl, :min_percent => 20
169 define_platform 'scripting' do
170 gestalt(:platform, 'javascript')
171 gestalt(:platform, 'perl')
172 gestalt(:platform, 'php')
173 gestalt(:platform, 'python')
174 gestalt(:platform, 'ruby')
177 define_platform 'cakephp' do
179 gestalt(:platform, 'php')
180 php_keywords('CAKE_CORE_INCLUDE_PATH')
184 define_platform 'kde' do
185 c_headers 'KDEInit.h', 'kdeversion.h'
188 define_platform 'gtk' do
189 c_keywords 'gtk_init', 'gtk_main', 'gtk_window_new', 'GtkWidget'
192 define_platform 'drupal' do
194 gestalt(:platform, 'php')
196 php_keywords('drupal_set_message')
197 php_keywords('drupal_render')
198 php_keywords('Drupal', :min => 3)
203 define_platform 'msdos' do
204 c_keywords '__MSDOS__', 'MSDOS', :min => 2
207 define_platform 'eclipseplatform' do
208 java_import /org\.eclipse\./
212 ############################### Tools ###############################
214 define_tool 'visualstudio' do
215 filenames '\.(sln|vcproj|vsproj|csproj|vbproj|vbp)$'
218 define_tool 'eclipse' do
219 filenames '\.(project|classpath)$'
222 define_tool 'netbeans' do
223 filenames '\bnbplatform\b'
227 ############################ ARM ###################################
229 define_platform 'arm' do
230 c_headers "arm4.h", "arm3.h"
231 c_keywords "arm_int32_t", "arm_start_application", "__arm__"
232 make_keywords '\b\-mabi\b','\barmcc\b'
233 java_keywords '\barm\-eabi'
234 assembler_keywords '\bsmlal\b', '\bsmulw\b', '\borrs\b'
235 gestalt(:platform, 'arm_neon')
236 java_import /org\.opengroup\.arm/
239 ########################## ARM NEON ################################
241 define_platform 'arm_neon' do
242 assembler_keywords '\bvld1\.\d\d\b', '\bvld1\.\d\d\b','\bvmov\b','\bvmov\.u8\b'
243 make_keywords '\bneon\b','\bNEON\b'
246 ############################ ATOM ##################################
247 # Atom is hard to detect, since it implements x86 instruction set
249 define_platform 'sse3_atom_flag' do
250 make_keywords 'SSE3_ATOM'
253 define_platform 'xl_flag' do
254 make_keywords '\bxL\b', '\/QxL\b'
257 define_platform 'atom' do
258 gestalt(:platform, 'sse3_atom_flag')
259 gestalt(:platform, 'xl_flag')
262 ########################## COMPILER ################################
263 define_platform 'intel_compiler' do
264 make_keywords '\bicc\b'
267 define_platform 'gcc' do
268 make_keywords '\bgcc\b'
271 ########################### MOBLIN #################################
273 define_platform 'clutter' do
274 c_keywords "ClutterActor", '\bclutter_actor_', "ClutterStage", "ClutterBehavior", "clutter_main"
275 csharp_keywords "ClutterActor", '\bclutter_actor_', "ClutterStage", "ClutterBehavior", "clutter_main"
276 perl_keywords "Clutter::Behavior", "Clutter::Actor", "Clutter::Stage"
277 java_keywords "ClutterActor", "ClutterStage", "ClutterShader"
278 ruby_keywords "Clutter::Actor", "Clutter::Stage", "Clutter::Shader", "Clutter::Cairo"
281 define_platform 'moblin_misc' do
282 c_keywords '\"org\.moblin\.', 'MOBLIN_NETBOOK_SYSTEM_TRAY_H', 'org_Moblin_', '\"org\.Moblin\.', "url=\"http://moblin.org\">http://moblin.org</ulink>"
283 make_keywords "org\.moblin\.", "moblin-netbook"
284 filenames 'moblin-netbook-system-tray.h$'
287 define_platform 'nbtk' do
288 c_keywords '\bnbtk_[a-z]+', '\bNbtk[A-Z][a-z]+'
289 java_keywords '\bnbtk_[a-z]+', '\bNbtk[A-Z][a-z]+'
290 ruby_keywords '\bnbtk_[a-z]+', '\bNbtk[A-Z][a-z]+'
291 filenames 'nbtk\/nbtk.h'
294 define_platform 'moblin' do
295 gestalt(:platform, 'clutter')
296 gestalt(:platform, 'moblin_misc')
297 gestalt(:platform, 'nbtk')
300 ########################### ANDROID #################################
302 define_platform 'android' do
303 java_import /\bandroid\./
306 ############################ iPhone #################################
308 define_platform 'iphone' do
309 objective_c_keywords '\bUIApplicationMain', '\bUIWindow', '\bUIView', '\bUIResponder'
312 ############################ Maemo #################################
314 define_platform 'hildon' do
315 c_keywords '\bHildonFile', '\bhildon_file_', '\bHildonProgram', '\bHildonWindow', '\bhildon_window'
316 c_headers 'hildon/hildon.h'
318 python_keywords '\bimport hildon'
319 python_keywords '\bimport gtk'
322 define_platform 'maemo' do
323 gestalt(:platform, 'hildon')
326 define_platform 'mid_combined' do
327 gestalt(:platform, 'clutter')
328 gestalt(:platform, 'nbtk')
329 gestalt(:platform, 'moblin')
330 gestalt(:platform, 'maemo')
331 gestalt(:platform, 'android')
332 gestalt(:platform, 'iphone')
336 ############################ Windows CE ############################
337 define_platform 'windows_ce_incomplete' do
338 csharp_keywords 'Microsoft\.WindowsCE', 'Microsoft\.WindowsMobile'
339 vb_keywords 'Microsoft\.WindowsCE', 'Microsoft\.WindowsMobile'
342 ######################### Native Code ##############################
343 define_platform 'native_code' do
344 language :c, :min_percent => 5
345 language :cpp, :min_percent => 5
346 language :cncpp, :min_percent => 5
347 language :assembly, :min_percent => 5
348 language :d, :min_percent => 5
349 language :fortran, :min_percent => 5
350 language :haskell, :min_percent => 5
351 language :cobol, :min_percent => 5