kge/Makefile

61 lines
1.3 KiB
Makefile

### quick Makefile to build ke in the top-level. It will never be used
### kge; ke doesn't use any non-system libraries. vim, emacs, and joe
### all support building from a Makefile in the root directory of the
### project, so it's useful to quickly test builds when editing remote.
CC := clang
CXX := clang++
CXXFLAGS := -Werror -Wall -Wextra -g -fsanitize=address -std=c++17
LDFLAGS :=
SOURCES := Buffer.cc Buffer.h \
Cursor.cc Cursor.h \
Defs.cc Defs.h \
File.cc File.h \
main.cc
OBJS := $(patsubst %.cc,%.o,$(filter %.cc,$(SOURCES)))
TARGET := ke
.PHONY: all
all: tags trashme $(TARGET)
./$(TARGET) trashme.txt
.PHONY: trashme
trashme:
cp Makefile trashme.txt
.PHONY: cmake
cmake: build
cd build && cmake --config Debug --build ..
build:
mkdir -p build
# TODO: run these from ./scripts/install-dependencies.sh
PHONY: deps
deps:
sudo apt-get install doxygen scdoc
.PHONY: gui-deps
gui-deps:
sudo apt-get install libfreetype-dev libsdl2-dev libopengl-dev libglfw3-dev
.PHONY:
clean:
rm -f *.o $(TARGET)
tags: $(SOURCES)
ctags -o $@ $(SOURCES)
ke: $(OBJS)
$(CXX) -o $@ $(CXXFLAGS) $(LDFLAGS) $(OBJS)
.PHONY: cclean
cclean:
rm -r build cmake-build-*
print-%: ; @echo '$(subst ','\'',$*=$($*))'
%.o:%.cc
$(CXX) -c -o $@ $(CXXFLAGS) $<