blob: 8c8441502e060f6ca5d2e6f5c9163beb344c34fa [file] [log] [blame]
mleach228a5e02015-07-27 17:38:00 +01001########################################################
2# Copyright 2015 ARM Limited. All rights reserved.
3#
4# Redistribution and use in source and binary forms, with or without modification,
5# are permitted provided that the following conditions are met:
6#
7# 1. Redistributions of source code must retain the above copyright notice,
8# this list of conditions and the following disclaimer.
9#
10# 2. Redistributions in binary form must reproduce the above copyright notice,
11# this list of conditions and the following disclaimer in the documentation
12# and/or other materials provided with the distribution.
13#
14# 3. Neither the name of the copyright holder nor the names of its contributors
15# may be used to endorse or promote products derived from this software without
16# specific prior written permission.
17#
18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS' AND
19# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
20# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21# IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
22# INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
23# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
24# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
25# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
27# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28#
29#################################################################################
mleach38da0c72015-12-07 10:08:56 +000030# OpenCSD - master makefile for libraries and tests
mleach228a5e02015-07-27 17:38:00 +010031#
32# command line options
33# DEBUG=1 create a debug build
34# LINUX64=1 create a 64 bit build
35
36# Set project root - relative to build directory
mleach48d83a62016-03-18 15:38:08 +000037ifeq ($(OCSD_ROOT),)
38OCSD_ROOT := $(shell pwd | sed 's,/build/linux.*,,')
39export OCSD_ROOT
mleach228a5e02015-07-27 17:38:00 +010040endif
41
mleach38da0c72015-12-07 10:08:56 +000042# library names
mleach31a7ed82015-12-08 12:13:28 +000043LIB_BASE_NAME=cstraced
mleach38da0c72015-12-07 10:08:56 +000044export LIB_BASE_NAME
45LIB_CAPI_NAME=$(LIB_BASE_NAME)_c_api
46export LIB_CAPI_NAME
47
Mathieu Poirier859ef9a2016-02-15 12:24:30 -070048# determine base architecture, heavily borrowed from the Linux kernel v4.4's
49# tools/perf/config/Makefile.arch
50ARCH := $(shell uname -m 2>/dev/null || echo not)
mleach38da0c72015-12-07 10:08:56 +000051
mleachbdcc5e82015-08-03 18:03:04 +010052# source root directories
mleach48d83a62016-03-18 15:38:08 +000053export OCSD_LIB_ROOT=$(OCSD_ROOT)/lib
mleach228a5e02015-07-27 17:38:00 +010054
mleach48d83a62016-03-18 15:38:08 +000055export OCSD_INCLUDE=$(OCSD_ROOT)/include
56export OCSD_SOURCE=$(OCSD_ROOT)/source
mleach228a5e02015-07-27 17:38:00 +010057
mleach48d83a62016-03-18 15:38:08 +000058export OCSD_TESTS=$(OCSD_ROOT)/tests
mleachbdcc5e82015-08-03 18:03:04 +010059
mleach228a5e02015-07-27 17:38:00 +010060# tools
61export MASTER_CC=gcc
62export MASTER_CPP=g++
63export MASTER_LINKER=g++
64export MASTER_LIB=ar
65
66# compile flags
67MASTER_CC_FLAGS := -c -Wall -DLINUX
68MASTER_CPP_FLAGS := -c -Wall -DLINUX -std=c++11
69MASTER_LINKER_FLAGS := -Wl,-z,defs
70MASTER_LIB_FLAGS := rcs
71
mleachbdcc5e82015-08-03 18:03:04 +010072# debug variant
mleach228a5e02015-07-27 17:38:00 +010073ifdef DEBUG
74MASTER_CC_FLAGS += -g -O0 -DDEBUG
75MASTER_CPP_FLAGS += -g -O0 -DDEBUG
76BUILD_VARIANT=dbg
77else
78MASTER_CC_FLAGS += -g -O2 -DNDEBUG
79MASTER_CPP_FLAGS += -g -O2 -DNDEBUG
80BUILD_VARIANT=rel
81endif
82
mleachbdcc5e82015-08-03 18:03:04 +010083# platform bit size variant
Mathieu Poirier859ef9a2016-02-15 12:24:30 -070084ifeq ($(ARCH),x86)
85 MFLAG:="-m32"
86 BIT_VARIANT=32
87else ifeq ($(ARCH),x86_64)
88 MFLAG:="-m64"
89 BIT_VARIANT=64
mleach228a5e02015-07-27 17:38:00 +010090endif
91
Mathieu Poirier859ef9a2016-02-15 12:24:30 -070092MASTER_CC_FLAGS += $(MFLAG)
93MASTER_CPP_FLAGS += $(MFLAG)
94MASTER_LINKER_FLAGS += $(MFLAG)
95
mleachbdcc5e82015-08-03 18:03:04 +010096# export build flags
mleach228a5e02015-07-27 17:38:00 +010097export MASTER_CC_FLAGS
98export MASTER_CPP_FLAGS
99export MASTER_LINKER_FLAGS
100export MASTER_LIB_FLAGS
101
mleachbdcc5e82015-08-03 18:03:04 +0100102# target directories
mleach228a5e02015-07-27 17:38:00 +0100103export PLAT_DIR=linux$(BIT_VARIANT)/$(BUILD_VARIANT)
mleach48d83a62016-03-18 15:38:08 +0000104export LIB_TARGET_DIR=$(OCSD_LIB_ROOT)/$(PLAT_DIR)
105export LIB_TEST_TARGET_DIR=$(OCSD_TESTS)/lib/$(PLAT_DIR)
106export BIN_TEST_TARGET_DIR=$(OCSD_TESTS)/bin/$(PLAT_DIR)
mleach228a5e02015-07-27 17:38:00 +0100107
108###########################################################
109# build targets
110
111all: libs tests
112
Mike Leach9a47a922016-12-16 15:00:34 +0000113libs: $(LIB_BASE_NAME)_lib $(LIB_CAPI_NAME)_lib
mleach228a5e02015-07-27 17:38:00 +0100114
mleachbdcc5e82015-08-03 18:03:04 +0100115################################
Mike Leach9a47a922016-12-16 15:00:34 +0000116# build OpenCSD trace decode library
mleachbdcc5e82015-08-03 18:03:04 +0100117#
Mike Leach9a47a922016-12-16 15:00:34 +0000118$(LIB_BASE_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so
mleach228a5e02015-07-27 17:38:00 +0100119
Mike Leach9a47a922016-12-16 15:00:34 +0000120$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so: $(LIB_BASE_NAME)_all
121$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a: $(LIB_BASE_NAME)_all
mleach38da0c72015-12-07 10:08:56 +0000122
Mike Leach9a47a922016-12-16 15:00:34 +0000123# single command builds both .a and .so targets in sub-makefile
124$(LIB_BASE_NAME)_all:
mleach228a5e02015-07-27 17:38:00 +0100125 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000126 cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && make
mleach228a5e02015-07-27 17:38:00 +0100127
mleachbdcc5e82015-08-03 18:03:04 +0100128################################
Mike Leach9a47a922016-12-16 15:00:34 +0000129# build OpenCSD trace decode C API library
mleachbdcc5e82015-08-03 18:03:04 +0100130#
Mike Leach9a47a922016-12-16 15:00:34 +0000131$(LIB_CAPI_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so
mleachbdcc5e82015-08-03 18:03:04 +0100132
Mike Leach9a47a922016-12-16 15:00:34 +0000133$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so: $(LIB_CAPI_NAME)_all
134$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a: $(LIB_CAPI_NAME)_all
135
136# single command builds both .a and .so targets in sub-makefile
137$(LIB_CAPI_NAME)_all: $(LIB_BASE_NAME)_lib
mleach38da0c72015-12-07 10:08:56 +0000138 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000139 cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make
mleach38da0c72015-12-07 10:08:56 +0000140
mleachbdcc5e82015-08-03 18:03:04 +0100141#################################
142# build tests
mleach228a5e02015-07-27 17:38:00 +0100143
mleachbdcc5e82015-08-03 18:03:04 +0100144.PHONY: tests
145tests: libs
Mike Leachb9d33982016-11-21 13:38:51 +0000146 cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && make
mleach48d83a62016-03-18 15:38:08 +0000147 cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && make
148 cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && make
149 cd $(OCSD_ROOT)/tests/build/linux/simple_pkt_print_c_api && make
Mike Leach459d06e2016-07-18 17:17:15 +0100150 cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && make
mleachbdcc5e82015-08-03 18:03:04 +0100151
152#############################################################
153# clean targets
154#
155clean: clean_libs clean_tests
156
157.PHONY: clean_libs clean_tests
158
159clean_libs:
mleach48d83a62016-03-18 15:38:08 +0000160 cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && make clean
161 cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make clean
mleachbdcc5e82015-08-03 18:03:04 +0100162
163clean_tests:
Mike Leach24fd02b2017-01-11 17:32:43 +0000164 cd $(OCSD_ROOT)/tests/build/linux/echo_test_dcd_lib && make clean
mleach48d83a62016-03-18 15:38:08 +0000165 cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && make clean
166 cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && make clean
167 cd $(OCSD_ROOT)/tests/build/linux/simple_pkt_print_c_api && make clean
Mike Leach459d06e2016-07-18 17:17:15 +0100168 cd $(OCSD_ROOT)/tests/build/linux/c_api_pkt_print_test && make clean