PageRenderTime 76ms CodeModel.GetById 24ms RepoModel.GetById 0ms app.codeStats 0ms

/doc/TUTORIAL-ROADMAP

http://github.com/fare/xcvb
#! | 80 lines | 65 code | 15 blank | 0 comment | 0 complexity | eef0b8af7890e38c31e3d610fa015d08 MD5 | raw file
  1. Tutorial Outline / Roadmap of incremental functionality.
  2. I'm a new user to Common Lisp, and I hear about xcvb to build my software, what are the
  3. first things I'll expect to work?
  4. 0. How do I get and install XCVB if it is not already on my distro?
  5. [We should ensure that fedora/rhel, debian/ubuntu, gentoo have xcvb as a distro package.
  6. And binary distributions for MacOSX, Windows.
  7. Make sure it is buildable from source with one of 4 lisp environments: SBCL, CLOZURE, CLISP, ECL.]
  8. 1. The first thing I'll do is write a hello world project. I expect a binary as an output.
  9. [XCVB should support two styles of authoring: the REPL, and at the shell command line.]
  10. [in the shell command environment]
  11. I expect to write these files:
  12. hello-world.lisp
  13. package.lisp
  14. build.xcvb
  15. Then I expect to 'xcvb' to automatically read build.xcvb in the current working directory
  16. and produce the finished binary is the result. Without me specifying it, the simple-build
  17. backend is the one that should be chosen by xcvb.
  18. [in the REPL]
  19. ?
  20. 2. I want to expand my hello-world example by including some other libraries in common lisp.
  21. I add the "Alexandria" library as a dependency.
  22. Now:
  23. What if it isn't installed on my machine?
  24. How do I get it if it isn't?
  25. How do I tell xcvb where to find it? What do I do in the build.xcvb?
  26. How does this dependency get built? [It is an asdf project, xcvb builds it for me or quicklisp?]
  27. I'll likely use Quicklisp to get it, should xcvb understand Quicklisp somehow?
  28. 3. Now, my application is getting bigger, I want to separate the
  29. source into a couple of libraries internal to my application.How do I
  30. do that with xcvb? [This is the first time I'll really have to
  31. understand the notion of the namespace of libraries, the "fullname"
  32. and the "root repository". Should those concepts have an overhaul or
  33. are they ok the way they stand?]
  34. app/
  35. main.lisp
  36. stuff.lisp
  37. lib1/
  38. foo.lisp
  39. bar.lisp
  40. lib2/
  41. stuff.lisp
  42. bar.lisp [different source file]
  43. 4. Now, I find that I need to write a small C library in order to implement some funcitonality,
  44. so how do I specify the c/c++ files, the compiler flags, etc, in order to compile those files.
  45. Plus I need to use CFFI, so how do I ensure the dependency of the C fle and library production
  46. occur in the right location to the loading of the CFFI lisp files? I need to intermix the
  47. lisp and C/C++/Fortran compilation into the whole dependency graph.
  48. 5. Testing
  49. 6. Generated source files for later compilation into the application dependency graph.
  50. 7. So my application is now bigger and I want to generate multiple executables or targets.
  51. Some of the SAME source files may be compiled differently (with different debugging or optimization
  52. flags) for the different targets.
  53. 8. Parallel build.
  54. many process in parallel
  55. * Distributed build
  56. many machines in parallel
  57. 9. XCVB doesn't do something I need like: supporting a target
  58. compiler, reading a dependency language, or evaluating the computations
  59. in a certain manner, so I want to follow a published API which tells
  60. me how to write a plugin/extension which performs what I need. Then,
  61. there should be a place I can go to contribute the extension. All
  62. extensions should be written under MIT License and if so, the XCVB
  63. developers will be very amenable to accepting it for distribution.
  64. XCVB should understand how to use xcvb extensions gotten from Quicklisp
  65. for people who want to circumvent our official distribution mechanism.