This repository has been archived by the owner on Aug 23, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 343
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Update to latest remill APIs and way of using CMake. * Minor fixes * Bug fixes for AArch64 * Tweaks * Adds some nifty functionality useful for debugging some aarch64 bugs * Fixes a subtle bug * Bug fixes * Make the test suite use explicit args * Bug fix in xrefs * Disable tests for now
- Loading branch information
Showing
28 changed files
with
440 additions
and
246 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,173 @@ | ||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying | ||
# file Copyright.txt or https://cmake.org/licensing for details. | ||
|
||
set(LIBRARY_ROOT "${CXX_COMMON_REPOSITORY_ROOT}/protobuf") | ||
|
||
set(Protobuf_FOUND TRUE) | ||
set(Protobuf_INCLUDE_DIR "${LIBRARY_ROOT}/include") | ||
|
||
if (WIN32) | ||
set(Protobuf_PROTOC_EXECUTABLE "${LIBRARY_ROOT}/bin/protoc.exe") | ||
set(Protobuf_LIBRARIES ${LIBRARY_ROOT}/lib/protobuf.lib) | ||
set(Protobuf_PROTOC_LIBRARIES ${LIBRARY_ROOT}/lib/protoc.lib) | ||
else () | ||
set(Protobuf_PROTOC_EXECUTABLE "${LIBRARY_ROOT}/bin/protoc") | ||
set(Protobuf_LIBRARIES ${LIBRARY_ROOT}/lib/libprotobuf.a) | ||
set(Protobuf_PROTOC_LIBRARIES ${LIBRARY_ROOT}/lib/libprotoc.a) | ||
endif () | ||
|
||
mark_as_advanced(FORCE Protobuf_FOUND) | ||
mark_as_advanced(FORCE Protobuf_INCLUDE_DIR) | ||
mark_as_advanced(FORCE Protobuf_PROTOC_EXECUTABLE) | ||
mark_as_advanced(FORCE Protobuf_LIBRARIES) | ||
mark_as_advanced(FORCE Protobuf_PROTOC_LIBRARIES) | ||
|
||
# Backwards compatibility | ||
# Define camel case versions of input variables | ||
foreach(UPPER | ||
PROTOBUF_SRC_ROOT_FOLDER | ||
PROTOBUF_IMPORT_DIRS | ||
PROTOBUF_DEBUG | ||
PROTOBUF_LIBRARY | ||
PROTOBUF_PROTOC_LIBRARY | ||
PROTOBUF_INCLUDE_DIR | ||
PROTOBUF_PROTOC_EXECUTABLE | ||
PROTOBUF_LIBRARY_DEBUG | ||
PROTOBUF_PROTOC_LIBRARY_DEBUG | ||
PROTOBUF_LITE_LIBRARY | ||
PROTOBUF_LITE_LIBRARY_DEBUG | ||
) | ||
if (DEFINED ${UPPER}) | ||
string(REPLACE "PROTOBUF_" "Protobuf_" Camel ${UPPER}) | ||
if (NOT DEFINED ${Camel}) | ||
set(${Camel} ${${UPPER}}) | ||
endif() | ||
endif() | ||
endforeach() | ||
|
||
# By default have PROTOBUF_GENERATE_CPP macro pass -I to protoc | ||
# for each directory where a proto file is referenced. | ||
if(NOT DEFINED PROTOBUF_GENERATE_CPP_APPEND_PATH) | ||
set(PROTOBUF_GENERATE_CPP_APPEND_PATH TRUE) | ||
endif() | ||
|
||
function(PROTOBUF_GENERATE_CPP SRCS HDRS) | ||
if(NOT ARGN) | ||
message(SEND_ERROR "Error: PROTOBUF_GENERATE_CPP() called without any proto files") | ||
return() | ||
endif() | ||
|
||
if(PROTOBUF_GENERATE_CPP_APPEND_PATH) | ||
# Create an include path for each file specified | ||
foreach(FIL ${ARGN}) | ||
get_filename_component(ABS_FIL ${FIL} ABSOLUTE) | ||
get_filename_component(ABS_PATH ${ABS_FIL} PATH) | ||
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) | ||
if(${_contains_already} EQUAL -1) | ||
list(APPEND _protobuf_include_path -I ${ABS_PATH}) | ||
endif() | ||
endforeach() | ||
else() | ||
set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR}) | ||
endif() | ||
|
||
if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS) | ||
set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}") | ||
endif() | ||
|
||
if(DEFINED Protobuf_IMPORT_DIRS) | ||
foreach(DIR ${Protobuf_IMPORT_DIRS}) | ||
get_filename_component(ABS_PATH ${DIR} ABSOLUTE) | ||
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) | ||
if(${_contains_already} EQUAL -1) | ||
list(APPEND _protobuf_include_path -I ${ABS_PATH}) | ||
endif() | ||
endforeach() | ||
endif() | ||
|
||
set(${SRCS}) | ||
set(${HDRS}) | ||
foreach(FIL ${ARGN}) | ||
get_filename_component(ABS_FIL ${FIL} ABSOLUTE) | ||
get_filename_component(FIL_WE ${FIL} NAME_WE) | ||
if(NOT PROTOBUF_GENERATE_CPP_APPEND_PATH) | ||
get_filename_component(FIL_DIR ${FIL} DIRECTORY) | ||
if(FIL_DIR) | ||
set(FIL_WE "${FIL_DIR}/${FIL_WE}") | ||
endif() | ||
endif() | ||
|
||
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc") | ||
list(APPEND ${HDRS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h") | ||
|
||
add_custom_command( | ||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.cc" | ||
"${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}.pb.h" | ||
COMMAND ${Protobuf_PROTOC_EXECUTABLE} | ||
ARGS --cpp_out ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL} | ||
DEPENDS ${ABS_FIL} ${Protobuf_PROTOC_EXECUTABLE} | ||
COMMENT "Running C++ protocol buffer compiler on ${FIL}" | ||
VERBATIM ) | ||
endforeach() | ||
|
||
set_source_files_properties(${${SRCS}} ${${HDRS}} PROPERTIES GENERATED TRUE) | ||
set(${SRCS} ${${SRCS}} PARENT_SCOPE) | ||
set(${HDRS} ${${HDRS}} PARENT_SCOPE) | ||
endfunction() | ||
|
||
function(PROTOBUF_GENERATE_PYTHON SRCS) | ||
if(NOT ARGN) | ||
message(SEND_ERROR "Error: PROTOBUF_GENERATE_PYTHON() called without any proto files") | ||
return() | ||
endif() | ||
|
||
if(PROTOBUF_GENERATE_CPP_APPEND_PATH) | ||
# Create an include path for each file specified | ||
foreach(FIL ${ARGN}) | ||
get_filename_component(ABS_FIL ${FIL} ABSOLUTE) | ||
get_filename_component(ABS_PATH ${ABS_FIL} PATH) | ||
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) | ||
if(${_contains_already} EQUAL -1) | ||
list(APPEND _protobuf_include_path -I ${ABS_PATH}) | ||
endif() | ||
endforeach() | ||
else() | ||
set(_protobuf_include_path -I ${CMAKE_CURRENT_SOURCE_DIR}) | ||
endif() | ||
|
||
if(DEFINED PROTOBUF_IMPORT_DIRS AND NOT DEFINED Protobuf_IMPORT_DIRS) | ||
set(Protobuf_IMPORT_DIRS "${PROTOBUF_IMPORT_DIRS}") | ||
endif() | ||
|
||
if(DEFINED Protobuf_IMPORT_DIRS) | ||
foreach(DIR ${Protobuf_IMPORT_DIRS}) | ||
get_filename_component(ABS_PATH ${DIR} ABSOLUTE) | ||
list(FIND _protobuf_include_path ${ABS_PATH} _contains_already) | ||
if(${_contains_already} EQUAL -1) | ||
list(APPEND _protobuf_include_path -I ${ABS_PATH}) | ||
endif() | ||
endforeach() | ||
endif() | ||
|
||
set(${SRCS}) | ||
foreach(FIL ${ARGN}) | ||
get_filename_component(ABS_FIL ${FIL} ABSOLUTE) | ||
get_filename_component(FIL_WE ${FIL} NAME_WE) | ||
if(NOT PROTOBUF_GENERATE_CPP_APPEND_PATH) | ||
get_filename_component(FIL_DIR ${FIL} DIRECTORY) | ||
if(FIL_DIR) | ||
set(FIL_WE "${FIL_DIR}/${FIL_WE}") | ||
endif() | ||
endif() | ||
|
||
list(APPEND ${SRCS} "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py") | ||
add_custom_command( | ||
OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${FIL_WE}_pb2.py" | ||
COMMAND ${Protobuf_PROTOC_EXECUTABLE} --python_out ${CMAKE_CURRENT_BINARY_DIR} ${_protobuf_include_path} ${ABS_FIL} | ||
DEPENDS ${ABS_FIL} ${Protobuf_PROTOC_EXECUTABLE} | ||
COMMENT "Running Python protocol buffer compiler on ${FIL}" | ||
VERBATIM ) | ||
endforeach() | ||
|
||
set(${SRCS} ${${SRCS}} PARENT_SCOPE) | ||
endfunction() |
Oops, something went wrong.