Skip to content

Commit

Permalink
Merge pull request #30 from sidi762/master
Browse files Browse the repository at this point in the history
Updated makefile to ensure the macOS binaries build by GitHub action are backward compatible to macOS 10.15
  • Loading branch information
ValKmjolnir authored Oct 7, 2023
2 parents 982c575 + 5233cef commit d661a6b
Show file tree
Hide file tree
Showing 2 changed files with 51 additions and 32 deletions.
68 changes: 41 additions & 27 deletions makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
STD=c++17
OS := $(shell uname)
ifeq ($(OS), Darwin)
CXXFLAGS=-std=$(STD) -c -O3 -fno-exceptions -fPIC -mmacosx-version-min=10.15
else
CXXFLAGS=-std=$(STD) -c -O3 -fno-exceptions -fPIC
endif
CPPFLAGS=-I .


NASAL_HEADER=\
src/ast_dumper.h\
Expand Down Expand Up @@ -53,9 +61,14 @@ NASAL_OBJECT=\
build/repl.o\
build/main.o


# for test
nasal: $(NASAL_OBJECT) | build
$(CXX) $(NASAL_OBJECT) -O3 -o nasal -ldl -lpthread
@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
Expand All @@ -64,142 +77,143 @@ build:
@ if [ ! -d build ]; then mkdir build; fi

build/main.o: $(NASAL_HEADER) src/main.cpp | build
$(CXX) -std=$(STD) -c -O3 src/main.cpp -fno-exceptions -fPIC -o build/main.o -I .
$(CXX) $(CXXFLAGS) src/main.cpp -o build/main.o

build/nasal_misc.o: src/nasal.h src/nasal_misc.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_misc.cpp -fno-exceptions -fPIC -o build/nasal_misc.o -I .
$(CXX) $(CXXFLAGS) src/nasal_misc.cpp -o build/nasal_misc.o

build/repl.o: src/nasal.h src/repl.h src/repl.cpp | build
$(CXX) -std=$(STD) -c -O3 src/repl.cpp -fno-exceptions -fPIC -o build/repl.o -I .
$(CXX) $(CXXFLAGS) src/repl.cpp -o build/repl.o

build/nasal_err.o: src/nasal.h src/repl.h src/nasal_err.h src/nasal_err.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_err.cpp -fno-exceptions -fPIC -o build/nasal_err.o -I .
$(CXX) $(CXXFLAGS) src/nasal_err.cpp -o build/nasal_err.o

