128 lines
2.9 KiB
Makefile
128 lines
2.9 KiB
Makefile
# -------------------------------------------------------------------
|
|
# ASL Capture Makefile
|
|
#
|
|
# Supports:
|
|
# - PIPE-only build (default)
|
|
# - PTY-enabled build (ENABLE_PTY=1)
|
|
#
|
|
# Targets:
|
|
# make
|
|
# make ENABLE_PTY=1
|
|
# make install DESTDIR=...
|
|
# make clean
|
|
# -------------------------------------------------------------------
|
|
|
|
# Toolchain
|
|
CC ?= cc
|
|
AR ?= ar
|
|
RANLIB ?= ranlib
|
|
INSTALL ?= install
|
|
|
|
# Paths
|
|
PREFIX ?= /usr
|
|
BINDIR ?= $(PREFIX)/bin
|
|
LIBDIR ?= $(PREFIX)/lib
|
|
INCLUDEDIR ?= $(PREFIX)/include/asl
|
|
|
|
# Versioning (library ABI)
|
|
LIBNAME = asl-capture
|
|
LIB_MAJOR = 0
|
|
LIB_MINOR = 1
|
|
LIB_PATCH = 0
|
|
|
|
SONAME = lib$(LIBNAME).so.$(LIB_MAJOR)
|
|
REALNAME = lib$(LIBNAME).so.$(LIB_MAJOR).$(LIB_MINOR).$(LIB_PATCH)
|
|
|
|
# Flags
|
|
CFLAGS ?= -O2
|
|
CFLAGS += -Wall -Wextra -fPIC
|
|
CPPFLAGS += -I.
|
|
|
|
LDFLAGS ?=
|
|
LIBS ?=
|
|
|
|
# Optional PTY support
|
|
ifeq ($(ENABLE_PTY),1)
|
|
CPPFLAGS += -DASL_ENABLE_PTY
|
|
LIBS += -lutil
|
|
endif
|
|
|
|
# Sources
|
|
LIB_SRC = asl_capture.c
|
|
LIB_OBJ = $(LIB_SRC:.c=.o)
|
|
|
|
TOOL_SRC = asl_capture_tool.c
|
|
TOOL_OBJ = $(TOOL_SRC:.c=.o)
|
|
|
|
# Outputs
|
|
STATIC_LIB = lib$(LIBNAME).a
|
|
SHARED_LIB = $(REALNAME)
|
|
SONAME_LIB = $(SONAME)
|
|
TOOL = asl-capture
|
|
|
|
# -------------------------------------------------------------------
|
|
# Default target
|
|
# -------------------------------------------------------------------
|
|
|
|
all: $(STATIC_LIB) $(SHARED_LIB) $(TOOL)
|
|
|
|
# -------------------------------------------------------------------
|
|
# Library builds
|
|
# -------------------------------------------------------------------
|
|
|
|
%.o: %.c
|
|
$(CC) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
|
|
|
|
$(STATIC_LIB): $(LIB_OBJ)
|
|
$(AR) rcs $@ $^
|
|
$(RANLIB) $@
|
|
|
|
$(SHARED_LIB): $(LIB_OBJ)
|
|
$(CC) -shared \
|
|
-Wl,-soname,$(SONAME_LIB) \
|
|
-o $@ $^ $(LIBS)
|
|
|
|
# Symlink for soname
|
|
$(SONAME_LIB): $(SHARED_LIB)
|
|
ln -sf $(REALNAME) $(SONAME_LIB)
|
|
|
|
# -------------------------------------------------------------------
|
|
# Tool build
|
|
# -------------------------------------------------------------------
|
|
|
|
$(TOOL): $(TOOL_OBJ) $(SHARED_LIB)
|
|
$(CC) -o $@ $(TOOL_OBJ) \
|
|
-L. -l$(LIBNAME) $(LIBS)
|
|
|
|
# -------------------------------------------------------------------
|
|
# Install
|
|
# -------------------------------------------------------------------
|
|
|
|
install: all
|
|
# Library
|
|
$(INSTALL) -d $(DESTDIR)$(LIBDIR)
|
|
$(INSTALL) -m 0755 $(SHARED_LIB) $(DESTDIR)$(LIBDIR)/
|
|
ln -sf $(REALNAME) $(DESTDIR)$(LIBDIR)/$(SONAME_LIB)
|
|
ln -sf $(SONAME_LIB) $(DESTDIR)$(LIBDIR)/lib$(LIBNAME).so
|
|
|
|
# Static lib
|
|
$(INSTALL) -m 0644 $(STATIC_LIB) $(DESTDIR)$(LIBDIR)/
|
|
|
|
# Headers
|
|
$(INSTALL) -d $(DESTDIR)$(INCLUDEDIR)
|
|
$(INSTALL) -m 0644 asl_capture.h $(DESTDIR)$(INCLUDEDIR)/
|
|
|
|
# Tool
|
|
$(INSTALL) -d $(DESTDIR)$(BINDIR)
|
|
$(INSTALL) -m 0755 $(TOOL) $(DESTDIR)$(BINDIR)/
|
|
|
|
# -------------------------------------------------------------------
|
|
# Clean
|
|
# -------------------------------------------------------------------
|
|
|
|
clean:
|
|
rm -f *.o *.a *.so* $(TOOL)
|
|
|
|
.PHONY: all install clean
|
|
|