summaryrefslogtreecommitdiff
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Makefile40
1 files changed, 23 insertions, 17 deletions
diff --git a/Makefile b/Makefile
index c8286f5..91a92e4 100644
--- a/Makefile
+++ b/Makefile
@@ -6,38 +6,46 @@ CXX ?= g++
6 6
7CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${OPTIMIZE} ${DEBUG} 7CXXFLAGS := -Wall -Werror -std=c++20 -fPIC -iquote . ${OPTIMIZE} ${DEBUG}
8 8
9libname = $(shell realpath --canonicalize-missing --relative-to . build/$(dir $(1))/lib$(notdir $(1))) 9.DEFAULT: issim
10
11PARTS := $(shell find * -type d -\( -name build -prune -o -name tools -prune -o -print -\))
12PARTARS :=
13PARTSOS :=
14 10
15MAINOBJS := $(patsubst %.cpp, build/%.o, $(wildcard *.cpp)) 11libname = $(shell realpath --canonicalize-missing --relative-to . build/$(dir $(1))/lib$(notdir $(1)))
16MAINOBJS += build/git-tag.o
17
18HEADERS := $(find -type f -name \*.h)
19
20.DEFAULT: issim issim-static
21 12
22define mklib = 13define mklib =
23 14
24ifneq ($(wildcard $(1)/*.cpp),) 15ifneq ($(wildcard $(1)/*.cpp),)
25 16
26$(call libname, $(1).a): $(patsubst %.cpp, build/%.o, $(wildcard $(1)/*.cpp)) 17$$(info Component $(call libname,$(1)))
18
19$(call libname,$(1).a): $(patsubst %.cpp,build/%.o,$(wildcard $(1)/*.cpp))
27 @mkdir -p $$(dir $$@) 20 @mkdir -p $$(dir $$@)
28 $${AR} cr $$@ $$+ 21 $${AR} cr $$@ $$+
29 22
30$(call libname, $(1).so): $(patsubst %.cpp, build/%.o, $(wildcard $(1)/*.cpp)) 23$(call libname,$(1).so): $(patsubst %.cpp,build/%.o,$(wildcard $(1)/*.cpp))
31 @mkdir -p $$(dir $$@) 24 @mkdir -p $$(dir $$@)
32 $${CXX} $${CXXFLAGS} -shared -o $$@ $$+ 25 $${CXX} $${CXXFLAGS} -shared -o $$@ $$+
33 26
34PARTARS += $(call libname, $(1).a) 27PARTARS += $(call libname,$(1).a)
35PARTSOS += $(call libname, $(1).so) 28PARTSOS += $(call libname,$(1).so)
29
30else
31
32$$(info Header-only component $(1))
36 33
37endif 34endif
38 35
39endef 36endef
40 37
38PARTS := $(shell find * -type d -\( -name build -prune -o -name tools -prune -o -print -\))
39PARTARS :=
40PARTSOS :=
41
42$(foreach part,${PARTS},$(eval $(call mklib,${part})))
43
44MAINOBJS := $(patsubst %.cpp,build/%.o,$(wildcard *.cpp))
45MAINOBJS += build/git-tag.o
46
47$(info )
48
41issim: build/issim-dynamic 49issim: build/issim-dynamic
42 @ln -sf $< $@ 50 @ln -sf $< $@
43.PHONY: issim 51.PHONY: issim
@@ -73,7 +81,5 @@ build/%.o: build/%.cpp
73 @mkdir -p $(dir $@) 81 @mkdir -p $(dir $@)
74 ${CXX} ${CXXFLAGS} -MMD -c -o $@ $< 82 ${CXX} ${CXXFLAGS} -MMD -c -o $@ $<
75 83
76$(foreach part, ${PARTS}, $(eval $(call mklib, ${part})))
77
78.SUFFIXES: 84.SUFFIXES:
79.SECONDARY: 85.SECONDARY: