squiggle.c

Self-contained Monte Carlo estimation in C99
Log | Files | Refs | README

makefile (4994B)


      1 # Interface: 
      2 # make all 
      3 # make format-all
      4 # make run-all
      5 # make one             DIR=06_nuclear_recovery
      6 # make format-one      DIR=06_nuclear_recovery
      7 # make run-one         DIR=06_nuclear_recovery
      8 # make time-linux-one  DIR=06_nuclear_recovery
      9 # make profile-one     DIR=06_nuclear_recovery
     10 
     11 # Compiler
     12 CC=gcc
     13 # CC=tcc # <= faster compilation
     14 
     15 # Main file
     16 SRC=example.c
     17 OUTPUT=example
     18 
     19 ## Dependencies
     20 SQUIGGLE=../../squiggle.c 
     21 SQUIGGLE_MORE=../../squiggle_more.c
     22 MATH=-lm
     23 OPENMP=-fopenmp
     24 DEPS=$(SQUIGGLE) $(SQUIGGLE_MORE) $(MATH) $(OPENMP)
     25 
     26 ## Flags
     27 # DEBUG=-fsanitize=address,undefined
     28 # DEBUG=-g
     29 DEBUG=
     30 WARN=-Wall -Wextra -Wdouble-promotion -Wconversion
     31 STANDARD=-std=c99
     32 WARNINGS=-Wall
     33 OPTIMIZED=-O3  #-Ofast
     34 
     35 ## Formatter
     36 STYLE_BLUEPRINT=webkit
     37 FORMATTER=clang-format -i -style=$(STYLE_BLUEPRINT)
     38 
     39 ## make all
     40 all:
     41 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 00_example_template/$(SRC)             $(DEPS) -o 00_example_template/$(OUTPUT)
     42 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 02_ci_beta/$(SRC)                      $(DEPS) -o 02_ci_beta/$(OUTPUT)
     43 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 03_ci_beta_parallel/$(SRC)             $(DEPS) -o 03_ci_beta_parallel/$(OUTPUT)
     44 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 04_nuclear_war/$(SRC)                  $(DEPS) -o 04_nuclear_war/$(OUTPUT)
     45 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 05_burn_10kg_fat/$(SRC)                $(DEPS) -o 05_burn_10kg_fat/$(OUTPUT)
     46 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 06_nuclear_recovery/$(SRC)             $(DEPS) -o 06_nuclear_recovery/$(OUTPUT)
     47 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 07_algebra/$(SRC)                      $(DEPS) -o 07_algebra/$(OUTPUT)
     48 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 08_algebra_and_conversion/$(SRC)       $(DEPS) -o 08_algebra_and_conversion/$(OUTPUT)
     49 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 09_ergonomic_algebra/$(SRC)            $(DEPS) -o 09_ergonomic_algebra/$(OUTPUT)
     50 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 10_twitter_thread_example/$(SRC)       $(DEPS) -o 10_twitter_thread_example/$(OUTPUT)
     51 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 11_billion_lognormals_paralell/$(SRC)  $(DEPS) -o 11_billion_lognormals_paralell/$(OUTPUT)
     52 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 12_time_to_botec_parallel/$(SRC)       $(DEPS) -o 12_time_to_botec_parallel/$(OUTPUT)
     53 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 13_parallelize_min/$(SRC)              $(DEPS) -o 13_parallelize_min/$(OUTPUT)
     54 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 14_check_confidence_interval/$(SRC)    $(DEPS) -o 14_check_confidence_interval/$(OUTPUT)
     55 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) 15_time_to_botec_custom_mixture/$(SRC)    $(DEPS) -o 15_time_to_botec_custom_mixture/$(OUTPUT)
     56 
     57 format-all:
     58 	$(FORMATTER) 00_example_template/$(SRC)
     59 	$(FORMATTER) 01_sample_from_cdf/$(SRC)
     60 	$(FORMATTER) 02_ci_beta/$(SRC)
     61 	$(FORMATTER) 03_ci_beta_parallel/$(SRC)
     62 	$(FORMATTER) 04_nuclear_war/$(SRC)
     63 	$(FORMATTER) 05_burn_10kg_fat/$(SRC)
     64 	$(FORMATTER) 06_nuclear_recovery/$(SRC)
     65 	$(FORMATTER) 07_algebra/$(SRC)
     66 	$(FORMATTER) 08_algebra_and_conversion/$(SRC)
     67 	$(FORMATTER) 09_ergonomic_algebra/$(SRC)
     68 	$(FORMATTER) 10_twitter_thread_example/$(SRC)
     69 	$(FORMATTER) 11_billion_lognormals_paralell/$(SRC)
     70 	$(FORMATTER) 12_time_to_botec_parallel/$(SRC)
     71 	$(FORMATTER) 13_parallelize_min/$(SRC)
     72 	$(FORMATTER) 14_check_confidence_interval/$(SRC)
     73 
     74 run-all:
     75 	00_example_template/$(OUTPUT)
     76 	01_sample_from_cdf/$(OUTPUT)
     77 	02_ci_beta/$(OUTPUT)
     78 	03_ci_beta_parallel/$(OUTPUT)
     79 	04_nuclear_war/$(OUTPUT)
     80 	05_burn_10kg_fat/$(OUTPUT)
     81 	06_nuclear_recovery/$(OUTPUT)
     82 	07_algebra/$(OUTPUT)
     83 	08_algebra_and_conversion/$(OUTPUT)
     84 	09_ergonomic_algebra/$(OUTPUT)
     85 	10_twitter_thread_example/$(OUTPUT)
     86 	11_billion_lognormals_paralell/$(OUTPUT)
     87 	12_time_to_botec_parallel/$(OUTPUT)
     88 	13_parallelize_min/$(OUTPUT)
     89 	14_check_confidence_interval/$(OUTPUT)
     90 
     91 ## make one DIR=06_nuclear_recovery
     92 one: $(DIR)/$(SRC)
     93 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) $(DIR)/$(SRC) $(DEPS) -o $(DIR)/$(OUTPUT)
     94 
     95 ## make format-one DIR=06_nuclear_recovery
     96 format-one: $(DIR)/$(SRC)
     97 	$(FORMATTER) $(DIR)/$(SRC)
     98 
     99 ## make run-one DIR=06_nuclear_recovery
    100 run-one: $(DIR)/$(OUTPUT)
    101 	$(DIR)/$(OUTPUT) && echo
    102 
    103 ## make time-linux-one DIR=06_nuclear_recovery
    104 time-linux-one: $(DIR)/$(OUTPUT)
    105 	@echo "Requires /bin/time, found on GNU/Linux systems" && echo
    106 	@echo "Running 100x and taking avg time $(DIR)/$(OUTPUT)"
    107 	@t=$$(/usr/bin/time -f "%e" -p bash -c 'for i in {1..100}; do $(DIR)/$(OUTPUT); done' 2>&1 >/dev/null | grep real | awk '{print $$2}' ); echo "scale=2; 1000 * $$t / 100" | bc | sed "s|^|Time: |" | sed 's|$$|ms|' && echo
    108 
    109 ## e.g., make profile-linux-one DIR=06_nuclear_recovery
    110 profile-linux-one: 
    111 	echo "Requires perf, which depends on the kernel version, and might be in linux-tools package or similar"
    112 	echo "Must be run as sudo"
    113 	$(CC) $(OPTIMIZED) $(DEBUG) $(WARN) $(DIR)/$(SRC) $(DEPS) -o $(DIR)/$(OUTPUT)
    114 	# $(CC) $(SRC) $(DEPS) -o $(OUTPUT)
    115 	sudo perf record $(DIR)/$(OUTPUT)
    116 	sudo perf report
    117 	rm perf.data