INSTALL_PREFIX ?= /usr/local/bin SRC=src VM_SRC=vm_src SHARED=shared CORELIB=corelib SRC_FILES=$(wildcard $(SRC)/*.c) VM_SRC_FILES=$(wildcard $(VM_SRC)/*.c) SHARED_SRC_FILES=$(wildcard $(SHARED)/*.c) CORELIB_FILES=$(wildcard $(CORELIB)/*.c) CC=gcc CXX=g++ CFLAGS=-Wall -Wextra -Wno-trigraphs -O3 -rdynamic LDFLAGS= LDLIBS=-lm DEBUG_CFLAGS=-Wall -Wextra -Wno-trigraphs -ggdb -g -rdynamic -fsanitize=address COMPILER_TARGET=cometc VM_TARGET=comet both: $(COMPILER_TARGET) $(VM_TARGET) $(COMPILER_TARGET): $(SRC_FILES) $(SHARED_SRC_FILES) $(CC) $(SRC_FILES) $(SHARED_SRC_FILES) -o $(COMPILER_TARGET) $(CFLAGS) $(LDFLAGS) $(LDLIBS) $(VM_TARGET): $(VM_SRC_FILES) $(SHARED_SRC_FILES) $(CC) $(VM_SRC_FILES) $(SHARED_SRC_FILES) -o $(VM_TARGET) $(CFLAGS) $(LDFLAGS) $(LDLIBS) debug: $(CC) $(SRC_FILES) $(SHARED_SRC_FILES) -o $(COMPILER_TARGET) $(DEBUG_CFLAGS) $(LDFLAGS) $(LDLIBS) $(CC) $(VM_SRC_FILES) $(SHARED_SRC_FILES) -o $(VM_TARGET) $(DEBUG_CFLAGS) $(LDFLAGS) $(LDLIBS) clean: rm $(VM_TARGET) rm $(COMPILER_TARGET) install: both sudo mkdir -p /usr/local/include/comet/ sudo cp -r include/* /usr/local/include/comet/ # build the core lib mkdir -p ~/.comet/libs $(CC) $(CORELIB_FILES) -fPIC -shared -Wl,-undefined,symbol_lookup -o ~/.comet/libs/core.cometlib sudo cp comet $(INSTALL_PREFIX) sudo cp cometc $(INSTALL_PREFIX)