# ------------------------------------------------------------------- # 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