summary refs log tree commit diff stats
path: root/lyrics
Commit message (Expand)AuthorAgeFilesLines
* "Initial."kaa2023-06-239-0/+223
16c2ac42138466'>f0cf7af7 ^
f0cf7af7 ^
5763322b ^

f0cf7af7 ^



5763322b ^
f0cf7af7 ^
5763322b ^
f0cf7af7 ^
5763322b ^
f0cf7af7 ^
5763322b ^
f0cf7af7 ^
b22e5e14 ^
5763322b ^

34514ae8 ^
f898ee7a ^
f0cf7af7 ^


34514ae8 ^

f0cf7af7 ^


c912b731 ^
5763322b ^


f0f16bdf ^
f0cf7af7 ^
5763322b ^
f0cf7af7 ^
53172ce1 ^
34514ae8 ^
f0cf7af7 ^
c912b731 ^
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





                                   
         

                                                                   



                                                                       
                                                                    
                                                                    
                                 
                                                                              
                                 
                                                                
                        
                                                                                              
                                                                                             

                                                     
                              
               


          

                         


                         
                                 


                                                                                  
                                                                     
                                                                                        
                                    
                                                                                
                                                                                       
                                               
 
                       
#!/bin/sh
# Compile mu from scratch.

set -v
set -e  # stop immediately on error

cd tangle
  # auto-generate various lists (ending in '_list' by convention) {
  # list of types
  {
    grep -h "^struct .* {" [0-9]*.cc  |sed 's/\(struct *[^ ]*\).*/\1;/'
    grep -h "^typedef " [0-9]*.cc
  }  > type_list
  # list of function declarations, so I can define them in any order
  grep -h "^[^ #].*) {" [0-9]*.cc  |sed 's/ {.*/;/'  > function_list
  # list of code files to compile
  ls [0-9]*.cc  |grep -v "\.test\.cc$"  |sed 's/.*/#include "&"/'  > file_list
  # list of test files to compile
  ls [0-9]*.test.cc  |sed 's/.*/#include "&"/'  > test_file_list
  # list of tests to run
  grep -h "^[[:space:]]*void test_" [0-9]*.cc  |sed 's/^\s*void \(.*\)() {$/\1,/'  > test_list
  grep -h "^\s*void test_" [0-9]*.cc  |sed 's/^\s*void \(.*\)() {.*/"\1",/'  > test_name_list
  # }
  # Now that we have all the _lists, compile 'tangle'
  g++ -g -O2 boot.cc -o tangle
  ./tangle test
cd ..

cd termbox
  gcc -g -O2 -c termbox.c
  gcc -g -O2 -c utf8.c
  ar rcs libtermbox.a *.o
cd ..

./tangle/tangle [0-9]*.cc > mu.cc
# auto-generate function declarations, so I can define them in any order
# functions start out unindented, have all args on the same line, and end in ') {'
#
#                                      \/ ignore struct/class methods
grep -h "^[^[:space:]#].*) {$" mu.cc  |grep -v ":.*("  |sed 's/ {.*/;/'  > function_list
# auto-generate list of tests to run
grep -h "^\s*void test_" mu.cc  |sed 's/^\s*void \(.*\)() {.*/\1,/'  > test_list
grep -h "^\s*void test_" mu.cc  |sed 's/^\s*void \(.*\)() {.*/"\1",/'  > test_name_list
g++ -g -O2 mu.cc termbox/libtermbox.a -o mu_bin

cat [0-9]*.mu > core.mu