From bbaf58c9fd0f485266d86868dc35f1d2be3589cd Mon Sep 17 00:00:00 2001 From: Julian Blake Kongslie Date: Sun, 26 Jun 2022 16:24:13 -0700 Subject: Significant changes, and a working "ISA" that just computes fib(n). --- Makefile | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) (limited to 'Makefile') diff --git a/Makefile b/Makefile index 9e84cc8..ed96817 100644 --- a/Makefile +++ b/Makefile @@ -6,7 +6,11 @@ CXX ?= g++ IWYU ?= iwyu CHRONIC ?= chronic -CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${OPTIMIZE} ${DEBUG} +PKGS := fmt +PKG_FLAGS := $(shell pkg-config --cflags ${PKGS}) +PKG_LIBS := -Wl,--push-state,--as-needed $(shell pkg-config --libs ${PKGS}) -Wl,--pop-state + +CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${PKG_FLAGS} ${OPTIMIZE} ${DEBUG} .DEFAULT_GOAL := all @@ -24,7 +28,7 @@ endef export GITTAGCPP ifneq ($(shell which ${IWYU}),) -iwyu = ${CHRONIC} ${IWYU} -Xiwyu --error ${CXXFLAGS} $(1) +iwyu = ${CHRONIC} ${IWYU} -Xiwyu --error -Xiwyu --mapping_file=tools/iwyu.imp ${CXXFLAGS} $(1) else $(warning Not using IWYU) iwyu = @@ -42,29 +46,32 @@ $(call libname,$(1).a): $(patsubst %.cpp,build/%.o,$(wildcard $(1)/*.cpp)) $(call libname,$(1).so): $(patsubst %.cpp,build/%.o,$(wildcard $(1)/*.cpp)) @mkdir -p $$(dir $$@) - $${CXX} $${CXXFLAGS} -shared -o $$@ $$+ + $${CXX} $${CXXFLAGS} -shared -o $$@ $$+ ${PKG_LIBS} PARTARS += $(call libname,$(1).a) PARTSOS += $(call libname,$(1).so) -else +endif -$(call libname,$(1).cpp): +ifdef iwyu + +build/$(1)/iwyu.cpp: @mkdir -p $$(dir $$@) @tools/iwyu-header $$(wildcard $(1)/*.h) > $$@ @$$(call iwyu,$$@) -.PHONY: $(call libname,$(1).cpp) +.PHONY: build/$(1)/iwyu.cpp -EXTRA_TARGETS += $(call libname,$(1).cpp) +IWYU_CPPS += build/$(1)/iwyu.cpp endif endef PARTS := $(patsubst ./%,%,$(shell find -mindepth 1 -type d -\( -name .\* -prune -o -name build -prune -o -name tools -prune -o -print -\))) + PARTARS := PARTSOS := -EXTRA_TARGETS := +IWYU_CPPS := $(foreach part,${PARTS},$(eval $(call mklib,${part}))) @@ -73,7 +80,7 @@ MAINOBJS += build/git-tag.o $(info ) -all: ${EXTRA_TARGETS} issim issim-static +all: ${IWYU_CPPS} issim issim-static issim: build/issim-dynamic @ln -sf $< $@ @@ -85,11 +92,11 @@ issim-static: build/issim-static build/issim-dynamic: ${MAINOBJS} ${PARTSOS} @mkdir -p $(dir $@) - ${CXX} ${CXXFLAGS} -o $@ $+ + ${CXX} ${CXXFLAGS} -o $@ $+ ${PKG_LIBS} build/issim-static: ${MAINOBJS} ${PARTARS} @mkdir -p $(dir $@) - ${CXX} ${CXXFLAGS} -o $@ $+ + ${CXX} ${CXXFLAGS} -o $@ $+ ${PKG_LIBS} clean: rm -rf build issim issim-static -- cgit v1.2.3