build/nasal_gc.o: src/nasal.h src/nasal_gc.h src/nasal_gc.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_gc.cpp -fno-exceptions -fPIC -o build/nasal_gc.o -I .
$(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/nasal_import.h src/nasal_import.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_import.cpp -fno-exceptions -fPIC -o build/nasal_import.o -I .
$(CXX) $(CXXFLAGS) src/nasal_import.cpp -o build/nasal_import.o

build/nasal_lexer.o: \
src/nasal.h\
src/repl.h\
src/nasal_err.h\
src/nasal_lexer.h src/nasal_lexer.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_lexer.cpp -fno-exceptions -fPIC -o build/nasal_lexer.o -I .
$(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) -std=$(STD) -c -O3 src/nasal_ast.cpp -fno-exceptions -fPIC -o build/nasal_ast.o -I .
$(CXX) $(CXXFLAGS) src/nasal_ast.cpp -o build/nasal_ast.o

build/nasal_builtin.o: \
src/nasal.h\
src/nasal_gc.h\
src/nasal_builtin.h src/nasal_builtin.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_builtin.cpp -fno-exceptions -fPIC -o build/nasal_builtin.o -I .
$(CXX) $(CXXFLAGS) src/nasal_builtin.cpp -o build/nasal_builtin.o

build/coroutine.o: \
src/nasal.h\
src/nasal_gc.h\
src/coroutine.h src/coroutine.cpp | build
$(CXX) -std=$(STD) -c -O3 src/coroutine.cpp -fno-exceptions -fPIC -o build/coroutine.o -I .
$(CXX) $(CXXFLAGS) src/coroutine.cpp -o build/coroutine.o

build/bits_lib.o: \
src/nasal.h\
src/nasal_gc.h\
src/bits_lib.h src/bits_lib.cpp | build
$(CXX) -std=$(STD) -c -O3 src/bits_lib.cpp -fno-exceptions -fPIC -o build/bits_lib.o -I .
$(CXX) $(CXXFLAGS) src/bits_lib.cpp -o build/bits_lib.o


build/math_lib.o: \
src/nasal.h\
src/nasal_gc.h\
src/math_lib.h src/math_lib.cpp | build
$(CXX) -std=$(STD) -c -O3 src/math_lib.cpp -fno-exceptions -fPIC -o build/math_lib.o -I .
$(CXX) $(CXXFLAGS) src/math_lib.cpp -o build/math_lib.o

build/io_lib.o: \
src/nasal.h\
src/nasal_gc.h\
src/io_lib.h src/io_lib.cpp | build
$(CXX) -std=$(STD) -c -O3 src/io_lib.cpp -fno-exceptions -fPIC -o build/io_lib.o -I .
$(CXX) $(CXXFLAGS) src/io_lib.cpp -o build/io_lib.o

build/dylib_lib.o: \
src/nasal.h\
src/nasal_gc.h\
src/dylib_lib.h src/dylib_lib.cpp | build
$(CXX) -std=$(STD) -c -O3 src/dylib_lib.cpp -fno-exceptions -fPIC -o build/dylib_lib.o -I .
$(CXX) $(CXXFLAGS) src/dylib_lib.cpp -o build/dylib_lib.o

build/unix_lib.o: \
src/nasal.h\
src/nasal_gc.h\
src/unix_lib.h src/unix_lib.cpp | build
$(CXX) -std=$(STD) -c -O3 src/unix_lib.cpp -fno-exceptions -fPIC -o build/unix_lib.o -I .
$(CXX) $(CXXFLAGS) src/unix_lib.cpp -o build/unix_lib.o

build/fg_props.o: \
src/nasal.h\
src/nasal_gc.h\
src/fg_props.h src/fg_props.cpp | build
$(CXX) -std=$(STD) -c -O3 src/fg_props.cpp -fno-exceptions -fPIC -o build/fg_props.o -I .
$(CXX) $(CXXFLAGS) src/fg_props.cpp -o build/fg_props.o

build/nasal_codegen.o: $(NASAL_HEADER) src/nasal_codegen.h src/nasal_codegen.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_codegen.cpp -fno-exceptions -fPIC -o build/nasal_codegen.o -I .
$(CXX) $(CXXFLAGS) src/nasal_codegen.cpp -o build/nasal_codegen.o

build/nasal_opcode.o: \
src/nasal.h\
src/nasal_builtin.h\
src/nasal_opcode.h src/nasal_opcode.cpp | build
$(CXX) -std=$(STD) -c -O3 src/nasal_opcode.cpp -fno-exceptions -fPIC -o build/nasal_opcode.o -I .
$(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/nasal_parse.h src/nasal_parse.cpp src/nasal_ast.h | build
$(CXX) -std=$(STD) -c -O3 src/nasal_parse.cpp -fno-exceptions -fPIC -o build/nasal_parse.o -I .
$(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) -std=$(STD) -c -O3 src/optimizer.cpp -fno-exceptions -fPIC -o build/optimizer.o -I .
$(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) -std=$(STD) -c -O3 src/symbol_finder.cpp -fno-exceptions -fPIC -o build/symbol_finder.o -I .
$(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) -std=$(STD) -c -O3 src/ast_visitor.cpp -fno-exceptions -fPIC -o build/ast_visitor.o -I .
$(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/ast_dumper.h src/ast_dumper.cpp | build
$(CXX) -std=$(STD) -c -O3 src/ast_dumper.cpp -fno-exceptions -fPIC -o build/ast_dumper.o -I .
$(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) -std=$(STD) -c -O3 src/nasal_vm.cpp -fno-exceptions -fPIC -o build/nasal_vm.o -I .
$(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) -std=$(STD) -c -O3 src/nasal_dbg.cpp -fno-exceptions -fPIC -o build/nasal_dbg.o -I .
$(CXX) $(CXXFLAGS) src/nasal_dbg.cpp -o build/nasal_dbg.o

.PHONY: clean
clean:
Expand Down Expand Up @@ -246,4 +260,4 @@ test:nasal
@ ./nasal -t -d test/turingmachine.nas
@ ./nasal -d test/wavecollapse.nas
@ ./nasal test/word_collector.nas test/md5compare.nas
@ ./nasal -t -d test/ycombinator.nas
@ ./nasal -t -d test/ycombinator.nas
15 changes: 10 additions & 5 deletions module/makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@ used_header = ../src/nasal.h ../src/nasal_gc.h
used_object = ../build/nasal_misc.o ../build/nasal_gc.o

STD=c++17
ifeq ($(OS), Darwin)
CXXFLAGS-std=$(STD) -c -O3 -fPIC -mmacosx-version-min=10.15
else
CXXFLAGS=-std=$(STD) -c -O3 -fPIC
endif

all: $(dynamic_libs_so)
@ echo "[Compiling] done"
Expand All @@ -15,7 +20,7 @@ winall: $(dynamic_libs_dll)

libfib.so: fib.cpp $(used_header) $(used_object)
@ echo "[Compiling] libfib.so"
@ $(CXX) -std=$(STD) -c -O3 fib.cpp -fPIC -o fib.o
@ $(CXX) $(CXXFLAGS) fib.cpp -o fib.o
@ $(CXX) -shared -o libfib.so fib.o $(used_object)
@ rm fib.o
libfib.dll: fib.cpp $(used_header) $(used_object)
Expand All @@ -26,7 +31,7 @@ libfib.dll: fib.cpp $(used_header) $(used_object)

libkey.so: keyboard.cpp $(used_header) $(used_object)
@ echo "[Compiling] libkey.so"
@ $(CXX) -std=$(STD) -c -O3 keyboard.cpp -fPIC -o keyboard.o
@ $(CXX) $(CXXFLAGS) keyboard.cpp -o keyboard.o
@ $(CXX) -shared -o libkey.so keyboard.o $(used_object)
@ rm keyboard.o
libkey.dll: keyboard.cpp $(used_header) $(used_object)
Expand All @@ -37,7 +42,7 @@ libkey.dll: keyboard.cpp $(used_header) $(used_object)

libnasock.so: nasocket.cpp $(used_header) $(used_object)
@ echo "[Compiling] libnasock.so"
@ $(CXX) -std=$(STD) -c -O3 nasocket.cpp -fPIC -o nasocket.o
@ $(CXX) $(CXXFLAGS) nasocket.cpp -o nasocket.o
@ $(CXX) -shared -o libnasock.so nasocket.o $(used_object)
@ rm nasocket.o
libnasock.dll: nasocket.cpp $(used_header) $(used_object)
Expand All @@ -48,7 +53,7 @@ libnasock.dll: nasocket.cpp $(used_header) $(used_object)

libmat.so: matrix.cpp $(used_header) $(used_object)
@ echo "[Compiling] libmat.so"
@ $(CXX) -std=$(STD) -c -O3 matrix.cpp -fPIC -o matrix.o
@ $(CXX) $(CXXFLAGS) matrix.cpp -o matrix.o
@ $(CXX) -shared -o libmat.so matrix.o $(used_object)
@ rm matrix.o
libmat.dll: matrix.cpp $(used_header) $(used_object)
Expand All @@ -65,4 +70,4 @@ clean:
@ echo "[clean] libfib.dll" &&if [ -e libfib.dll ]; then rm libfib.dll; fi
@ echo "[clean] libkey.dll" &&if [ -e libkey.dll ]; then rm libkey.dll; fi
@ echo "[clean] libnasock.dll" &&if [ -e libnasock.dll ]; then rm libnasock.dll; fi
@ echo "[clean] libmat.dll" &&if [ -e libmat.dll ]; then rm libmat.dll; fi
@ echo "[clean] libmat.dll" &&if [ -e libmat.dll ]; then rm libmat.dll; fi

0 comments on commit d661a6b

Please sign in to comment.