mirror of
https://github.com/servalproject/serval-dna.git
synced 2024-12-18 20:57:56 +00:00
487 lines
16 KiB
Makefile
487 lines
16 KiB
Makefile
# Makefile.in for Serval DNA daemon and libraries
|
|
# nnnn
|
|
# vim: noet ts=8 sts=0 sw=8
|
|
prefix=@prefix@
|
|
exec_prefix=@exec_prefix@
|
|
bindir=@bindir@
|
|
sbindir=@sbindir@
|
|
sysconfdir=@sysconfdir@
|
|
localstatedir=@localstatedir@
|
|
srcdir=@srcdir@
|
|
abs_srcdir=@abs_srcdir@
|
|
abs_builddir=@abs_builddir@
|
|
|
|
CC = @CC@
|
|
AR = @AR@
|
|
RANLIB = @RANLIB@
|
|
JAVAC= @JAVAC@
|
|
|
|
SWIFTC= @SWIFTC@
|
|
SWIFTCFLAGS= @SWIFTCFLAGS@ -I$(abs_builddir) -I$(abs_srcdir)
|
|
SWIFTLIBS= @LIBS@
|
|
|
|
SWIFT_BUILD= @SWIFT_BUILD@
|
|
SWIFT_BUILD_FLAGS= $(addprefix -Xswiftc , $(SWIFTCFLAGS))
|
|
|
|
SWIFT_MODULE_NAME= ServalDNA
|
|
SWIFT_PACKAGE_DIR= $(srcdir)/swift-daemon-api
|
|
SWIFT_BUILD_DIR= $(abs_builddir)/swift-daemon-api/build
|
|
|
|
INSTALL= install
|
|
INSTALL_PROGRAM= $(INSTALL)
|
|
INSTALL_DATA= $(INSTALL) -m 644
|
|
|
|
include $(srcdir)/headerfiles.mk # sets SQLITE3_AMALGAMATION
|
|
include $(srcdir)/sourcefiles.mk # depends on SQLITE3_AMALGAMATION
|
|
|
|
LIBSODIUM_SUBDIR = libsodium/
|
|
LIBSODIUM_DEV = libsodium-dev
|
|
LIBSODIUM_HEADERS = $(LIBSODIUM_DEV)/include/sodium.h
|
|
LIBSODIUM_A = $(LIBSODIUM_DEV)/lib/libsodium.a
|
|
LIBSODIUM_SO = $(LIBSODIUM_DEV)/lib/libsodium.so
|
|
|
|
OBJSDIR_SERVALD = objs_servald
|
|
OBJSDIR_LIB = objs_lib
|
|
OBJSDIR_TOOLS = objs
|
|
|
|
OBJSDIRS = $(OBJSDIR_SERVALD) $(OBJSDIR_LIB) $(OBJSDIR_TOOLS)
|
|
|
|
SERVAL_DAEMON_OBJS = \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(MDP_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_DAEMON_SOURCES:.c=.o))
|
|
|
|
ifeq (@HAVE_JNI_H@,yes)
|
|
|
|
SERVAL_DAEMON_JNI_OBJS = $(OBJSDIR_SERVALD)/servald_jni_features.o
|
|
|
|
SERVAL_DAEMON_OBJS += \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(SERVAL_DAEMON_JNI_SOURCES:.c=.o))
|
|
|
|
endif
|
|
|
|
SQLITE3_OBJS = \
|
|
$(addprefix $(OBJSDIR_SERVALD)/, $(notdir $(SQLITE3_SOURCES:.c=.o)))
|
|
|
|
SERVALD_OBJS = \
|
|
$(SQLITE3_OBJS) \
|
|
$(SERVAL_DAEMON_OBJS)
|
|
|
|
LIB_SERVAL_OBJS = \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(CLIENT_ONLY_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(MDP_CLIENT_SOURCES:.c=.o))
|
|
|
|
MONITOR_CLIENT_OBJS = \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(SERVAL_CLIENT_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(CLIENT_ONLY_SOURCES:.c=.o)) \
|
|
$(addprefix $(OBJSDIR_LIB)/, $(MONITOR_CLIENT_SRCS:.c=.o))
|
|
|
|
SIMULATOR_OBJS = \
|
|
$(addprefix $(OBJSDIR_TOOLS)/, $(SIMULATOR_SOURCES:.c=.o))
|
|
|
|
PREFIXED_HEADERS = $(addprefix $(srcdir)/, $(ALL_HDRS))
|
|
PREFIXED_SOURCES = $(addprefix $(srcdir)/, $(ALL_SOURCES))
|
|
|
|
LDFLAGS=@LDFLAGS@ @LIBS@
|
|
|
|
CFLAGS= -I. -I$(srcdir)/$(SQLITE3_AMALGAMATION) @CPPFLAGS@ @CFLAGS@
|
|
CFLAGS+=-DSYSCONFDIR="\"$(sysconfdir)\"" -DLOCALSTATEDIR="\"$(localstatedir)\""
|
|
CFLAGS+=-DSQLITE_THREADSAFE=0 \
|
|
-DSQLITE_OMIT_DATETIME_FUNCS \
|
|
-DSQLITE_OMIT_COMPILEOPTION_DIAGS \
|
|
-DSQLITE_OMIT_DEPRECATED \
|
|
-DSQLITE_OMIT_LOAD_EXTENSION \
|
|
-DSQLITE_OMIT_VIRTUALTABLE \
|
|
-DSQLITE_OMIT_AUTHORIZATION
|
|
CFLAGS+=-fPIC -DSERVAL_ENABLE_DEBUG=1 -Wall -Werror -Wextra -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
|
|
|
|
# Solaris magic
|
|
CFLAGS+=-DSHA2_USE_INTTYPES_H -D_XOPEN_SOURCE=600 -D_XOPEN_SOURCE_EXTENDED=1 -D__EXTENSIONS__=1
|
|
# OSX magic to compensate for the Solaris magic
|
|
CFLAGS+=-D_DARWIN_C_SOURCE
|
|
CFLAGS_SQLITE=@CFLAGS_SQLITE@
|
|
|
|
-include $(srcdir)/Makefile.dbg
|
|
|
|
# More warnings, discover problems that only happen on some archs
|
|
CFLAGS+=-Wextra
|
|
# Security enhancements from Debian
|
|
CFLAGS+=-Wformat -Werror=format-security -D_FORTIFY_SOURCE=2
|
|
|
|
CONFIG_H = @CONFIG_H@
|
|
|
|
DEFS= @DEFS@
|
|
SWIFTDEFS= $(addprefix -Xcc , $(DEFS))
|
|
|
|
# Usage: $(call MERGE_STATIC_LIBS, libdest.a, libsrcfoo.a libsrcbar.a)
|
|
MERGE_STATIC_LIBS = echo MERGE $(1) = $(2); \
|
|
tmp="$$(mktemp -d)" && \
|
|
( cd "$$tmp" $(foreach LIB, $(2), && $(AR) -x $(abspath $(LIB))) ) && \
|
|
$(RM) $(1) && \
|
|
$(AR) -cr $(1) "$$tmp"/*.o && \
|
|
$(RANLIB) $(1) && \
|
|
$(RM) -r "$$tmp"
|
|
|
|
.PHONY: all libs test install uninstall clean
|
|
|
|
all: libs servald directory_service test
|
|
|
|
libs: libservaldaemon.so libservaldaemon.a \
|
|
libservalclient.so libservalclient.a \
|
|
libmonitorclient.so libmonitorclient.a
|
|
|
|
test: servaldwrap serval-tests \
|
|
fakeradio simulator \
|
|
tfw_createfile
|
|
|
|
install: servald
|
|
$(INSTALL_PROGRAM) -D servald $(DESTDIR)$(sbindir)/servald
|
|
|
|
uninstall:
|
|
$(RM) $(DESTDIR)$(sbindir)/servald
|
|
|
|
clean:
|
|
$(RM) -r $(LIBSODIUM_DEV) \
|
|
$(OBJSDIRS:%=%/*) \
|
|
servald \
|
|
libservaldaemon.so libservaldaemon.a \
|
|
libservalclient.so libservalclient.a \
|
|
libmonitorclient.so libmonitorclient.a \
|
|
tfw_createfile directory_service fakeradio simulator serval-tests \
|
|
tags
|
|
cd $(LIBSODIUM_SUBDIR) && $(MAKE) clean
|
|
|
|
distclean: clean
|
|
$(RM) config.h config.status config.log testconfig.sh
|
|
cd $(LIBSODIUM_SUBDIR) && $(MAKE) distclean
|
|
|
|
# Only provide Java targets if the Java compiler is available.
|
|
ifneq ($(JAVAC),)
|
|
|
|
all: java-api
|
|
|
|
clean: java-api-clean
|
|
|
|
.PHONY: java-api java-api-clean
|
|
|
|
java-api:
|
|
@mkdir -p java-api
|
|
@cd java-api && $(MAKE) all
|
|
|
|
java-api-clean:
|
|
@cd java-api 2>/dev/null && $(MAKE) clean
|
|
|
|
endif # $(JAVAC)
|
|
|
|
ifneq ($(SWIFTC),) # Only provide Swift targets if the Swift compiler is available.
|
|
|
|
all: swift-daemon-api swift-client-api
|
|
|
|
test: servaldswift
|
|
|
|
clean: swift-daemon-api-clean swift-client-api-clean
|
|
|
|
.PHONY: swift-daemon-api swift-daemon-api-clean swift-client-api swift-client-api-clean
|
|
|
|
libServalDNA.a $(SWIFT_MODULE_NAME).swiftmodule $(SWIFT_MODULE_NAME).swiftdoc: swift-daemon-api
|
|
cp $(SWIFT_BUILD_DIR)/debug/$(notdir $@) $@
|
|
|
|
swift-daemon-api:
|
|
mkdir -p $(SWIFT_BUILD_DIR) && \
|
|
cd $(SWIFT_PACKAGE_DIR) && \
|
|
$(SWIFT_BUILD) --build-path $(SWIFT_BUILD_DIR) $(SWIFT_BUILD_FLAGS) $(SWIFTDEFS)
|
|
|
|
swift-daemon-api-clean:
|
|
$(RM) -r $(SWIFT_BUILD_DIR) \
|
|
$(SWIFT_MODULE_NAME).swiftmodule \
|
|
$(SWIFT_MODULE_NAME).swiftdoc
|
|
|
|
swift-client-api:
|
|
@mkdir -p swift-client-api
|
|
cd swift-client-api && $(MAKE) all
|
|
|
|
swift-client-api-clean:
|
|
cd swift-client-api 2>/dev/null && $(MAKE) clean
|
|
|
|
endif # $(SWIFTC)
|
|
|
|
# Build the Sodium elliptic curve encryption library within its 'libsodium'
|
|
# subtree, and install its development files (headers and libraries) into our
|
|
# $(LIBSODIUM_DEV) subdirectory. Then use the contents of this subdirectory to
|
|
# provide system headers, eg <sodium.h>, and libraries, eg, libsodium.a, to
|
|
# compile and link Serval DNA. This completely avoids any dependency on the
|
|
# system's installed libsodium run-time and development packages.
|
|
|
|
CFLAGS+= -isystem $(LIBSODIUM_DEV)/include
|
|
|
|
.PHONY: libsodium-dev
|
|
|
|
libsodium-dev $(LIBSODIUM_HEADERS) $(LIBSODIUM_A): $(LIBSODIUM_DEV)/.installed
|
|
|
|
# The libsodium package uses libtool, so by default its static libraries get
|
|
# compiled without the -fPIC option. This prevents the libsodium static
|
|
# library from being linked into a shared library. However, this Makefile
|
|
# needs to do exactly that, to make libservaldaemon.so, so passes the
|
|
# -prefer-pic libtool option, which causes libtool to use -fPIC even when
|
|
# compiling for static libraries.
|
|
|
|
$(LIBSODIUM_DEV)/.installed:
|
|
@echo MAKE $(LIBSODIUM_DEV)
|
|
@mkdir -p $(LIBSODIUM_DEV)
|
|
@$(RM) $@
|
|
@touch $@.in-progress
|
|
@cd $(LIBSODIUM_SUBDIR) && $(MAKE) \
|
|
CFLAGS+="-prefer-pic" \
|
|
exec_prefix=$(abspath $(LIBSODIUM_DEV)) \
|
|
prefix=$(abspath $(LIBSODIUM_DEV)) \
|
|
install
|
|
@mv -f $@.in-progress $@
|
|
|
|
# Source code test coverage support -- see doc/Testing.md
|
|
|
|
.PHONY: covzero covinit covhtml is_built_with_coverage has_coverage_data
|
|
|
|
covzero: | is_built_with_coverage
|
|
@echo REMOVE all .gcda files
|
|
@find $(OBJSDIRS) -type f -name '*.gcda' -print0 | xargs -0 $(RM)
|
|
|
|
covinit: servald-initial.info
|
|
|
|
covhtml: coverage_html/index.html
|
|
|
|
is_built_with_coverage:
|
|
@for obj in $(SERVALD_OBJS); do \
|
|
gcno="$${obj%.o}.gcno" ;\
|
|
if [ ! -r "$$gcno" ]; then \
|
|
echo "ERROR: servald has not been compiled for code coverage; missing $$gcno" ;\
|
|
exit 1 ;\
|
|
fi ;\
|
|
done
|
|
|
|
has_coverage_data: | is_built_with_coverage
|
|
@count=0; for obj in $(SERVALD_OBJS); do \
|
|
gcda="$${obj%.o}.gcda" ;\
|
|
[ -s "$$gcda" ] && count=$$(($$count + 1)) ;\
|
|
done ;\
|
|
if [ $$count -eq 0 ]; then \
|
|
echo "ERROR: no code coverage data; run some tests" ;\
|
|
exit 1 ;\
|
|
fi
|
|
|
|
servald-initial.info: Makefile servald | is_built_with_coverage
|
|
geninfo --quiet --initial --checksum --base-directory=$(abspath .) --no-external $(OBJSDIR_SERVALD) -o $@
|
|
|
|
servald-coverage.info: Makefile servald $(shell find $(OBJSDIR_SERVALD) -type f -name '*.gcda' 2>/dev/null) | has_coverage_data
|
|
geninfo --quiet --checksum --base-directory=$(abspath .) --no-external $(OBJSDIR_SERVALD) -o $@ 2>&1 | { grep -v 'WARNING: no data found for .*\.h$$' || true; }
|
|
@[ -s $@ ]
|
|
|
|
coverage_html/index.html: Makefile servald-initial.info servald-coverage.info
|
|
$(RM) -r coverage_html
|
|
genhtml --quiet servald-initial.info servald-coverage.info -o coverage_html
|
|
|
|
# Autconf support -- helpful messages to help avoid some common build mistakes.
|
|
|
|
.PRECIOUS: Makefile config.status $(srcdir)/configure
|
|
|
|
Makefile: $(srcdir)/Makefile.in config.status
|
|
$(warning Makefile may be out of date, please run ./config.status)
|
|
|
|
config.status: $(srcdir)/configure
|
|
$(warning config.status may be out of date, please run $(srcdir)/configure)
|
|
|
|
$(srcdir)/configure: $(srcdir)/configure.ac
|
|
$(warning $(srcdir)configure may be out of date, please run $(if $(srcdir:.=),cd $(srcdir) && ,)autoreconf -f -i -I m4)
|
|
|
|
# Embed Serval DNA's version into libraries and executables.
|
|
|
|
$(OBJSDIR_TOOLS)/version.o: $(PREFIXED_SOURCES) \
|
|
$(PREFIXED_HEADERS) \
|
|
$(srcdir)/version_servald.c \
|
|
$(srcdir)/version_string.sh \
|
|
$(wildcard VERSION.txt) \
|
|
$(srcdir)/COPYRIGHT.txt
|
|
@echo CC version_servald.c
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@V=`$(srcdir)/version_string.sh --repository=$(srcdir) --ignore-untracked` \
|
|
&& C="`sed -e :a -e N -e '$$!ba' -e 's/[\\\\"]/\\\\&/g' -e 's/\\n/\\\\n/g' $(srcdir)/COPYRIGHT.txt`" \
|
|
&& $(CC) $(CFLAGS) $(DEFS) -c $(srcdir)/version_servald.c -o $@ -DSERVALD_VERSION="\"$$V\"" -DSERVALD_COPYRIGHT="\"$$C\""
|
|
|
|
#' <-- fixes vim syntax highlighting
|
|
|
|
# Compile SQLITE as a special case, because it is imported source code.
|
|
# Instead of fixing warnings case-by-case in the sqlite.c source code, simply
|
|
# suppress the classes of warnings that cause compilation errors with
|
|
# -Werror.
|
|
$(SQLITE3_OBJS): $(OBJSDIR_SERVALD)/%.o: $(srcdir)/$(SQLITE3_AMALGAMATION)/%.c
|
|
@echo SERVALD CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(CFLAGS_SQLITE) $(DEFS) -c $< -o $@
|
|
|
|
# No object files in source directory!
|
|
%.o: $(srcdir)/%.c
|
|
|
|
$(OBJSDIR_TOOLS)/%.o: $(srcdir)/%.c
|
|
@echo CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
$(OBJSDIR_SERVALD)/%.o: $(srcdir)/%.c
|
|
@echo SERVALD CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
$(OBJSDIR_LIB)/%.o: $(srcdir)/%.c
|
|
@echo LIB CC $<
|
|
@mkdir -p $(dir $@)
|
|
@$(RM) $(@:.o=.gcno) $(@:.o=.gcda)
|
|
@$(CC) $(CFLAGS) $(DEFS) -c $< -o $@
|
|
|
|
# Dependencies on header files. The following list of dependencies is too
|
|
# broad so it sometimes results in unnecessary re-compilation, but that is
|
|
# better than too narrow, which can result in missed re-compilation.
|
|
|
|
$(SERVAL_DAEMON_OBJS): Makefile $(CONFIG_H) $(PREFIXED_HEADERS) $(LIBSODIUM_HEADERS)
|
|
$(SERVALD_OBJS): Makefile $(LIBSODIUM_HEADERS)
|
|
$(LIB_SERVAL_OBJS): Makefile $(CONFIG_H) $(PREFIXED_HEADERS) $(LIBSODIUM_HEADERS)
|
|
$(OBJSDIR_TOOLS)/tfw_createfile.o: Makefile $(srcdir)/str.h
|
|
$(OBJSDIR_TOOLS)/directory_service.o: Makefile $(CONFIG_H) $(PREFIXED_HEADERS) $(LIBSODIUM_HEADERS)
|
|
$(MONITOR_CLIENT_OBJS): Makefile $(CONFIG_H) $(PREFIXED_HEADERS) $(LIBSODIUM_HEADERS)
|
|
$(SIMULATOR_OBJS): Makefile $(CONFIG_H) $(PREFIXED_HEADERS) $(LIBSODIUM_HEADERS)
|
|
|
|
# Rules for main targets.
|
|
|
|
.INTERMEDIATE: _servald.a
|
|
_servald.a: $(SERVALD_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo AR $@
|
|
@$(RM) $@
|
|
@$(AR) -cr $@ $^
|
|
|
|
libservaldaemon.a: _servald.a $(LIBSODIUM_A)
|
|
@$(call MERGE_STATIC_LIBS, $@, $^)
|
|
|
|
libservaldaemon.so: \
|
|
$(OBJSDIR_SERVALD)/servald_features.o \
|
|
$(OBJSDIR_SERVALD)/log_output_console.o \
|
|
$(SERVAL_DAEMON_JNI_OBJS) \
|
|
_servald.a \
|
|
$(LIBSODIUM_A)
|
|
@echo LINK $@
|
|
@$(CC) -Wall -shared -o $@ $(LDFLAGS) $(filter %.o, $^) $(filter %.a, $^)
|
|
|
|
# The daemon executable. There is no main.o mentioned in this link line, so
|
|
# the link brings it in from libservaldaemon.a in order to resolve the 'main'
|
|
# symbol. The servald_features.o object causes all the other .o object files
|
|
# to be pulled into the link.
|
|
servald: $(OBJSDIR_SERVALD)/servald_features.o \
|
|
$(OBJSDIR_SERVALD)/log_output_console.o \
|
|
libservaldaemon.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
ifneq ($(SWIFTC),) # Only provide Swift targets if the Swift compiler is available.
|
|
|
|
# A servald equivalent whose main entry point and logging output is implemented
|
|
# in the Swift language, rather than the C entry point in main.c. This exists
|
|
# mainly to ensure that the Serval daemon library can be linked into a Swift
|
|
# program and executed. This linkage support is needed by the iOS framework
|
|
# package.
|
|
servaldswift: $(srcdir)/servaldswift.swift \
|
|
$(OBJSDIR_SERVALD)/servald_features.o \
|
|
$(SWIFT_MODULE_NAME).swiftmodule \
|
|
libServalDNA.a \
|
|
libservaldaemon.a
|
|
@echo SWIFT $@
|
|
@$(SWIFTC) -emit-executable -o $@ \
|
|
$(SWIFTCFLAGS) $(SWIFTDEFS) \
|
|
$(filter %.swift, $^) $(filter %.o, $^) $(filter %.a, $^) \
|
|
$(SWIFTLIBS)
|
|
|
|
endif # $(SWIFTC)
|
|
|
|
servaldwrap: $(OBJSDIR_SERVALD)/servalwrap.o
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
serval-tests: $(OBJSDIR_SERVALD)/test_features.o \
|
|
libservaldaemon.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
directory_service: $(OBJSDIR_TOOLS)/directory_service.o libservalclient.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
tfw_createfile: $(OBJSDIR_TOOLS)/tfw_createfile.o libservalclient.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
fakeradio: $(OBJSDIR_TOOLS)/fakeradio.o libservalclient.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
simulator: $(SIMULATOR_OBJS) libservalclient.a
|
|
@echo LINK $@
|
|
@$(CC) -Wall -o $@ $^ $(LDFLAGS)
|
|
|
|
.INTERMEDIATE: _servalclient.a
|
|
_servalclient.a: $(LIB_SERVAL_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo AR $@
|
|
@$(RM) $@
|
|
@$(AR) -cr $@ $^
|
|
|
|
libservalclient.a: _servalclient.a $(LIBSODIUM_A)
|
|
@$(call MERGE_STATIC_LIBS, $@, $^)
|
|
|
|
libservalclient.so: $(LIB_SERVAL_OBJS) $(OBJSDIR_TOOLS)/version.o $(LIBSODIUM_A)
|
|
@echo LINK $@
|
|
@$(CC) -Wall -shared -o $@ $(LDFLAGS) $(filter %.o %.a, $^) $(filter %.a, $^)
|
|
|
|
.INTERMEDIATE: _monitorclient.a
|
|
_monitorclient.a: $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o
|
|
@echo AR $@
|
|
@$(RM) $@
|
|
@$(AR) -cr $@ $^
|
|
|
|
libmonitorclient.a: _monitorclient.a $(LIBSODIUM_A)
|
|
@$(call MERGE_STATIC_LIBS, $@, $^)
|
|
|
|
libmonitorclient.so: $(MONITOR_CLIENT_OBJS) $(OBJSDIR_TOOLS)/version.o $(LIBSODIUM_A)
|
|
@echo LINK $@
|
|
@$(CC) -Wall -shared -o $@ $(LDFLAGS) $(filter %.o, $^) $(filter %.a, $^)
|
|
|
|
# The tags will always index all the Serval DNA headers and source files. If
|
|
# serval-tools is installed, then it will also index all the libsodium, JNI
|
|
# and Android NDK header files.
|
|
$(srcdir)/tags: Makefile $(PREFIXED_HEADERS) $(PREFIXED_SOURCES)
|
|
{ for file in $(PREFIXED_HEADERS) $(PREFIXED_SOURCES); do echo "$$file"; done; \
|
|
find $(LIBSODIUM_DEV)/include -type f ; \
|
|
sp-find-gcc-headers $(CFLAGS) 2>/dev/null; \
|
|
ndk_prefix=$$(sp-ndk-prefix . 2>/dev/null) && find "$$ndk_prefix/arch-arm/usr/include" -type f; \
|
|
} | ctags -L- -f $@ --tag-relative=yes --c-kinds=defgmpstuv
|
|
|
|
# Helpful target to update the COPYRIGHT.txt file by harvesting copyright
|
|
# information from the contents of all the source and header files. This
|
|
# should be run periodically and the results reviewed, manually adjusted and
|
|
# committed to the repository.
|
|
|
|
findPATH = $(firstword $(wildcard $(addsuffix /$(1),$(subst :, ,$(PATH)))))
|
|
COPYRIGHT_TOOL := $(call findPATH,sp-copyright-tool)
|
|
|
|
copyright:
|
|
@if [ -x "$(COPYRIGHT_TOOL)" ]; then \
|
|
echo GENERATE COPYRIGHT.txt; \
|
|
$(COPYRIGHT_TOOL) -o COPYRIGHT.txt condense \
|
|
$(PREFIXED_HEADERS) \
|
|
$(PREFIXED_SOURCES) \
|
|
$(find $(srcdir)/java-api -type f -name '*.java') \
|
|
$(find $(srcdir)/swift-api -type f -name '*.swift') \
|
|
; \
|
|
else \
|
|
echo 'sp-copyright-tool is not in $$PATH; COPYRIGHT.txt not updated'; \
|
|
fi
|