From 2ae1be726a9a1586eb96b981d30b51b5f6299164 Mon Sep 17 00:00:00 2001 From: Francis Visoiu Mistrih Date: Mon, 5 Nov 2018 11:57:44 +0000 Subject: [PATCH] [CMake] Expose opt-remark tooling through libOptRemarks.dylib * Create an install target for it * Add it under tools/opt-remarks * Add an export file for the dylib * Install the llvm-c/OptRemarks.h header * Add an API to query its version rdar://45458839 llvm-svn: 346127 --- llvm/cmake/modules/AddLLVM.cmake | 1 + llvm/include/llvm-c/OptRemarks.h | 7 +++++++ llvm/tools/opt-remarks/CMakeLists.txt | 22 ++++++++++++++++++++++ llvm/tools/opt-remarks/OptRemarks.exports | 6 ++++++ llvm/tools/opt-remarks/liboptremarks.cpp | 18 ++++++++++++++++++ 5 files changed, 54 insertions(+) create mode 100644 llvm/tools/opt-remarks/CMakeLists.txt create mode 100644 llvm/tools/opt-remarks/OptRemarks.exports create mode 100644 llvm/tools/opt-remarks/liboptremarks.cpp diff --git a/llvm/cmake/modules/AddLLVM.cmake b/llvm/cmake/modules/AddLLVM.cmake index 410308d46d62..189971655583 100644 --- a/llvm/cmake/modules/AddLLVM.cmake +++ b/llvm/cmake/modules/AddLLVM.cmake @@ -635,6 +635,7 @@ macro(add_llvm_library name) set_property(GLOBAL APPEND PROPERTY LLVM_EXPORTS_BUILDTREE_ONLY ${name}) else() if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY OR ${name} STREQUAL "LTO" OR + ${name} STREQUAL "OptRemarks" OR (LLVM_LINK_LLVM_DYLIB AND ${name} STREQUAL "LLVM")) set(install_dir lib${LLVM_LIBDIR_SUFFIX}) if(ARG_SHARED OR BUILD_SHARED_LIBS) diff --git a/llvm/include/llvm-c/OptRemarks.h b/llvm/include/llvm-c/OptRemarks.h index f3449cc1b8c9..6a90394e711c 100644 --- a/llvm/include/llvm-c/OptRemarks.h +++ b/llvm/include/llvm-c/OptRemarks.h @@ -186,6 +186,13 @@ LLVMOptRemarkParserGetErrorMessage(LLVMOptRemarkParserRef Parser); */ extern void LLVMOptRemarkParserDispose(LLVMOptRemarkParserRef Parser); +/** + * Returns the version of the opt-remarks dylib. + * + * \since OPT_REMARKS_API_VERSION=0 + */ +extern uint32_t LLVMOptRemarkVersion(void); + /** * @} // endgoup LLVMCOPTREMARKS */ diff --git a/llvm/tools/opt-remarks/CMakeLists.txt b/llvm/tools/opt-remarks/CMakeLists.txt new file mode 100644 index 000000000000..a87beae1e893 --- /dev/null +++ b/llvm/tools/opt-remarks/CMakeLists.txt @@ -0,0 +1,22 @@ +set(LLVM_LINK_COMPONENTS + OptRemarks + ) + +set(SOURCES + liboptremarks.cpp + ) + +set(LLVM_EXPORTED_SYMBOL_FILE ${CMAKE_CURRENT_SOURCE_DIR}/OptRemarks.exports) + +add_llvm_library(OptRemarks SHARED ${SOURCES}) + +install(FILES ${LLVM_MAIN_INCLUDE_DIR}/llvm-c/OptRemarks.h + DESTINATION include/llvm-c + COMPONENT OptRemarks) + +if (APPLE) + set(OPTREMARKS_VERSION ${LLVM_VERSION_MAJOR}) + set_property(TARGET OptRemarks APPEND_STRING PROPERTY + LINK_FLAGS + " -compatibility_version 1 -current_version ${OPTREMARKS_VERSION}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}") +endif() diff --git a/llvm/tools/opt-remarks/OptRemarks.exports b/llvm/tools/opt-remarks/OptRemarks.exports new file mode 100644 index 000000000000..c3f678d754fc --- /dev/null +++ b/llvm/tools/opt-remarks/OptRemarks.exports @@ -0,0 +1,6 @@ +LLVMOptRemarkParserCreate +LLVMOptRemarkParserGetNext +LLVMOptRemarkParserHasError +LLVMOptRemarkParserGetErrorMessage +LLVMOptRemarkParserDispose +LLVMOptRemarkVersion diff --git a/llvm/tools/opt-remarks/liboptremarks.cpp b/llvm/tools/opt-remarks/liboptremarks.cpp new file mode 100644 index 000000000000..13acada06ac2 --- /dev/null +++ b/llvm/tools/opt-remarks/liboptremarks.cpp @@ -0,0 +1,18 @@ +//===-liboptremarks.cpp - LLVM Opt-Remarks Shared Library -----------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// +// +// Provide a library to work with optimization remarks. +// +//===----------------------------------------------------------------------===// + +#include "llvm-c/OptRemarks.h" + +extern uint32_t LLVMOptRemarkVersion(void) { + return OPT_REMARKS_API_VERSION; +}