about summary refs log blame commit diff stats
path: root/cpp/makefile
blob: 554c6c45c2f407bb62e4b385fcd99b66b1aa1c98 (plain) (tree)
1
2
3
4
5
6
7
8
9

                                                             
                 
 




                                                                             
 
              
                                        
 
                                                          
                                 
                                                  
 

                                                                           
                                                                                                                
 

                                                                                                       
                                                                                                     
 
            
      

                               
mu: makefile tangle/tangle mu.cc
	g++ -g -Wall -Wextra -fno-strict-aliasing mu.cc -o mu
	./mu test

# To see what the program looks like after all layers have been applied, read
# mu.cc
mu.cc: 0*
	./tangle/tangle --until 999 > mu.cc
	@make autogenerated_lists >/dev/null

tangle/tangle:
	cd tangle && make && tangle test

# auto-generated files; by convention they end in '_list'.
.PHONY: autogenerated_lists clena
autogenerated_lists: mu.cc function_list test_list

function_list: mu.cc
	@grep -h "^[^ #].*) {" mu.cc |perl -pwe 's/ {.*/;/' > function_list
	@grep -h "^[[:space:]]*TEST(" mu.cc |perl -pwe 's/^\s*TEST\((.*)\)$$/void test_$$1();/' >> function_list

test_list: mu.cc
	@grep -h "^[[:space:]]*void test_" mu.cc |perl -pwe 's/^\s*void (.*)\(\) {.*/$$1,/' > test_list
	@grep -h "^[[:space:]]*TEST(" mu.cc |perl -pwe 's/^\s*TEST\((.*)\)$$/test_$$1,/' >> test_list

clena: clean
clean:
	cd tangle && make clean
	rm -rf mu.cc mu *_list