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.
341 lines
19 KiB
341 lines
19 KiB
# These definitions are generated by the kit builder
|
|
KIT := 1
|
|
COMPILER := gcc
|
|
TARGET_OS := linux
|
|
##############################################################
|
|
#
|
|
# This file defines (indirectly via include files) all the variables necessary for building tools and running tests.
|
|
# A detailed list of the variables defined in each file is available below.
|
|
#
|
|
# In addition, this files defines the common make targets.
|
|
#
|
|
# All aforementioned variables can be overridden from the command line, however it is not recommended to do so.
|
|
# In order to safely obtain more control over the build process, the user may define the following variables in
|
|
# the command line:
|
|
#
|
|
# PIN_ROOT - Specify the location for the Pin kit when building a tool outside of the kit.
|
|
# CC - Override the default c compiler for tools.
|
|
# CXX - Override the default c++ compiler for tools
|
|
# APP_CC - Override the default c compiler for applications and any additional object or shared object files.
|
|
# If not defined, APP_CC will be the same as CC.
|
|
# APP_CXX - Override the default c++ compiler for applications and any additional object or shared object files.
|
|
# If not defined, APP_CXX will be the same as CXX.
|
|
# TARGET - Override the default target architecture e.g. for cross-compilation.
|
|
# ICC - When ICC=1 is specified, the test binaries will be built will be done with the Intel compiler.
|
|
# GCCVER - On Linux, icc requires some utilities from the gcc toolchain. This specifies which gcc version to use.
|
|
# If a version is not specified, the default system libraries and compiler will be used.
|
|
# Relevant only on Linux when ICC=1.
|
|
# BINUTILS_PATH - Define a path to a different set of binutils for the linker. Relevant on Unix only.
|
|
# DEBUG - When DEBUG=1 is specified, debug information will be generated and no optimizations will be performed.
|
|
# PIN_TESTING - When PIN_TESTING=1 is specified, Pin will be invoked with additional flags which will add some internal
|
|
# testing. Note that this may incur a performance penalty.
|
|
# PINFLAGS - Use this to add Pin flags when running the tests. Usage: make PINFLAGS=<extra flags> ...
|
|
# INSTALLER - Specify a script for adding functionality to the "install" target. The script will run after the entire
|
|
# build completes successfully.
|
|
# INSTALL_FLAGS - Specify command line arguments to be passed to the installer script (see above).
|
|
# CMD_PREFIX - A prefix which will be added to all executed shell commands.
|
|
#
|
|
##############################################################
|
|
|
|
|
|
##############################################################
|
|
#
|
|
# The following variables are defined in win.vars / unix.vars:
|
|
#
|
|
# HOST_ARCH - Architecture of the host system. One of: ia32/intel64.
|
|
# TARGET - Architecture of the target system. This is usually the same as the host.
|
|
# BITS - Pointer size (in bits) of this architecture. One of 32/64.
|
|
# OBJDIR - The output directory for the test rules.
|
|
# TARGET_OS - Operating system of the target.
|
|
# OS_TYPE - One of: unix/win.
|
|
# COMPILER - The compiler used to build Pin. Some source trees' names depend on it. One of: gcc/icc/clang/msvc.
|
|
# LINKER - Linker.
|
|
# ARCHIVER - Static library (archive) builder. Should be followed by the requested archive name.
|
|
# ASMBLR - Assembler.
|
|
# EXE_SUFFIX - Extension of executables (apps).
|
|
# OBJ_SUFFIX - Extension of an object file.
|
|
# DLL_SUFFIX - Extension of a shared object file (dll).
|
|
# PINTOOL_SUFFIX - Extension of a tool.
|
|
# SATOOL_SUFFIX - Extension of static analysis tools.
|
|
# LIB_SUFFIX - Extension of a static library (archive).
|
|
# ASM_SUFFIX - Extension of asm source files (common convention).
|
|
# DLL_PREFIX - Prefix to a shared object's name. This is only relevant on Unix platforms. The prefix is "lib" by
|
|
# common convention.
|
|
# DLL_LINKAGE_SUFFIX - When linking an executable to a DLL, gcc/clang expect the .so file, and VS expects the .lib file.
|
|
# PYTHON - Define the python executable.
|
|
# DIFF - Diff application.
|
|
# CMP - Compare application used by the default test rule.
|
|
# CMD - Creates a temporary shell for the following command. Relevant on Windows only.
|
|
# GREP - The grep command.
|
|
# QGREP - Quiet grep command - output is suppressed.
|
|
# CGREP - Count number of matching lines.
|
|
# EGREP - Use the grep command with regex support.
|
|
# LINECOUNT - Count the number of lines in the given file.
|
|
# BASHTEST - Equivalent of the bash "test" command.
|
|
# STRIP - Equivalent of the "strip" program.
|
|
# SED - Equivalent of the "sed" program.
|
|
# EXPR - Equivalent of the "expr" program.
|
|
# AWK - Equivalent of the "awk" program.
|
|
# SET_DLL_PATH - Exports the LD_LIBRARY_PATH to point to OBJDIR. Relevant on Unix only.
|
|
# SUDO - Sudo utiliy in Unix
|
|
# CHOWN - Chown utility in Unix
|
|
# CHMOD - Chmod utility in Unix
|
|
#
|
|
##############################################################
|
|
|
|
|
|
##############################################################
|
|
#
|
|
# The following variables are defined in makefile.win.config / makefile.unix.config:
|
|
#
|
|
# ## Output control
|
|
#
|
|
# COMP_OBJ - Flags for compiling an object file. Should be followed by the requested output object's name.
|
|
# COMP_EXE - Flags for building an executable from source and object files. Should be followed by the requested
|
|
# output executable's name.
|
|
# LINK_EXE - Flags for linking an executable from object files. Should be followed by the requested output
|
|
# executable's name.
|
|
#
|
|
# ## Special compilation/linkage directives
|
|
#
|
|
# STATIC - Linker directive for building a static executable.
|
|
# NO_RANDOM - Linker directive which disables voluntary image relocation. Relevant only on Windows since VS2010.
|
|
# PIC - Compiler directive for generating position independent code. Irrelevant on Windows.
|
|
# NO_PIC - Compiler directive for generating a non-position-independent code. Irrelevant on Windows.
|
|
# PIE - Linker directive for generating a position independent executable. Irrelevant for Windows.
|
|
# NO_PIE - Linker directive for building a non-position-independent execuatble. Irrelevant on Windows.
|
|
# LDFLAGS_DEFAULT_NO_PIE- Linker directive for building a non-position-independent execuatble, or empty string
|
|
# for linkers that build non-position-independent execuatble by default.
|
|
# ATTACH - Perform tests that require Pin attach feature. Relevant only on Linux.
|
|
# Unless a value is provided by the user, this option's value is auto-detected.
|
|
# SSE2 - Compiler directive for generating sse2 instructions.
|
|
# FP387 - Compiler directive for generating x87 legacy fp code.
|
|
# ASMCPP - Specifies that the following files' language is assembly with embedded c++. It is included in
|
|
# ASM_FLAGS (see below). Relevant on Unix platforms.
|
|
# NO_STDLIBS - Do not link with any of the standard libraries.
|
|
# EXPORT - A function that creates a directive to export a symbol. Relevant only on windows.
|
|
#
|
|
# ## Include paths
|
|
#
|
|
# COMPONENT_INCLUDES - Include paths for additional Pin components. This is added to the tools' build rules automatically.
|
|
#
|
|
# ## Library paths
|
|
#
|
|
# APP_LPATHS - Defines the locations of the additional Pin components.
|
|
# TOOL_LPATHS - Defines the locations of the shared libraries needed to link a tool.
|
|
# SATOOL_LPATHS - Defines the locations of the shared libraries needed to link a static analysis tool.
|
|
# CXX_LPATHS - Defines the locations of c++-specific shared libraries.
|
|
#
|
|
## Libraries to link
|
|
#
|
|
# APP_LIBS - Defines some shared objects that may be needed by an application. On Unix platforms this includes
|
|
# the pthread library.
|
|
# DL_LIB - This defines the library which implements dynamic loading APIs (dl/thr). Relevant only on Unix.
|
|
# APP_LIB_ATOMIC - Link the application with Pin's atomic library. To use this, one must add $(COMPONENT_INCLUDES) to
|
|
# the compilation rules and $(APP_LPATHS) to the link rule.
|
|
# APP_LIB_XED - Link the application with Xed. To use this, one must add $(COMPONENT_INCLUDES) to the compilation
|
|
# rules and $(APP_LPATHS) to the link rule.
|
|
# TOOL_LIBS - Defines the libraries needed by the tool.
|
|
# SATOOL_LIBS - Defines the libraries needed by static analysis tools.
|
|
# CXX_LIBS - Defines c++-specific libraries needed by some applications and tools.
|
|
#
|
|
## Compiler flags
|
|
#
|
|
# APP_CXXFLAGS - Application's / object's compiler options. This may include optimization and debugging flags
|
|
# depending on whether DEBUG=1 was specified.
|
|
# APP_CXXFLAGS_NOOPT - Application's / object's compiler options with no optimizations regardless of the DEBUG flag.
|
|
# ASM_FLAGS - Application's / object's assembler options.
|
|
# TOOL_CXXFLAGS - Tool's compiler options. This may include optimization and debugging flags depending on whether
|
|
# DEBUG=1 was specified.
|
|
# TOOL_CXXFLAGS_NOOPT - Tool's compiler options with no optimizations regardless of the DEBUG flag.
|
|
# DLL_CXXFLAGS - Flags for compiling a dll. Comes in addition to to other compiler flags like APP_CXXFLAGS.
|
|
# ENABLE_DEPRECATED - Using this flag will suppress compiler warnings when using deprecated Pin APIs.
|
|
#
|
|
## Linker flags
|
|
#
|
|
# APP_LDFLAGS - Application's linker options.
|
|
# APP_LDFLAGS_NOOPT - Application's linker options with no optimizations.
|
|
# APP_LDFLAGS_LINK_ASM - Application's linker options when linking a single object which originated from an assembly
|
|
# source file.
|
|
# TOOL_LDFLAGS - Tool's linker options.
|
|
# TOOL_LDFLAGS_NOOPT - Tool's linker options with no optimizations.
|
|
# SATOOL_LDFLAGS - Static analysis tool's linker options. Relevant on Unix only.
|
|
# SATOOL_LDFLAGS_NOOPT - Static analysis tool's linker options with no optimizations. Relevant on Unix only.
|
|
# DLL_LDFLAGS - Flags for linking a dll. Comes in addition to to other linker flags like APP_LDFLAGS.
|
|
#
|
|
## Debugging flags
|
|
#
|
|
# DBG_INFO_CXX - If DEBUG=1, this variable holds compiler flags for generating debug information. Automatically
|
|
# included in all the compilation flags e.g. TOOL_CXXFLAGS_NOOPT, APP_CXXFLAGS, etc).
|
|
# DBG_INFO_LD - Same as DBG_INFO_CXX but for linking.
|
|
# DBG_INFO_CXX_ALWAYS - When this is specified in the compilation rule, debug information will be generated regardless of
|
|
# the value of the DEBUG variable. This is currently disabled on Windows due to some issues with
|
|
# cygwin/ssh.
|
|
# DBG_INFO_LD_ALWAYS - Same as DBG_INFO_CXX_ALWAYS but for linking.
|
|
# DWARF4 - Produce debugging information in DWARF version 4 format. Relevant only on Linux.
|
|
#
|
|
# ## General
|
|
#
|
|
# PIN_ROOT - Path to the Pin root directory.
|
|
# TOOLS_ROOT - Path to the Pin tools root directory.
|
|
# PIN - Pin launcher. When PIN_TESTING=1, this may be followed by some additional flags.
|
|
# PINBIN - The architecture-specific Pin executable. Depends on the value of the TARGET variable.
|
|
# PIN32 - The 32 bit Pin executable.
|
|
# PIN64 - The 32 bit Pin executable.
|
|
# PIN_TESTFLAGS - Additional arguments to Pin when PIN_TESTING=1.
|
|
# MAKE_TESTFLAGS - Additional arguments passed to "make" when running the .test recipes. See makefile.default.rules
|
|
# for usage.
|
|
# INSTALLER - Default installer (see details at the beginning of this files).
|
|
# INSTALL_FLAGS - Default installer flags (see details at the beginning of this files).
|
|
#
|
|
# The following variables are defined at the bottom of this file:
|
|
#
|
|
# APP_CC - The applications' c compiler. This enables compiling tools and apps with different compilers.
|
|
# APP_CXX - The applications' c++ compiler. This enables compiling tools and apps with different compilers.
|
|
# TESTAPP - Test application used in the default test rule.
|
|
# HELLO_APP - Hello world application which is used by several tests.
|
|
# HELLO_APP_DBG_INFO - Hello world application's debug info, to be used with -dwarf_file. Relevant on Unix only.
|
|
# HELLO_APP_DWARF4 - Hello world application which is compiled with dwarf4.
|
|
# DISABLE_ASLR - Program that executes another program with ASLR disabled.
|
|
# ATTACH_LAUNCHER - Generic utility for running an application and attaching Pin to it.
|
|
# THREAD_APP - Simple application that creates multiple threads that do some work.
|
|
# INSCOUNT_TOOL - Basic instruction counting tool, essentially the Pintool equivalent of "hello world".
|
|
# CHECKAVX - Small program which checks the hardware for avx support.
|
|
# CHECKAVX2 - Small program which checks the hardware for avx2 support.
|
|
# CHECKTSX - Small program which checks the hardware for tsx support.
|
|
# CHECKAVX512F - Small program which checks the hardware for avx512 foundation support.
|
|
# THREADLIB - Thread utilities library used by applications.
|
|
# SUPPORTS_AVX_OBJ - Object file which contains a function for checking avx support. This is used by several files from
|
|
# a few different directories.
|
|
# SUPPORTS_AVX2_OBJ - Object file which contains a function for checking avx2 support.
|
|
# SUPPORTS_AVX512F_OBJ - Object file which contains a function for checking avx512 foundation support.
|
|
# PYCOMPARE - A comparison script written in python.
|
|
#
|
|
# The following make targets are defined at the bottom of this file:
|
|
#
|
|
# all - Rule for building all the binaries specified in a per-directory makefile.rules file. The make program uses the
|
|
# first rule not preceded by a period "." as the default target. Since we want the "all" target to be the default,
|
|
# it must be specified here (before the per-directory makefile.rules file is called). All the other common make
|
|
# targets are defined in makefile.default.rules.
|
|
#
|
|
# The following variables and make targets are defined in makefile.default.rules:
|
|
#
|
|
# dir - Rule for creating the output directory. Depends on the value of the TARGET variable.
|
|
# obj-<arch> - Rule for building an output directory for a specific architecture.
|
|
# tools - Builds all the tools in the directory.
|
|
# apps - Builds all the applications in the directory.
|
|
# objects - Builds all the objects which were explicitly specified in the directory.
|
|
# dlls - Builds all the dlls in the directory.
|
|
# libs - Builds all the libraries (archives) in the directory.
|
|
# avxcheck - Builds a program which checks for avx support.
|
|
# avx2check - Builds a program which checks for avx2 support.
|
|
# tsxcheck - Builds a program which checks for tsx support.
|
|
# avx512fcheck - Builds a program which checks for avx512f support.
|
|
# install - Builds everything in the directory and runs the install script where applicable.
|
|
# test - Runs all the tests in the directory.
|
|
# sanity - Runs the sanity subset of tests in the directory.
|
|
# clean - Cleanup.
|
|
#
|
|
# $(OBJDIR)%$(PINTOOL_SUFFIX) - Default rule for building tools.
|
|
# Example: make obj-intel64/mytool.so
|
|
#
|
|
# $(OBJDIR)% - Default rule for building applications.
|
|
# Example: make obj-intel64/myapp
|
|
#
|
|
# %.test - Rule for running the default test template.
|
|
# Example: make mytest.test
|
|
#
|
|
##############################################################
|
|
|
|
|
|
##############################################################
|
|
#
|
|
# Include files
|
|
#
|
|
##############################################################
|
|
|
|
ifeq ($(OS),Windows_NT)
|
|
include $(CONFIG_ROOT)/win.vars
|
|
include $(CONFIG_ROOT)/makefile.win.config
|
|
else
|
|
include $(CONFIG_ROOT)/unix.vars
|
|
include $(CONFIG_ROOT)/makefile.unix.config
|
|
endif
|
|
|
|
|
|
##############################################################
|
|
#
|
|
# Variable definitions
|
|
#
|
|
##############################################################
|
|
|
|
# Define the applications' compiler
|
|
APP_CC := $(CC)
|
|
APP_CXX := $(CXX)
|
|
|
|
# Define the common test applications, utilities and Pintools
|
|
TESTAPP := $(TOOLS_ROOT)/Utils/$(OBJDIR)cp-pin$(EXE_SUFFIX)
|
|
HELLO_APP := $(TOOLS_ROOT)/Utils/$(OBJDIR)hello$(EXE_SUFFIX)
|
|
ifneq ($(TARGET_OS),windows)
|
|
HELLO_APP_DBG_INFO := hello$(EXE_SUFFIX):$(HELLO_APP)
|
|
endif
|
|
ifeq ($(TARGET_OS),mac)
|
|
# On macOS* the debug info is located in an external file
|
|
HELLO_APP_DBG_INFO := hello$(EXE_SUFFIX):$(HELLO_APP).dSYM/Contents/Resources/DWARF/hello$(EXE_SUFFIX)
|
|
endif
|
|
HELLO_APP_DWARF4 := $(TOOLS_ROOT)/Utils/$(OBJDIR)hello_dwarf4$(EXE_SUFFIX)
|
|
DISABLE_ASLR := $(TOOLS_ROOT)/Utils/$(OBJDIR)disable-aslr$(EXE_SUFFIX)
|
|
ATTACH_LAUNCHER := $(TOOLS_ROOT)/Utils/$(OBJDIR)attachLauncher$(EXE_SUFFIX)
|
|
THREAD_APP := $(TOOLS_ROOT)/Utils/$(OBJDIR)thread_app$(EXE_SUFFIX)
|
|
INSCOUNT_TOOL := $(TOOLS_ROOT)/ManualExamples/$(OBJDIR)inscount0$(PINTOOL_SUFFIX)
|
|
|
|
# Define the HW check utilities
|
|
CHECKAVX := $(TOOLS_ROOT)/Utils/$(OBJDIR)avx_check$(EXE_SUFFIX)
|
|
CHECKAVX2 := $(TOOLS_ROOT)/Utils/$(OBJDIR)avx2_check$(EXE_SUFFIX)
|
|
CHECKTSX := $(TOOLS_ROOT)/Utils/$(OBJDIR)tsx_check$(EXE_SUFFIX)
|
|
CHECKAVX512F := $(TOOLS_ROOT)/Utils/$(OBJDIR)avx512f_check$(EXE_SUFFIX)
|
|
|
|
# Define the thread utilities library
|
|
THREADLIB := $(TOOLS_ROOT)/Utils/$(OBJDIR)threadlib$(OBJ_SUFFIX)
|
|
|
|
# Define the regval utilities library
|
|
REGVALLIB := $(TOOLS_ROOT)/Utils/$(OBJDIR)regvallib$(LIB_SUFFIX)
|
|
|
|
# Define the runnable utilities library
|
|
RUNNABLE := $(TOOLS_ROOT)/Utils/$(OBJDIR)runnable$(OBJ_SUFFIX)
|
|
|
|
# Define the thread_pool utilities library
|
|
THREADPOOL := $(TOOLS_ROOT)/Utils/$(OBJDIR)thread_pool$(OBJ_SUFFIX)
|
|
|
|
# Define the sys_memory utilities library
|
|
SYSMEMORY := $(TOOLS_ROOT)/Utils/$(OBJDIR)sys_memory$(OBJ_SUFFIX)
|
|
|
|
# Define the controller utilities library
|
|
CONTROLLERLIB := $(TOOLS_ROOT)/InstLib/$(OBJDIR)controller$(LIB_SUFFIX)
|
|
|
|
# Common object files
|
|
SUPPORTS_AVX_OBJ := $(TOOLS_ROOT)/Utils/$(OBJDIR)supports_avx$(OBJ_SUFFIX)
|
|
SUPPORTS_AVX2_OBJ := $(TOOLS_ROOT)/Utils/$(OBJDIR)supports_avx2$(OBJ_SUFFIX)
|
|
SUPPORTS_AVX512F_OBJ := $(TOOLS_ROOT)/Utils/$(OBJDIR)supports_avx512f$(OBJ_SUFFIX)
|
|
SET_XMM_SCRATCHES_OBJ := $(TOOLS_ROOT)/Utils/$(OBJDIR)set_xmm_scratches_asm$(OBJ_SUFFIX)
|
|
|
|
# Python comparison script
|
|
PYCOMPARE := $(PYTHON) $(TOOLS_ROOT)/Utils/compare.py
|
|
|
|
##############################################################
|
|
#
|
|
# Default make target
|
|
#
|
|
##############################################################
|
|
|
|
# Build everything.
|
|
all: dir
|
|
$(MAKE) objects
|
|
$(MAKE) libs
|
|
$(MAKE) dlls
|
|
$(MAKE) apps
|
|
$(MAKE) tools
|
|
|
|
# Accelerate the make process and prevent errors.
|
|
.PHONY: all
|