blob: a3a02ed3c73c575e7ea03134ff3dc53f9fb14047 [file] [log] [blame]
# **********************************************************
# Copyright (c) 2010-2016 Google, Inc. All rights reserved.
# **********************************************************
# drutil: DynamoRIO Function Wrapping and Replacing Extension
# Derived from Dr. Memory: the memory debugger
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation;
# version 2.1 of the License, and no later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# Library General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
cmake_minimum_required(VERSION 3.7)
include(../../make/policies.cmake NO_POLICY_SCOPE)
# DynamoRIO Function Wrapping and Replacing Extension
# We do not need libc, and we avoid a 10x size increase in both our
# dll and pdb (plus we avoid stressing private library isolation) by
# not using it (i#714).
set(DynamoRIO_USE_LIBC OFF)
set(srcs
drutil.c
# add more here
)
# i#1491#2: VS generators fail if static lib has resources
set(srcs_static ${srcs})
if (WIN32)
set(srcs ${srcs} ${PROJECT_SOURCE_DIR}/core/win32/resources.rc)
endif ()
add_library(drutil SHARED ${srcs})
# while private loader means preferred base is not required, more efficient
# to avoid rebase so we avoid conflict w/ client and other exts
set(PREFERRED_BASE 0x75000000)
configure_extension(drutil OFF)
use_DynamoRIO_extension(drutil drmgr)
# Since LGPL, most users will want this as a shared library.
# A shared library is also required if multiple separate components all want to
# use this same extension.
# We do provide the static library for those who are ok w/ the license and who
# are building an end tool.
add_library(drutil_static STATIC ${srcs_static})
configure_extension(drutil_static ON)
use_DynamoRIO_extension(drutil_static drmgr_static)
install_ext_header(drutil.h)