From e94cf0292758b8af5744c2331403580e1792acf7 Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Thu, 23 Jun 2022 17:46:19 -0700 Subject: Initial commit. --- Makefile | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 Makefile (limited to 'Makefile') diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..6d3a4ab --- /dev/null +++ b/Makefile @@ -0,0 +1,62 @@ +OPTIMIZE ?= -O3 +DEBUG ?= -g + +AR ?= ar +CXX ?= g++ + +CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${OPTIMIZE} ${DEBUG} + +PARTS := $(shell find * -type d -\( -name build -prune -o -print -\)) +PARTARS := $(addprefix build/lib, $(addsuffix .a, ${PARTS})) +PARTSOS := $(addprefix build/lib, $(addsuffix .so, ${PARTS})) + +MAINOBJS := $(addprefix build/, $(addsuffix .o, $(basename $(wildcard *.cpp)))) +MAINOBJS += build/git-tag.o + +all: issim + +issim: build/issim-dynamic + @ln -sf $< $@ +.PHONY: issim + +issim-static: build/issim-static + @ln -sf $< $@ +.PHONY: issim-static + +build/issim-dynamic: ${MAINOBJS} ${PARTSOS} + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -o $@ $+ + +build/issim-static: ${MAINOBJS} ${PARTARS} + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -o $@ $+ + +clean: + rm -rf build issim issim-static +.PHONY: clean + +build/git-tag.cpp: + @mkdir -p $(dir $@) + ./get-git-tag > $@ +.PHONY: build/git-tag.cpp + +build/%.o: %.cpp Makefile + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -c -o $@ $< + +build/%.o: build/%.cpp Makefile + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -c -o $@ $< + +.SUFFIXES: +.SECONDARY: + +.SECONDEXPANSION: + +build/lib%.a: $$(addprefix build/, $$(addsuffix .o, $$(basename $$(wildcard %/*.cpp)))) + @mkdir -p $(dir $@) + ${AR} cr $@ $+ + +build/lib%.so: $$(addprefix build/, $$(addsuffix .o, $$(basename $$(wildcard %/*.cpp)))) + @mkdir -p $(dir $@) + ${CXX} ${CXXFLAGS} -shared -o $@ $+ -- cgit v1.2.3