You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
211 lines
7.4 KiB
211 lines
7.4 KiB
########################################################
|
|
# Copyright 2015 ARM Limited. All rights reserved.
|
|
#
|
|
# Redistribution and use in source and binary forms, with or without modification,
|
|
# are permitted provided that the following conditions are met:
|
|
#
|
|
# 1. Redistributions of source code must retain the above copyright notice,
|
|
# this list of conditions and the following disclaimer.
|
|
#
|
|
# 2. Redistributions in binary form must reproduce the above copyright notice,
|
|
# this list of conditions and the following disclaimer in the documentation
|
|
# and/or other materials provided with the distribution.
|
|
#
|
|
# 3. Neither the name of the copyright holder nor the names of its contributors
|
|
# may be used to endorse or promote products derived from this software without
|
|
# specific prior written permission.
|
|
#
|
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
|
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
|
|
# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
|
|
# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
#
|
|
#################################################################################
|
|
# OpenCSD - master makefile for libraries and tests
|
|
#
|
|
# command line options
|
|
# DEBUG=1 create a debug build
|
|
#
|
|
|
|
# Set project root - relative to build makefile
|
|
ifeq ($(OCSD_ROOT),)
|
|
OCSD_ROOT := $(shell echo $(dir $(abspath $(lastword $(MAKEFILE_LIST)))) | sed 's,/build/linux.*,,')
|
|
export OCSD_ROOT
|
|
endif
|
|
|
|
# library names
|
|
LIB_BASE_NAME=opencsd
|
|
export LIB_BASE_NAME
|
|
LIB_CAPI_NAME=$(LIB_BASE_NAME)_c_api
|
|
export LIB_CAPI_NAME
|
|
|
|
# source root directories
|
|
export OCSD_LIB_ROOT=$(OCSD_ROOT)/lib
|
|
|
|
export OCSD_INCLUDE=$(OCSD_ROOT)/include
|
|
export OCSD_SOURCE=$(OCSD_ROOT)/source
|
|
|
|
export OCSD_TESTS=$(OCSD_ROOT)/tests
|
|
export LIB_UAPI_INC_DIR=opencsd
|
|
|
|
# tools
|
|
export MASTER_CC=$(CROSS_COMPILE)gcc
|
|
export MASTER_CXX=$(CROSS_COMPILE)g++
|
|
export MASTER_LINKER=$(CROSS_COMPILE)g++
|
|
export MASTER_LIB=$(CROSS_COMPILE)ar
|
|
export INSTALL=install
|
|
|
|
|
|
# installation directory
|
|
PREFIX ?=/usr
|
|
LIB_PATH ?= lib
|
|
INSTALL_LIB_DIR=$(DESTDIR)$(PREFIX)/$(LIB_PATH)
|
|
INSTALL_BIN_DIR=$(DESTDIR)$(PREFIX)/bin
|
|
export INSTALL_INCLUDE_DIR=$(DESTDIR)$(PREFIX)/include/
|
|
INSTALL_MAN_DIR=$(DESTDIR)$(PREFIX)/share/man/man1
|
|
|
|
# compile flags
|
|
CFLAGS += $(CPPFLAGS) -c -Wall -DLINUX -Wno-switch -Wlogical-op -fPIC
|
|
CXXFLAGS += $(CPPFLAGS) -c -Wall -DLINUX -Wno-switch -Wlogical-op -fPIC -std=c++11
|
|
LDFLAGS += -Wl,-z,defs
|
|
ARFLAGS ?= rcs
|
|
|
|
# debug variant
|
|
ifdef DEBUG
|
|
CFLAGS += -g -O0 -DDEBUG
|
|
CXXFLAGS += -g -O0 -DDEBUG
|
|
BUILD_VARIANT=dbg
|
|
else
|
|
CFLAGS += -O2 -DNDEBUG
|
|
CXXFLAGS += -O2 -DNDEBUG
|
|
BUILD_VARIANT=rel
|
|
endif
|
|
|
|
# export build flags
|
|
export CFLAGS
|
|
export CXXFLAGS
|
|
export LDFLAGS
|
|
export ARFLAGS
|
|
|
|
# target directories - fixed for default packaging build
|
|
PLAT_DIR ?= builddir
|
|
export PLAT_DIR
|
|
export LIB_TARGET_DIR=$(OCSD_LIB_ROOT)/$(PLAT_DIR)
|
|
export LIB_TEST_TARGET_DIR=$(OCSD_TESTS)/lib/$(PLAT_DIR)
|
|
export BIN_TEST_TARGET_DIR=$(OCSD_TESTS)/bin/$(PLAT_DIR)
|
|
|
|
# Fish version out of header file (converting from hex)
|
|
getver:=printf "%d" $$(awk '/\#define VARNAME/ { print $$3 }' $(OCSD_ROOT)/include/opencsd/ocsd_if_version.h)
|
|
export SO_MAJOR_VER := $(shell $(subst VARNAME,OCSD_VER_MAJOR,$(getver)))
|
|
SO_MINOR_VER := $(shell $(subst VARNAME,OCSD_VER_MINOR,$(getver)))
|
|
SO_PATCH_VER := $(shell $(subst VARNAME,OCSD_VER_PATCH,$(getver)))
|
|
export SO_VER := $(SO_MAJOR_VER).$(SO_MINOR_VER).$(SO_PATCH_VER)
|
|
|
|
|
|
###########################################################
|
|
# build targets
|
|
|
|
all: libs tests
|
|
|
|
libs: $(LIB_BASE_NAME)_lib $(LIB_CAPI_NAME)_lib
|
|
|
|
DEF_SO_PERM ?= 644
|
|
|
|
install: libs tests
|
|
mkdir -p $(INSTALL_LIB_DIR) $(INSTALL_INCLUDE_DIR) $(INSTALL_BIN_DIR)
|
|
cp -d $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so $(INSTALL_LIB_DIR)/
|
|
cp -d $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so.$(SO_MAJOR_VER) $(INSTALL_LIB_DIR)/
|
|
$(INSTALL) --mode=$(DEF_SO_PERM) $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so.$(SO_VER) $(INSTALL_LIB_DIR)/
|
|
cp -d $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so $(INSTALL_LIB_DIR)/
|
|
cp -d $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so.$(SO_MAJOR_VER) $(INSTALL_LIB_DIR)/
|
|
$(INSTALL) --mode=$(DEF_SO_PERM) $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so.$(SO_VER) $(INSTALL_LIB_DIR)/
|
|
ifndef DISABLE_STATIC
|
|
$(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a $(INSTALL_LIB_DIR)/
|
|
$(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a $(INSTALL_LIB_DIR)/
|
|
endif
|
|
cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make install_inc
|
|
$(INSTALL) --mode=755 $(BIN_TEST_TARGET_DIR)/trc_pkt_lister $(INSTALL_BIN_DIR)/
|
|
|
|
install_man:
|
|
$(INSTALL) --mode=644 $(OCSD_ROOT)/docs/man/trc_pkt_lister.1 $(INSTALL_MAN_DIR)/
|
|
|
|
|
|
################################
|
|
# build OpenCSD trace decode library
|
|
#
|
|
$(LIB_BASE_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so
|
|
|
|
$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so: $(LIB_BASE_NAME)_all
|
|
$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a: $(LIB_BASE_NAME)_all
|
|
|
|
# single command builds both .a and .so targets in sub-makefile
|
|
$(LIB_BASE_NAME)_all:
|
|
mkdir -p $(LIB_TARGET_DIR)
|
|
cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && $(MAKE)
|
|
|
|
################################
|
|
# build OpenCSD trace decode C API library
|
|
#
|
|
$(LIB_CAPI_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so
|
|
|
|
$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so: $(LIB_CAPI_NAME)_all
|
|
$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a: $(LIB_CAPI_NAME)_all
|
|
|
|
# single command builds both .a and .so targets in sub-makefile
|
|
$(LIB_CAPI_NAME)_all: $(LIB_BASE_NAME)_lib
|
|
mkdir -p $(LIB_TARGET_DIR)
|
|
cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && $(MAKE)
|
|
|
|
#################################
|
|
# build tests
|
|
|
|
.PHONY: tests
|
|
tests: libs
|
|
cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && $(MAKE)
|
|
cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && $(MAKE)
|
|
cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && $(MAKE)
|
|
cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE)
|
|
cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE)
|
|
|
|
#
|
|
# build docs
|
|
.PHONY: docs
|
|
docs:
|
|
(cd $(OCSD_ROOT)/docs; doxygen doxygen_config.dox)
|
|
|
|
|
|
#############################################################
|
|
# clean targets
|
|
#
|
|
clean: clean_libs clean_tests clean_docs
|
|
|
|
.PHONY: clean_libs clean_tests clean_docs clean_install
|
|
|
|
clean_libs:
|
|
cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && $(MAKE) clean
|
|
cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && $(MAKE) clean
|
|
|
|
clean_tests:
|
|
cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && $(MAKE) clean
|
|
cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && $(MAKE) clean
|
|
cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && $(MAKE) clean
|
|
cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && $(MAKE) clean
|
|
cd $(OCSD_ROOT)/tests/build/linux/mem_buffer_eg && $(MAKE) clean
|
|
-rmdir $(OCSD_TESTS)/lib
|
|
|
|
clean_docs:
|
|
-rm -r $(OCSD_ROOT)/docs/html
|
|
|
|
clean_install:
|
|
-rm $(INSTALL_LIB_DIR)/lib$(LIB_BASE_NAME).*
|
|
-rm $(INSTALL_LIB_DIR)/lib$(LIB_CAPI_NAME).*
|
|
-rm -r $(INSTALL_INCLUDE_DIR)/$(LIB_UAPI_INC_DIR)
|
|
-rm $(INSTALL_BIN_DIR)/trc_pkt_lister
|
|
-rm $(INSTALL_MAN_DIR)/trc_pkt_lister.1
|