diff options
Diffstat (limited to 'decoder/build/linux/makefile')
| -rw-r--r-- | decoder/build/linux/makefile | 196 |
1 files changed, 196 insertions, 0 deletions
diff --git a/decoder/build/linux/makefile b/decoder/build/linux/makefile new file mode 100644 index 000000000000..330829b77089 --- /dev/null +++ b/decoder/build/linux/makefile @@ -0,0 +1,196 @@ +######################################################## +# 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 directory +ifeq ($(OCSD_ROOT),) +OCSD_ROOT := $(shell pwd | 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 + +# determine base architecture, heavily borrowed from the Linux kernel v4.4's +# tools/perf/config/Makefile.arch +# For example, to compile for arm64 on a X86 PC, you can issue the command: +# "export ARCH=arm64" +ifndef ARCH +ARCH := $(shell uname -m 2>/dev/null || echo not) +endif + +# 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_CPP=$(CROSS_COMPILE)g++ +export MASTER_LINKER=$(CROSS_COMPILE)g++ +export MASTER_LIB=$(CROSS_COMPILE)ar +export INSTALL=install + +# installation directory +INSTALL_LIB_DIR=/usr/lib/ +export INSTALL_INCLUDE_DIR=/usr/include/ + +# compile flags +MASTER_CC_FLAGS := -c -Wall -DLINUX +MASTER_CPP_FLAGS := -c -Wall -DLINUX -std=c++11 +MASTER_LINKER_FLAGS := -Wl,-z,defs +MASTER_LIB_FLAGS := rcs + +# debug variant +ifdef DEBUG +MASTER_CC_FLAGS += -g -O0 -DDEBUG +MASTER_CPP_FLAGS += -g -O0 -DDEBUG +BUILD_VARIANT=dbg +else +MASTER_CC_FLAGS += -g -O2 -DNDEBUG +MASTER_CPP_FLAGS += -g -O2 -DNDEBUG +BUILD_VARIANT=rel +endif + + +# platform bit size variant +ifeq ($(ARCH),x86) + MFLAG:="-m32" + BIT_VARIANT=32 +else ifeq ($(ARCH),x86_64) + MFLAG:="-m64" + BIT_VARIANT=64 +else ifeq ($(ARCH),arm) + BIT_VARIANT=-arm +else ifeq ($(ARCH),arm64) + BIT_VARIANT=-arm64 +else ifeq ($(ARCH),aarch64) + BIT_VARIANT=-arm64 +else ifeq ($(ARCH),aarch32) + BIT_VARIANT=-arm +endif + +MASTER_CC_FLAGS += $(MFLAG) +MASTER_CPP_FLAGS += $(MFLAG) +MASTER_LINKER_FLAGS += $(MFLAG) + +# export build flags +export MASTER_CC_FLAGS +export MASTER_CPP_FLAGS +export MASTER_LINKER_FLAGS +export MASTER_LIB_FLAGS + +# target directories +export PLAT_DIR=linux$(BIT_VARIANT)/$(BUILD_VARIANT) +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) + +########################################################### +# build targets + +all: libs tests + +libs: $(LIB_BASE_NAME)_lib $(LIB_CAPI_NAME)_lib + +install: libs + $(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so $(INSTALL_LIB_DIR)/ + $(INSTALL) --mode=644 $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so $(INSTALL_LIB_DIR)/ + cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make install_inc + +################################ +# 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 + +############################################################# +# clean targets +# +clean: clean_libs clean_tests + +.PHONY: clean_libs clean_tests + +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 + +clean_install: + rm -f $(INSTALL_LIB_DIR)/lib$(LIB_BASE_NAME).so + rm -f $(INSTALL_LIB_DIR)/lib$(LIB_CAPI_NAME).so + rm -rf $(INSTALL_INCLUDE_DIR)/$(LIB_UAPI_INC_DIR) |
