blob: fd46a195770aab606afec8d14b4ec521eb894c47 (
plain) (
tree)
|
|
LIBGCOMPAT_INCLUDE = \
libgcompat/alias.h \
libgcompat/internal.h
LIBGCOMPAT_SRC = \
libgcompat/ctype.c \
libgcompat/cxx_thread.c \
libgcompat/dlfcn.c \
libgcompat/error.c \
libgcompat/execinfo.c \
libgcompat/gnulib.c \
libgcompat/grp.c \
libgcompat/internal.c \
libgcompat/locale.c \
libgcompat/malloc.c \
libgcompat/math.c \
libgcompat/misc.c \
libgcompat/netdb.c \
libgcompat/pthread.c \
libgcompat/pwd.c \
libgcompat/readlink.c \
libgcompat/realpath.c \
libgcompat/resolv.c \
libgcompat/resource.c \
libgcompat/setjmp.c \
libgcompat/signal.c \
libgcompat/socket.c \
libgcompat/stdio.c \
libgcompat/stdlib.c \
libgcompat/string.c \
libgcompat/sysctl.c \
libgcompat/syslog.c \
libgcompat/ucontext.c \
libgcompat/unistd.c \
libgcompat/utmp.c \
libgcompat/version.c \
libgcompat/wchar.c
LIBGCOMPAT_OBJ = ${LIBGCOMPAT_SRC:.c=.o}
LIBGCOMPAT_SOVERSION = 0
LIBGCOMPAT_NAME = libgcompat.so.${LIBGCOMPAT_SOVERSION}
LIBGCOMPAT_PATH = /lib/${LIBGCOMPAT_NAME}
LOADER_SRC = \
loader/loader.c
LOADER_OBJ = ${LOADER_SRC:.c=.o}
LOADER_NAME = ld-linux.so.2
LOADER_PATH = /lib/${LOADER_NAME}
PKG_CONFIG ?= pkg-config
ifdef WITH_LIBUCONTEXT
LIBUCONTEXT_CFLAGS = -DWITH_LIBUCONTEXT
LIBUCONTEXT_LIBS = -lucontext
endif
ifndef WITH_OBSTACK
WITH_OBSTACK = $(shell \
for pkg in obstack obstack-standalone; do \
${PKG_CONFIG} --exists "$$pkg" && { echo "$$pkg"; exit 0; } \
done; echo "no")
endif
ifneq (${WITH_OBSTACK},no)
OBSTACK_CFLAGS = $(shell ${PKG_CONFIG} --cflags ${WITH_OBSTACK}) -DWITH_OBSTACK
OBSTACK_LIBS = $(shell ${PKG_CONFIG} --libs ${WITH_OBSTACK})
endif
all: ${LIBGCOMPAT_NAME} ${LOADER_NAME}
${LIBGCOMPAT_NAME}: ${LIBGCOMPAT_OBJ}
${CC} ${CFLAGS} ${LDFLAGS} -shared -Wl,-soname,${LIBGCOMPAT_NAME} \
-o ${LIBGCOMPAT_NAME} ${LIBGCOMPAT_OBJ} \
-Wl,--no-as-needed ${LIBUCONTEXT_LIBS} ${OBSTACK_LIBS}
${LIBGCOMPAT_OBJ}: ${LIBGCOMPAT_INCLUDE}
${LOADER_NAME}: ${LOADER_OBJ}
${CC} ${CFLAGS} ${LDFLAGS} -static-pie -o ${LOADER_NAME} ${LOADER_OBJ}
.c.o:
${CC} ${CPPFLAGS} ${CFLAGS} -c -D_BSD_SOURCE \
-DLIBGCOMPAT='"${LIBGCOMPAT_PATH}"' \
-DLINKER='"${LINKER_PATH}"' -DLOADER='"${LOADER_NAME}"' \
-fPIC -Ilibgcompat -std=c99 \
-Wall -Wextra -Wno-frame-address -Wno-unused-parameter \
${LIBUCONTEXT_CFLAGS} ${OBSTACK_CFLAGS} -o $@ $<
clean:
rm -f libgcompat/*.o loader/*.o ${LIBGCOMPAT_NAME} ${LOADER_NAME}
format:
clang-format -i ${LIBGCOMPAT_INCLUDE} ${LIBGCOMPAT_SRC} ${LOADER_SRC}
install: all
install -D -m755 ${LIBGCOMPAT_NAME} ${DESTDIR}/${LIBGCOMPAT_PATH}
install -D -m755 ${LOADER_NAME} ${DESTDIR}/${LOADER_PATH}
.PHONY: all clean format install
|