make: switch to shared object library

This commit is contained in:
Antoine Soulier
2024-01-04 12:11:58 -08:00
parent 570ef0b56b
commit 834826c9d7
4 changed files with 24 additions and 25 deletions
+6 -7
View File
@@ -48,7 +48,7 @@ lib_list :=
bin_list :=
define add-lib
$(eval $(1)_bin ?= $(1).a)
$(eval $(1)_bin ?= $(1).so)
$(eval $(1)_bin := $(addprefix $(BIN_DIR)/,$($(1)_bin)))
lib_list += $(1)
@@ -72,7 +72,6 @@ define set-target
$(patsubst %.s,%.o,$(filter %.s,$($(1)_src))) \
$(patsubst %.cc,%.o,$(filter %.cc,$($(1)_src))))
$(eval $(1)_obj := $(addprefix $(BUILD_DIR)/,$($(1)_obj)))
$(eval $(1)_lib := $(foreach lib, $($(1)_lib), $($(lib)_bin)))
$($(1)_obj): INCLUDE += $($(1)_include)
$($(1)_obj): DEFINE += $($(1)_define)
@@ -81,7 +80,6 @@ define set-target
-include $($(1)_obj:.o=.d)
$($(1)_bin): $($(1)_lib)
$($(1)_bin): $($(1)_obj)
$($(1)_bin): $($(1)_dependencies)
@@ -138,16 +136,17 @@ $(BUILD_DIR)/%.o: %.cc $(MAKEFILE_DEPS)
$(addprefix -I,$(INCLUDE)) \
$(addprefix -D,$(DEFINE)) -MMD -MF $(@:.o=.d) -o $@
$(LIB): CFLAGS += -fPIC
$(LIB): $(MAKEFILE_DEPS)
@echo " AR $(notdir $@)"
@echo " LD $(notdir $@)"
$(V)mkdir -p $(dir $@)
$(V)$(AR) rcs $@ $(filter %.o,$^)
$(V)$(LD) $(filter %.o,$^) -shared -o $@
$(BIN): $(MAKEFILE_DEPS)
@echo " LD $(notdir $@)"
$(V)mkdir -p $(dir $@)
$(V)$(LD) $(filter %.o,$^) $(filter %.a,$^) $(LDFLAGS) \
$(addprefix -l,$(LDLIBS)) -o $@
$(V)$(LD) $(filter %.o,$^) \
$(LDFLAGS) -L $(BIN_DIR) $(addprefix -l,$(LDLIBS)) -o $@
clean:
$(V)rm -rf $(BUILD_DIR)