71 lines
2.6 KiB
Makefile
71 lines
2.6 KiB
Makefile
# SPDX-License-Identifier: MIT
|
|
|
|
include ../config.mk
|
|
include ../libversion.mk
|
|
|
|
SONAME := libepos.so
|
|
DTSONAME := $(SONAME).$(EVL_IVERSION)
|
|
SOLIBNAME := libepos-$(EVL_SERIAL).so.$(EVL_IVERSION)
|
|
ARLIBNAME := libepos-$(EVL_SERIAL).a
|
|
WRAPPERSNAME := epos.wrappers
|
|
COMPILE_AND_LINKING_COMMAND_FILE_SUFFIX := linking_command
|
|
STATIC_LINKING_COMMAND := static_$(COMPILE_AND_LINKING_COMMAND_FILE_SUFFIX)
|
|
DYNAMIC_LINKING_COMMAND := dynamic_$(COMPILE_AND_LINKING_COMMAND_FILE_SUFFIX)
|
|
TARGETS := $(O_DIR)/$(SOLIBNAME) $(O_DIR)/$(ARLIBNAME)
|
|
|
|
|
|
SRCFILES := $(wildcard *.c)
|
|
PIC_OBJFILES = $(SRCFILES:%.c=$(O_DIR)/%-pic.o)
|
|
OBJFILES = $(SRCFILES:%.c=$(O_DIR)/%.o)
|
|
DEPFILES = $(SRCFILES:%.c=$(O_DIR)/%.d)
|
|
|
|
LIB_CPPFLAGS := $(BASE_CPPFLAGS) \
|
|
-I. \
|
|
-I../include \
|
|
-Iarch/$(ARCH)/include \
|
|
-I$(O_DIR)/../include \
|
|
-I$(O_DIR)
|
|
|
|
LIB_CFLAGS := $(LIB_CPPFLAGS) $(BASE_CFLAGS) -idirafter ../include/placeholders
|
|
|
|
override CFLAGS := $(LIB_CFLAGS) $(CFLAGS)
|
|
|
|
override LDFLAGS := $(LDFLAGS) -lpthread -lrt
|
|
|
|
all: output-Makefile $(DEPFILES) $(TARGETS)
|
|
|
|
define install_linking_command
|
|
@echo '-I. -I$(DESTDIR)/include -fasynchronous-unwind-tables -Wl,-Wl,--wrap=main $(DESTDIR)/lib/libepos-0.a $(DESTDIR)/lib/libevl-0.a -lpthread -lrt -static' > $(DESTDIR)/$(libdir)/$(STATIC_LINKING_COMMAND)
|
|
@echo '-I. -I$(DESTDIR)/include -fasynchronous-unwind-tables -Wl,-Wl,--wrap=main -L$(LIBEVL_RROS)/lib -lepos -levl -lpthread -lrt' > $(DESTDIR)/$(libdir)/$(DYNAMIC_LINKING_COMMAND)
|
|
endef
|
|
|
|
install install_all: all
|
|
$(call inst-cmd,$(SOLIBNAME),$(INSTALL) -D $(O_DIR)/$(SOLIBNAME) -t $(DESTDIR)/$(libdir))
|
|
@$(LN_S) $(SOLIBNAME) $(DESTDIR)/$(libdir)/$(DTSONAME)
|
|
@$(LN_S) $(DTSONAME) $(DESTDIR)/$(libdir)/$(SONAME)
|
|
$(call inst-cmd,$(ARLIBNAME),$(INSTALL) -D $(O_DIR)/$(ARLIBNAME) -t $(DESTDIR)/$(libdir))
|
|
$(call inst-cmd,$(WRAPPERSNAME),$(CP) $(WRAPPERSNAME) $(DESTDIR)/$(libdir)/$(WRAPPERSNAME))
|
|
$(call inst-cmd,$(COMPILE_AND_LINKING_COMMAND_FILE_SUFFIX),$(call install_linking_command))
|
|
|
|
clean clobber mrproper: output-Makefile
|
|
$(Q)$(RM) -f $(O_DIR)/git-stamp.h $(PIC_OBJFILES) $(OBJFILES) \
|
|
$(TARGETS) $(O_DIR)/$(DTSONAME) $(DEPFILES)
|
|
|
|
$(O_DIR)/$(SOLIBNAME): $(PIC_OBJFILES)
|
|
$(call ld-cmd,$@,$(CC) -shared -Wl$(comma)-soname$(comma)$(DTSONAME) -o $(@) \
|
|
$(PIC_OBJFILES) $(LDFLAGS) -Wl$(comma)-rpath=$(libdir) -Wl$(comma)--export-dynamic)
|
|
$(Q)$(LN_S) $(SOLIBNAME) $(O_DIR)/$(DTSONAME)
|
|
|
|
$(O_DIR)/$(ARLIBNAME): $(OBJFILES)
|
|
$(call ar-cmd,$@,$(AR) ru $@ $(OBJFILES))
|
|
|
|
# Generate
|
|
$(O_DIR)/%-pic.o: %.c $(O_DIR)/%.d
|
|
$(call cc-pic-cmd,$@,$(CC) $(CFLAGS) -fPIC -c -o $@ $<)
|
|
|
|
# Generate dependency files
|
|
$(O_DIR)/%.o: %.c $(O_DIR)/%.d
|
|
$(call cc-cmd,$@,$(CC) $(CFLAGS) -c -o $@ $<)
|
|
|
|
-include $(DEPFILES)
|