blob: 4befae3a0412f5ee3a1c661be3a1cd0ceb4fdf09 [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
mleach38da0c72015-12-07 10:08:56 +0000113libs: $(LIB_BASE_NAME)_lib $(LIB_BASE_NAME)_so $(LIB_CAPI_NAME)_lib $(LIB_CAPI_NAME)_so
mleach228a5e02015-07-27 17:38:00 +0100114
mleachbdcc5e82015-08-03 18:03:04 +0100115################################
mleach38da0c72015-12-07 10:08:56 +0000116# build static OpenCSD trace decode library
mleachbdcc5e82015-08-03 18:03:04 +0100117#
mleach38da0c72015-12-07 10:08:56 +0000118$(LIB_BASE_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a
mleach228a5e02015-07-27 17:38:00 +0100119
mleach38da0c72015-12-07 10:08:56 +0000120$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).a:
121 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000122 cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && make
mleach38da0c72015-12-07 10:08:56 +0000123
124
125################################
126# build shared OpenCSD trace decode library
127#
128$(LIB_BASE_NAME)_so: $(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so
129
130$(LIB_TARGET_DIR)/lib$(LIB_BASE_NAME).so:
mleach228a5e02015-07-27 17:38:00 +0100131 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000132 cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && make
mleach228a5e02015-07-27 17:38:00 +0100133
mleachbdcc5e82015-08-03 18:03:04 +0100134################################
mleach38da0c72015-12-07 10:08:56 +0000135# build static OpenCSD trace decode C API library
mleachbdcc5e82015-08-03 18:03:04 +0100136#
mleach38da0c72015-12-07 10:08:56 +0000137$(LIB_CAPI_NAME)_lib: $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a
mleachbdcc5e82015-08-03 18:03:04 +0100138
mleach38da0c72015-12-07 10:08:56 +0000139$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).a:
140 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000141 cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make
mleach38da0c72015-12-07 10:08:56 +0000142
143################################
144# build shared OpenCSD trace decode C API library
145#
146$(LIB_CAPI_NAME)_so: $(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so
147
148$(LIB_TARGET_DIR)/lib$(LIB_CAPI_NAME).so: $(LIB_BASE_NAME)_lib
mleachbdcc5e82015-08-03 18:03:04 +0100149 mkdir -p $(LIB_TARGET_DIR)
mleach48d83a62016-03-18 15:38:08 +0000150 cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make
mleach228a5e02015-07-27 17:38:00 +0100151
152
mleachbdcc5e82015-08-03 18:03:04 +0100153#################################
154# build tests
mleach228a5e02015-07-27 17:38:00 +0100155
mleachbdcc5e82015-08-03 18:03:04 +0100156.PHONY: tests
157tests: libs
mleach48d83a62016-03-18 15:38:08 +0000158 cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && make
159 cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && make
160 cd $(OCSD_ROOT)/tests/build/linux/simple_pkt_print_c_api && make
mleachbdcc5e82015-08-03 18:03:04 +0100161
162#############################################################
163# clean targets
164#
165clean: clean_libs clean_tests
166
167.PHONY: clean_libs clean_tests
168
169clean_libs:
mleach48d83a62016-03-18 15:38:08 +0000170 cd $(OCSD_ROOT)/build/linux/ref_trace_decode_lib && make clean
171 cd $(OCSD_ROOT)/build/linux/rctdl_c_api_lib && make clean
mleachbdcc5e82015-08-03 18:03:04 +0100172
173clean_tests:
mleach48d83a62016-03-18 15:38:08 +0000174 cd $(OCSD_ROOT)/tests/build/linux/snapshot_parser_lib && make clean
175 cd $(OCSD_ROOT)/tests/build/linux/trc_pkt_lister && make clean
176 cd $(OCSD_ROOT)/tests/build/linux/simple_pkt_print_c_api && make clean