-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.todo
More file actions
83 lines (73 loc) · 4.17 KB
/
.todo
File metadata and controls
83 lines (73 loc) · 4.17 KB
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
83
Questions:
☐ Check GNU Convention https://www.gnu.org/software/make/manual/html_node/Makefile-Conventions.html#Makefile-Conventions
☐ State of art for static analazers and linters
☐ State of art for unit testing and black box testing
☐ Why recursively includes subfolders of INC_FOLDER (explain why in README)
Core Features:
✔ basic rules all, clean, fclean, re @done(21-11-27 12:26)
✔ make (re)debug @done(21-11-27 12:26)
✔ make VERBOSE=1 @done(21-11-27 12:26)
✔ Compile if necessary (C and H) @done(21-11-27 12:26)
✔ Progress status @done(21-11-27 12:26)
✔ Multithread @done(21-11-27 12:26)
✔ Out-of-source @done(21-11-27 12:26)
✔ Document Configuration @done(21-12-08 21:11)
✔ `make help` @done(21-12-16 17:08)
✔ release @done(21-12-29 21:14)
☐ Self update (autocheck if new version) A good chunk of it have been done, but removed for stability (https://github.com/FauconFan/makefileC/commit/60141c3484229df4604b2df0149645e3625e3789 and https://github.com/FauconFan/makefileC/commit/478f158d7ebc2bfd7fa36c33940c53093e328ae4)
✔ Self init (able to setup hello-world with just makefile) @done(21-12-31 14:34)
Core Extended:
✔ Declare what goal is (binary, library static/dynamic) @done(22-01-16 20:39)
☐ Subprojects (call and indentation)
✔ Install/Uninstall rule @done(22-01-16 20:39)
Core with CPP:
☐ Support cpp
☐ Declare what lang (C, CPP, MIXED)
Tests:
✔ Test each utility through a pipeline @done(21-12-12 13:52)
✔ Test default rule (no target) @done(21-12-31 16:36)
✔ Test for error-handling if the output is the same, whatever the target @done(21-12-31 16:58)
☐ Test all new errors introduced by handling libraries, install and subprojects
☐ Test multithread (How ?)
☐ Test progress status (How ?)
☐ Test different values of TERM (How ?) and NO_COLORS variable
☐ Test whether undefined variable is printed by Makefile
✔ make help compared with README.md @done(22-01-15 15:13)
☐ Test whether dependencies are took into account (*.d)
☐ Design a benchmark suite compared to a minimal Makefile with no fancy stuff
☐ Test the validity of this makefile in various distributions platforms (using Docker)
Examples:
☐ Implement a small utility to copy files and directories with GUI
☐ Implement a small utility to generate fractals with GUI
☐ Implement C/Cpp mixed projects
Error Handling:
✔ Config file is missing @done(21-11-27 12:28)
✔ Unauthorized variables are defined @done(21-11-27 12:28)
✔ Specified files are missing @done(21-11-27 12:28)
✔ Presence of unspecified files @done(21-11-27 12:28)
☐ Appropriate message if target doesn't exist
✔ Check if NAME or NAME_DEBUG is a keyword in the Makefile definition @done(22-01-05 17:31)
✔ Check if NAME and NAME_DEBUG are the same @done(22-01-05 17:35)
✔ Check if BUILD_FOLDER is different from SRC_FOLDER and INC_FOLDER @done(22-01-05 18:07)
☐ Check content of actual folder when doing make init
☐ Check if user has rights to rights on directory
Check if valuable:
☐ Check if variables are being redefined in config file
☐ Check prerequisites of the makefile (shell calls)
☐ Check if naming conventions for libraries is respected
Lint, unit tests and black boxes:
☐ Create a dockerfile that is easily changeable, upon configuration
☐ Unit tests (white box tests)
☐ Black box tests (inputs / outputs / behavior)
☐ Test coverage report (from tests)
☐ Check memory leaks (from tests)
Bugs:
☐ When directory names changed, deps file are not updated, it leads to wrong unspecified behavior, needs to get an appropriate behavior
Unprioritized:
☐ Support Windows and MacOS
☐ Look checkmake in case it becomes really interesting
☐ Good introduction to the power of Make: https://gist.github.com/isaacs/62a2d1825d04437c6f08
☐ Good practices: https://tech.davis-hansson.com/p/make/
☐ Read this and look for improvement: https://www.oreilly.com/library/view/managing-projects-with/0596006101/ch10.html
☐ Best article found so far: http://nuclear.mutantstargoat.com/articles/make/
☐ Install dynamic libraries: https://tldp.org/HOWTO/Program-Library-HOWTO/shared-libraries.html