Skip to content

Commit 4402768

Browse files
committed
Merge branch 'main' into fix-mingw
2 parents e1aa7ef + 7f7fdc6 commit 4402768

19 files changed

+12090
-2322
lines changed

.gitignore

+3-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
output.png
2+
*.mp4
23
nob
34
nob.old
4-
randomart
5+
randomart
6+
build/

README.md

+15-1
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,24 @@ Above image is generated by function:
1010
(add(mult(mult(add(add(add(mult(x, x), mult(x, -0.809645)), mult(add(x, x), add(y, y))), add(mult(mult(0.674010, -0.232019), mult(0.241232, -0.695217)), add(add(x, y), 0.990269))), add(0.090850, add(add(0.164064, x), y))), add(x, y)), mult(x, mult(y, add(y, add(add(mult(x, 0.265273), mult(x, 0.237908)), y))))), mult(add(mult(add(add(mult(mult(0.623806, 0.849694), add(0.416674, 0.995028)), mult(add(0.769761, y), add(0.312180, x))), add(add(add(y, y), mult(y, x)), add(mult(x, -0.266506), add(y, x)))), add(x, mult(add(add(-0.571854, 0.355479), -0.964695), mult(mult(-0.369294, x), mult(x, x))))), add(mult(add(add(x, mult(x, y)), mult(mult(x, y), add(0.518688, x))), add(mult(mult(y, x), x), mult(x, y))), add(mult(add(x, mult(x, y)), x), mult(mult(0.620817, add(0.145679, y)), add(add(x, x), -0.489522))))), y), mult(mult(add(mult(x, add(-0.309250, mult(mult(y, 0.040173), mult(x, x)))), mult(mult(mult(add(x, x), -0.915736), mult(y, 0.117940)), add(x, mult(y, 0.396394)))), y), y))
1111
```
1212

13+
https://github.com/user-attachments/assets/801dd99c-6082-4e83-b7cd-0c666f758a45
14+
15+
*The function that generated above video is to big to fit in this README.*
16+
1317
## Quick Start
1418

19+
### Generate file
20+
21+
```console
22+
$ cc -o nob nob.c
23+
$ ./nob run file output.png
24+
$ feh output.png
25+
```
26+
27+
### Compile to GLSL shader and display interactively
28+
1529
```console
1630
$ cc -o nob nob.c
17-
$ ./nob
31+
$ ./nob run gui
1832
$ feh output.png
1933
```

nob.c

+45-3
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,62 @@
22
#define NOB_STRIP_PREFIX
33
#include "nob.h"
44

5+
// Folders must end with forward slash /
6+
#define BUILD_FOLDER "build/"
7+
#define SRC_FOLDER "src/"
8+
9+
// TODO: redefine for your platform
10+
#define builder_cc(cmd) \
11+
cmd_append(cmd, "cc")
12+
#define builder_flags(cmd) \
13+
cmd_append(cmd, "-Wall", "-Wextra", "-Wswitch-enum", "-ggdb", "-I.")
14+
#define builder_output(cmd, output_path) \
15+
cmd_append(cmd, "-o", output_path)
16+
#define builder_inputs(cmd, ...) \
17+
cmd_append(cmd, __VA_ARGS__)
18+
#define builder_raylib_include_path(cmd) \
19+
cmd_append(cmd, "-I./raylib/raylib-5.0_linux_amd64/include")
20+
#define builder_raylib_lib(cmd) \
21+
cmd_append(cmd, "-L./raylib/raylib-5.0_linux_amd64/lib/", "-l:libraylib.a")
22+
#define builder_libs(cmd) \
23+
cmd_append(cmd, "-lm")
24+
#define builder_mingw(cmd) \
25+
cmd_append(cmd, "-D__USE_MINGW_ANSI_STDIO")
26+
527
int main(int argc, char **argv)
628
{
729
NOB_GO_REBUILD_URSELF(argc, argv);
830

931
Cmd cmd = {0};
32+
const char *program_name = shift(argv, argc);
1033

1134
cmd_append(&cmd, "cc", "-Wall", "-Wextra", "-Wswitch-enum", "-ggdb", "-o", "randomart", "randomart.c", "-lm");
35+
if (!mkdir_if_not_exists(BUILD_FOLDER)) return 1;
36+
37+
builder_cc(&cmd);
38+
builder_flags(&cmd);
39+
builder_raylib_include_path(&cmd);
40+
builder_inputs(&cmd, SRC_FOLDER"randomart.c", SRC_FOLDER"ffmpeg_linux.c");
41+
builder_output(&cmd, BUILD_FOLDER"randomart");
42+
builder_raylib_lib(&cmd);
43+
builder_libs(&cmd);
1244
#ifdef __MINGW32__
13-
cmd_append(&cmd, "-D__USE_MINGW_ANSI_STDIO");
45+
builder_mingw(&cmd)
1446
#endif
15-
if (!cmd_run_sync_and_reset(&cmd)) return 1;
1647

17-
cmd_append(&cmd, "./randomart");
1848
if (!cmd_run_sync_and_reset(&cmd)) return 1;
1949

50+
if (argc > 0) {
51+
const char *command_name = shift(argv, argc);
52+
if (strcmp(command_name, "run") == 0) {
53+
cmd_append(&cmd, BUILD_FOLDER "randomart");
54+
da_append_many(&cmd, argv, argc);
55+
if (!cmd_run_sync_and_reset(&cmd)) return 1;
56+
} else {
57+
nob_log(ERROR, "Unknown command %s", command_name);
58+
return 1;
59+
}
60+
}
61+
2062
return 0;
2163
}

0 commit comments

Comments
 (0)