Files
libgbinder-radio/unit/common/Makefile
Slava Monich 24a5e281d7 [gbinder-radio] Add RadioClient and related APIs. JB#55524
Replacement of some gint32 fields with enums may cause "warning:
passing argument xxx from incompatible pointer type" or something
similar at compile time but it's safe from the ABI prospective
because those enums have the same size as gint32 (and that's
checked at compiled time). It may, however, cause compilation
errors in the projects compiled with -Werror
2021-12-02 17:33:00 +02:00

217 lines
5.4 KiB
Makefile

# -*- Mode: makefile-gmake -*-
.PHONY: clean cleaner unitclean all debug release coverage valgrind
.PHONY: debug_lib release_lib coverage_lib
.PHONY: test test_banner
#
# Real test makefile defines EXE (and possibly SRC) and includes this one.
#
ifndef EXE
${error EXE not defined}
endif
SRC ?= $(EXE).c
COMMON_SRC ?= \
test_gbinder_client.c \
test_gbinder_local_object.c \
test_gbinder_local_request.c \
test_gbinder_local_reply.c \
test_gbinder_reader_writer.c \
test_gbinder_remote_object.c \
test_gbinder_remote_request.c \
test_gbinder_remote_reply.c \
test_gbinder_servicemanager.c \
test_main.c
#
# Required packages
#
LINK_PKGS += libglibutil glib-2.0 gobject-2.0
PKGS += $(LINK_PKGS) libgbinder
#
# Default target
#
all: debug release
#
# Directories
#
SRC_DIR = .
LIB_DIR = ../..
COMMON_DIR = ../common
BUILD_DIR = build
DEBUG_BUILD_DIR = $(BUILD_DIR)/debug
RELEASE_BUILD_DIR = $(BUILD_DIR)/release
COVERAGE_BUILD_DIR = $(BUILD_DIR)/coverage
COMMON_BUILD_DIR = $(COMMON_DIR)/build
COMMON_DEBUG_BUILD_DIR = $(COMMON_BUILD_DIR)/debug
COMMON_RELEASE_BUILD_DIR = $(COMMON_BUILD_DIR)/release
COMMON_COVERAGE_BUILD_DIR = $(COMMON_BUILD_DIR)/coverage
#
# Tools and flags
#
CC ?= $(CROSS_COMPILE)gcc
LD = $(CC)
WARNINGS += -Wall -Wno-deprecated-declarations
INCLUDES += -I$(COMMON_DIR) -I$(LIB_DIR)/src -I$(LIB_DIR)/include
BASE_FLAGS = -fPIC
FULL_CFLAGS = $(BASE_FLAGS) $(CFLAGS) $(DEFINES) $(WARNINGS) $(INCLUDES) \
-MMD -MP $(shell pkg-config --cflags $(PKGS))
FULL_LDFLAGS = $(BASE_FLAGS) $(LDFLAGS)
LIBS = $(shell pkg-config --libs $(LINK_PKGS)) -lpthread
QUIET_MAKE = make --no-print-directory
DEBUG_FLAGS = -g
RELEASE_FLAGS =
COVERAGE_FLAGS = -g
DEBUG_LDFLAGS = $(FULL_LDFLAGS) $(DEBUG_FLAGS)
RELEASE_LDFLAGS = $(FULL_LDFLAGS) $(RELEASE_FLAGS)
COVERAGE_LDFLAGS = $(FULL_LDFLAGS) $(COVERAGE_FLAGS) --coverage
DEBUG_CFLAGS = $(FULL_CFLAGS) $(DEBUG_FLAGS) -DDEBUG
RELEASE_CFLAGS = $(FULL_CFLAGS) $(RELEASE_FLAGS) -O2
COVERAGE_CFLAGS = $(FULL_CFLAGS) $(COVERAGE_FLAGS) --coverage
DEBUG_LIB_FILE := $(shell $(QUIET_MAKE) -C $(LIB_DIR) print_debug_lib)
RELEASE_LIB_FILE := $(shell $(QUIET_MAKE) -C $(LIB_DIR) print_release_lib)
COVERAGE_LIB_FILE := $(shell $(QUIET_MAKE) -C $(LIB_DIR) print_coverage_lib)
DEBUG_LIB = $(LIB_DIR)/$(DEBUG_LIB_FILE)
RELEASE_LIB = $(LIB_DIR)/$(RELEASE_LIB_FILE)
COVERAGE_LIB = $(LIB_DIR)/$(COVERAGE_LIB_FILE)
DEBUG_LIBS = $(DEBUG_LIB) $(LIBS)
RELEASE_LIBS = $(RELEASE_LIB) $(LIBS)
COVERAGE_LIBS = $(COVERAGE_LIB) $(LIBS)
#
# Files
#
TEST_DEBUG_OBJS = $(SRC:%.c=$(DEBUG_BUILD_DIR)/%.o)
TEST_RELEASE_OBJS = $(SRC:%.c=$(RELEASE_BUILD_DIR)/%.o)
TEST_COVERAGE_OBJS = $(SRC:%.c=$(COVERAGE_BUILD_DIR)/%.o)
COMMON_DEBUG_OBJS = $(COMMON_SRC:%.c=$(COMMON_DEBUG_BUILD_DIR)/%.o)
COMMON_RELEASE_OBJS = $(COMMON_SRC:%.c=$(COMMON_RELEASE_BUILD_DIR)/%.o)
COMMON_COVERAGE_OBJS = $(COMMON_SRC:%.c=$(COMMON_COVERAGE_BUILD_DIR)/%.o)
DEBUG_OBJS = $(COMMON_DEBUG_OBJS) $(TEST_DEBUG_OBJS)
RELEASE_OBJS = $(COMMON_RELEASE_OBJS) $(TEST_RELEASE_OBJS)
COVERAGE_OBJS = $(COMMON_COVERAGE_OBJS) $(TEST_COVERAGE_OBJS)
#
# Dependencies
#
DEPS = $(DEBUG_OBJS:%.o=%.d) $(RELEASE_OBJS:%.o=%.d)
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(strip $(DEPS)),)
-include $(DEPS)
endif
endif
$(DEBUG_LIB): | debug_lib
$(RELEASE_LIB): | release_lib
$(COVERAGE_LIB): | coverage_lib
$(TEST_DEBUG_OBJS): | $(DEBUG_BUILD_DIR)
$(TEST_RELEASE_OBJS): | $(RELEASE_BUILD_DIR)
$(TEST_COVERAGE_OBJS): | $(COVERAGE_BUILD_DIR)
$(COMMON_DEBUG_OBJS): | $(COMMON_DEBUG_BUILD_DIR)
$(COMMON_RELEASE_OBJS): | $(COMMON_RELEASE_BUILD_DIR)
$(COMMON_COVERAGE_OBJS): | $(COMMON_COVERAGE_BUILD_DIR)
#
# Rules
#
DEBUG_EXE = $(DEBUG_BUILD_DIR)/$(EXE)
RELEASE_EXE = $(RELEASE_BUILD_DIR)/$(EXE)
COVERAGE_EXE = $(COVERAGE_BUILD_DIR)/$(EXE)
debug: debug_lib $(DEBUG_EXE)
release: release_lib $(RELEASE_EXE)
coverage: coverage_lib $(COVERAGE_EXE)
unitclean:
rm -f *~
rm -fr $(BUILD_DIR) $(COMMON_BUILD_DIR)
clean: unitclean
cleaner: unitclean
@make -C $(LIB_DIR) clean
test_banner:
@echo "===========" $(EXE) "=========== "
test: test_banner debug
@$(DEBUG_EXE)
valgrind: test_banner debug
@G_DEBUG=gc-friendly G_SLICE=always-malloc valgrind --tool=memcheck --leak-check=full --show-possibly-lost=no $(DEBUG_EXE)
$(DEBUG_BUILD_DIR):
mkdir -p $@
$(RELEASE_BUILD_DIR):
mkdir -p $@
$(COVERAGE_BUILD_DIR):
mkdir -p $@
$(COMMON_DEBUG_BUILD_DIR):
mkdir -p $@
$(COMMON_RELEASE_BUILD_DIR):
mkdir -p $@
$(COMMON_COVERAGE_BUILD_DIR):
mkdir -p $@
$(DEBUG_BUILD_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) -c $(DEBUG_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(RELEASE_BUILD_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) -c $(RELEASE_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(COVERAGE_BUILD_DIR)/%.o : $(SRC_DIR)/%.c
$(CC) -c $(COVERAGE_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(COMMON_DEBUG_BUILD_DIR)/%.o : $(COMMON_DIR)/%.c
$(CC) -c $(DEBUG_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(COMMON_RELEASE_BUILD_DIR)/%.o : $(COMMON_DIR)/%.c
$(CC) -c $(RELEASE_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(COMMON_COVERAGE_BUILD_DIR)/%.o : $(COMMON_DIR)/%.c
$(CC) -c $(COVERAGE_CFLAGS) -MT"$@" -MF"$(@:%.o=%.d)" $< -o $@
$(DEBUG_EXE): $(DEBUG_LIB) $(DEBUG_OBJS)
$(LD) $(DEBUG_LDFLAGS) $(DEBUG_OBJS) $(DEBUG_LIBS) -o $@
$(RELEASE_EXE): $(RELEASE_LIB) $(RELEASE_OBJS)
$(LD) $(RELEASE_LDFLAGS) $(RELEASE_OBJS) $(RELEASE_LIBS) -o $@
$(COVERAGE_EXE): $(COVERAG_LIB) $(COVERAGE_OBJS)
$(LD) $(COVERAGE_LDFLAGS) $(COVERAGE_OBJS) $(COVERAGE_LIBS) -o $@
debug_lib:
$(MAKE) -C $(LIB_DIR) $@
release_lib:
$(MAKE) -C $(LIB_DIR) $@
coverage_lib:
$(MAKE) -C $(LIB_DIR) $@