summaryrefslogtreecommitdiff
path: root/README
blob: 4a92347f0ec36ef3964c14d2de8b9ba63b6c5a5b (plain)
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
femtokit
========

Femtokit is a graphical user interface toolkit. In other words, it provides an 
abstraction to the programmer in order to create graphical user interfaces 
without the need of manually manipulating the graphics primitives.

The name "Femtokit" is a wordplay between *femto* (a really small order of 
magnitude in the SI prefixes, 10^-15 to be exact) and *"tokit"*, an 
abbreviation of "toolkit".

Goals
-----

The main goal of Femtokit is providing a *comfortable level of abstraction* 
over the raw graphics programming primitives, while also not sacrificing 
*freedom* (what the user can achieve) or *minimal resource usage*.

Other goals of Femtokit include the following:

- Portability (being able to run on as many platforms as possible with little 
  or no modification).
- Tying code as little as possible to third-party software or hardware. In 
  other words, using mostly what's expected to be present in the end user's 
  machine, both software-wise and hardware-wise.

Compilation and usage
---------------------

As I may have said somewhere else, you need **OpenGL** (development version, 
that with header files) and **freeGLUT** (development version for this one as 
well).

After installing the required dependencies, run the following command.

	./sh/platdep.sh

If the command printed one or more make file macros, consider the macro that 
most closely represents your platform. For example, if the script outputs both 
`OBJS_LINUX` and `OBJS_DEBIAN`, you might want to go with `OBJS_DEBIAN` as it's 
more specific and should provide better support. Then, run the following line 
after replacing `MACRO` with the name you just chose.

	make 'OBJS_PLATDEP=$(MACRO)'

This is going to compile all source files into object files and then build a 
static library out of them.

These below are other useful make file targets. It is advised to specify the 
macro definition above for all targets since some of them may depend on it. 
Alternatively, you could edit the make file to make the definition permanent.

- **`make`** or **`make all`** builds all the translation units, skipping those 
  which have been built already.
- **`make install`** moves all object files to the respective directories in 
  the machine's file system.
- **`make uninstall`** removes all object files from the machine's file system.
- **`make clean`** removes all object files produced by `make` from the 
  repository's directory.

The ultimate object file is a library called `libfemtokit`, which is 
essentially what you're going to link your programs against.

Repository structure
--------------------

The repository's root directory contains almost everything, including the 
source code, a header file with definitions for all symbols, and a make file.

Sub-directories contain secondary files and directories like scripts, images, 
data files, documentation, manual pages, et cetera.

Aesthetics
----------

Follow the aesthetics.

License (or "Can I steal your code?")
--------------------------------------

Unlicense, see LICENSE. (Yes.)