343 lines
8.9 KiB
Makefile
343 lines
8.9 KiB
Makefile
STD = c++17
|
|
|
|
ifndef OS
|
|
OS = $(shell uname)
|
|
endif
|
|
ifeq ($(OS), Darwin)
|
|
CXXFLAGS = -std=$(STD) -c -O3 -fPIC -mmacosx-version-min=10.15 -I src
|
|
else
|
|
CXXFLAGS = -std=$(STD) -c -O3 -fPIC -I src
|
|
endif
|
|
|
|
NASAL_HEADER = \
|
|
src/ast_dumper.h\
|
|
src/ast_visitor.h\
|
|
src/nasal_ast.h\
|
|
src/natives/builtin.h\
|
|
src/nasal_codegen.h\
|
|
src/nasal_dbg.h\
|
|
src/nasal_err.h\
|
|
src/nasal_gc.h\
|
|
src/nasal_import.h\
|
|
src/nasal_lexer.h\
|
|
src/nasal_opcode.h\
|
|
src/nasal_parse.h\
|
|
src/nasal_vm.h\
|
|
src/nasal_type.h\
|
|
src/nasal.h\
|
|
src/optimizer.h\
|
|
src/symbol_finder.h\
|
|
src/cli/cli.h\
|
|
src/natives/fg_props.h\
|
|
src/natives/bits_lib.h\
|
|
src/natives/io_lib.h\
|
|
src/natives/math_lib.h\
|
|
src/natives/dylib_lib.h\
|
|
src/natives/json_lib.h\
|
|
src/natives/unix_lib.h\
|
|
src/natives/coroutine.h\
|
|
src/natives/regex_lib.h\
|
|
src/natives/subprocess.h\
|
|
src/repl/repl.h\
|
|
src/util/fs.h\
|
|
src/util/util.h
|
|
|
|
NASAL_OBJECT = \
|
|
build/nasal_err.o\
|
|
build/nasal_ast.o\
|
|
build/ast_visitor.o\
|
|
build/bits_lib.o\
|
|
build/ast_dumper.o\
|
|
build/nasal_lexer.o\
|
|
build/nasal_parse.o\
|
|
build/nasal_import.o\
|
|
build/optimizer.o\
|
|
build/nasal_opcode.o\
|
|
build/symbol_finder.o\
|
|
build/nasal_codegen.o\
|
|
build/nasal_gc.o\
|
|
build/builtin.o\
|
|
build/fg_props.o\
|
|
build/io_lib.o\
|
|
build/math_lib.o\
|
|
build/unix_lib.o\
|
|
build/dylib_lib.o\
|
|
build/subprocess.o\
|
|
build/json_lib.o\
|
|
build/coroutine.o\
|
|
build/nasal_type.o\
|
|
build/nasal_vm.o\
|
|
build/nasal_dbg.o\
|
|
build/regex_lib.o\
|
|
build/repl.o\
|
|
build/cli.o\
|
|
build/fs.o\
|
|
build/util.o\
|
|
build/main.o
|
|
|
|
|
|
# for test
|
|
nasal: $(NASAL_OBJECT) | build
|
|
@if [ OS = "Darwin" ]; then\
|
|
$(CXX) $(NASAL_OBJECT) -O3 -o nasal -ldl -lpthread -stdlib=libc++ -static-libstdc++;\
|
|
else\
|
|
$(CXX) $(NASAL_OBJECT) -O3 -o nasal -ldl -lpthread;\
|
|
fi
|
|
|
|
nasal.exe: $(NASAL_OBJECT) | build
|
|
$(CXX) $(NASAL_OBJECT) -O3 -o nasal.exe
|
|
|
|
build:
|
|
@ if [ ! -d build ]; then mkdir build; fi
|
|
|
|
build/main.o: $(NASAL_HEADER) src/main.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/main.cpp -o build/main.o
|
|
|
|
build/cli.o: src/cli/cli.h src/cli/cli.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/cli/cli.cpp -o build/cli.o
|
|
|
|
build/util.o: src/util/util.h src/util/util.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/util/util.cpp -o build/util.o
|
|
|
|
build/fs.o: src/nasal.h src/util/util.h src/util/fs.h src/util/fs.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/util/fs.cpp -o build/fs.o
|
|
|
|
build/repl.o: $(NASAL_HEADER) src/repl/repl.h src/repl/repl.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/repl/repl.cpp -o build/repl.o
|
|
|
|
build/nasal_err.o: src/nasal.h src/repl/repl.h src/nasal_err.h src/nasal_err.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_err.cpp -o build/nasal_err.o
|
|
|
|
build/nasal_type.o:\
|
|
src/nasal.h\
|
|
src/util/util.h\
|
|
src/nasal_type.h src/nasal_type.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_type.cpp -o build/nasal_type.o
|
|
|
|
build/nasal_gc.o:\
|
|
src/nasal.h\
|
|
src/util/util.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/nasal_gc.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_gc.cpp -o build/nasal_gc.o
|
|
|
|
build/nasal_import.o: \
|
|
src/nasal.h\
|
|
src/nasal_ast.h\
|
|
src/nasal_lexer.h\
|
|
src/nasal_parse.h\
|
|
src/util/util.h\
|
|
src/util/fs.h\
|
|
src/nasal_import.h src/nasal_import.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_import.cpp -o build/nasal_import.o
|
|
|
|
build/nasal_lexer.o: \
|
|
src/nasal.h\
|
|
src/repl/repl.h\
|
|
src/util/util.h\
|
|
src/util/fs.h\
|
|
src/nasal_err.h\
|
|
src/nasal_lexer.h src/nasal_lexer.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_lexer.cpp -o build/nasal_lexer.o
|
|
|
|
build/nasal_ast.o: \
|
|
src/nasal.h\
|
|
src/nasal_err.h\
|
|
src/nasal_ast.h src/nasal_ast.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_ast.cpp -o build/nasal_ast.o
|
|
|
|
build/builtin.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/util/util.h\
|
|
src/natives/builtin.h\
|
|
src/natives/builtin.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/builtin.cpp -o build/builtin.o
|
|
|
|
build/coroutine.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/coroutine.h src/natives/coroutine.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/coroutine.cpp -o build/coroutine.o
|
|
|
|
build/bits_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/bits_lib.h src/natives/bits_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/bits_lib.cpp -o build/bits_lib.o
|
|
|
|
build/math_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/math_lib.h src/natives/math_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/math_lib.cpp -o build/math_lib.o
|
|
|
|
build/io_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/util/fs.h\
|
|
src/natives/io_lib.h src/natives/io_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/io_lib.cpp -o build/io_lib.o
|
|
|
|
build/dylib_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/util/util.h\
|
|
src/util/fs.h\
|
|
src/natives/dylib_lib.h src/natives/dylib_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/dylib_lib.cpp -o build/dylib_lib.o
|
|
|
|
build/json_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/util/util.h\
|
|
src/natives/json_lib.h src/natives/json_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/json_lib.cpp -o build/json_lib.o
|
|
|
|
build/unix_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/unix_lib.h src/natives/unix_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/unix_lib.cpp -o build/unix_lib.o
|
|
|
|
build/regex_lib.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/regex_lib.h src/natives/regex_lib.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/regex_lib.cpp -o build/regex_lib.o
|
|
|
|
build/subprocess.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/subprocess.h src/natives/subprocess.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/subprocess.cpp -o build/subprocess.o
|
|
|
|
|
|
build/fg_props.o: \
|
|
src/nasal.h\
|
|
src/nasal_type.h\
|
|
src/nasal_gc.h\
|
|
src/natives/fg_props.h src/natives/fg_props.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/natives/fg_props.cpp -o build/fg_props.o
|
|
|
|
build/nasal_codegen.o: $(NASAL_HEADER) src/nasal_codegen.h src/nasal_codegen.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_codegen.cpp -o build/nasal_codegen.o
|
|
|
|
build/nasal_opcode.o: \
|
|
src/nasal.h\
|
|
src/natives/builtin.h\
|
|
src/util/util.h\
|
|
src/nasal_opcode.h src/nasal_opcode.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_opcode.cpp -o build/nasal_opcode.o
|
|
|
|
build/nasal_parse.o: \
|
|
src/nasal.h\
|
|
src/nasal_ast.h\
|
|
src/nasal_lexer.h\
|
|
src/nasal_err.h\
|
|
src/util/util.h\
|
|
src/nasal_parse.h src/nasal_parse.cpp src/nasal_ast.h | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_parse.cpp -o build/nasal_parse.o
|
|
|
|
build/optimizer.o: \
|
|
src/nasal.h\
|
|
src/nasal_err.h\
|
|
src/nasal_ast.h\
|
|
src/ast_visitor.h\
|
|
src/optimizer.h src/optimizer.cpp src/nasal_ast.h | build
|
|
$(CXX) $(CXXFLAGS) src/optimizer.cpp -o build/optimizer.o
|
|
|
|
build/symbol_finder.o: \
|
|
src/nasal.h\
|
|
src/nasal_err.h\
|
|
src/nasal_ast.h\
|
|
src/ast_visitor.h\
|
|
src/symbol_finder.h src/symbol_finder.cpp src/nasal_ast.h | build
|
|
$(CXX) $(CXXFLAGS) src/symbol_finder.cpp -o build/symbol_finder.o
|
|
|
|
build/ast_visitor.o: \
|
|
src/nasal.h\
|
|
src/nasal_err.h\
|
|
src/nasal_ast.h\
|
|
src/ast_visitor.h src/ast_visitor.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/ast_visitor.cpp -o build/ast_visitor.o
|
|
|
|
build/ast_dumper.o: \
|
|
src/nasal.h\
|
|
src/nasal_err.h\
|
|
src/nasal_ast.h\
|
|
src/ast_visitor.h\
|
|
src/util/util.h\
|
|
src/ast_dumper.h src/ast_dumper.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/ast_dumper.cpp -o build/ast_dumper.o
|
|
|
|
build/nasal_vm.o: $(NASAL_HEADER) src/nasal_vm.h src/nasal_vm.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_vm.cpp -o build/nasal_vm.o
|
|
|
|
build/nasal_dbg.o: $(NASAL_HEADER) src/nasal_dbg.h src/nasal_dbg.cpp | build
|
|
$(CXX) $(CXXFLAGS) src/nasal_dbg.cpp -o build/nasal_dbg.o
|
|
|
|
.PHONY: clean
|
|
clean:
|
|
@ echo "[clean] nasal" && if [ -e nasal ]; then rm nasal; fi
|
|
@ echo "[clean] nasal.exe" && if [ -e nasal.exe ]; then rm nasal.exe; fi
|
|
@ rm $(NASAL_OBJECT)
|
|
|
|
.PHONY: test
|
|
test:nasal
|
|
@ ./nasal -t -d test/andy_gc_test.nas
|
|
@ ./nasal test/argparse_test.nas
|
|
@ ./nasal -e test/ascii-art.nas
|
|
@ ./nasal -t -d test/bfs.nas
|
|
@ ./nasal -t test/bigloop.nas
|
|
@ ./nasal -t test/bp.nas
|
|
@ ./nasal -d test/calc.nas
|
|
@ ./nasal -e test/choice.nas
|
|
@ ./nasal -e test/class.nas
|
|
@ ./nasal -t -d test/console3D.nas 20
|
|
@ ./nasal -e test/coroutine.nas
|
|
@ ./nasal -t -d test/datalog.nas
|
|
@ ./nasal -e test/diff.nas
|
|
@ ./nasal -e test/donuts.nas 15
|
|
-@ ./nasal -d test/exception.nas
|
|
@ ./nasal -t -d test/fib.nas
|
|
@ ./nasal -e test/filesystem.nas
|
|
@ ./nasal -t -d test/globals_test.nas
|
|
@ ./nasal -d test/hexdump.nas
|
|
@ ./nasal -e test/json.nas
|
|
@ ./nasal -e test/leetcode1319.nas
|
|
@ ./nasal -d test/lexer.nas
|
|
@ ./nasal -d test/life.nas
|
|
@ ./nasal -t test/loop.nas
|
|
@ ./nasal -t test/mandelbrot.nas
|
|
@ ./nasal -t test/md5_self.nas
|
|
@ ./nasal -t -d test/md5compare.nas
|
|
@ ./nasal -d test/module_test.nas
|
|
@ ./nasal -e test/nasal_test.nas
|
|
@ ./nasal -t -d test/occupation.nas 2
|
|
@ ./nasal -t -d test/pi.nas
|
|
@ ./nasal -t -d test/prime.nas
|
|
@ ./nasal -e test/qrcode.nas
|
|
@ ./nasal -t -d test/quick_sort.nas
|
|
@ ./nasal -t -d test/regex_test.nas
|
|
@ ./nasal -t -d test/replace_test.nas
|
|
@ ./nasal -e test/scalar.nas hello world
|
|
@ ./nasal test/subprocess_test.nas
|
|
@ ./nasal -e test/trait.nas
|
|
@ ./nasal -t -d test/turingmachine.nas
|
|
@ ./nasal -d test/wavecollapse.nas
|
|
@ ./nasal -d test/wavecity.nas
|
|
@ ./nasal test/word_collector.nas test/md5compare.nas
|
|
@ ./nasal -t -d test/ycombinator.nas
|