SConscript 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import os
  2. Import('env')
  3. Import('RTT_ROOT')
  4. Import('rtconfig')
  5. Import('TARGET')
  6. RTMLINKER = RTT_ROOT + '/tools/rtmlinker.exe '
  7. # group definitions
  8. CPATH = [RTT_ROOT + '/include',
  9. RTT_ROOT + '/examples/module',
  10. RTT_ROOT + '/components/external/ftk/ftk/apps/common',
  11. RTT_ROOT + '/components/external/ftk/ftk/src/os/rt-thread',
  12. RTT_ROOT + '/components/external/ftk/ftk/src',
  13. RTT_ROOT + '/components/dfs',
  14. RTT_ROOT + '/components/dfs/include',
  15. RTT_ROOT + '/components/libc/newlib']
  16. src = Glob('*.c')
  17. def GenerateDesktopApp(name):
  18. xml = '<applications>\n<application name=\"%s\" exec=\"/ftk/apps/%s.so\" init=\"ftk_app_%s_create\" />\n</applications>\n' % (name, name, name)
  19. f = file(name + '.desktop', 'wb')
  20. f.write(xml)
  21. f.close
  22. def Demo(env, name):
  23. if name == 'ftk_app_demo':
  24. return
  25. target = name + '.so'
  26. module_env = env.Clone(CCFLAGS = ' -DRT_THREAD -DFTK_AS_PLUGIN -mcpu=arm920t -O0 -fPIC')
  27. module_env.Append(CPPPATH = CPATH)
  28. module_env.Replace(LINKFLAGS = ('-z max-page-size=0x4 -shared -fPIC -e ftk_app_%s_create -nostdlib' % name))
  29. module_env.Program(name + '.so', [name + '.c', 'ftk_app_demo.o'])
  30. POST_ACTION = RTMLINKER + ' -l ' + TARGET + (' -o %s.mo ' % name) + ('ftk_demo/%s.so' % name)
  31. module_env.AddPostAction(target, POST_ACTION)
  32. module_env.Clean(target, name + '.desktop')
  33. GenerateDesktopApp(name)
  34. demo_env = env.Clone(CCFLAGS = ' -DRT_THREAD -DFTK_AS_PLUGIN -mcpu=arm920t -O0 -fPIC')
  35. demo_env.Append(CPPPATH = CPATH)
  36. demo_env.Object('ftk_app_demo.c')
  37. for item in src:
  38. item = item.rstr()
  39. Demo(env, item.split('.c')[0])