1313# You should have received a copy of the GNU Affero General Public License
1414# along with this program. If not, see <http://www.gnu.org/licenses/>.
1515
16- if (NOT DEFINED ENV{TRAILOFBITS_LIBRARIES})
17- message (STATUS "Using new vcpkg build system" )
18- include (CMakeLists_vcpkg.txt)
19- return ()
20- endif ()
16+ # Find remill first because its config has useful dependency-finding info that
17+ # needs to be found before the CMake `project` declaration
18+ find_package (remill COMPONENTS VCPKG_DEPS QUIET )
2119
22- project (mcsema)
23- cmake_minimum_required (VERSION 3.14)
20+ include (cmake/vcpkg_helper.cmake)
2421
25- # remill
26- if ( " ${PLATFORM_NAME} " STREQUAL "windows" )
27- set (REMILL_FINDPACKAGE_HINTS HINTS " ${CMAKE_INSTALL_PREFIX} /remill/lib" )
28- endif ( )
22+ project (mcsema C CXX ASM)
23+
24+ include (GNUInstallDirs )
25+ cmake_minimum_required ( VERSION 3.14 )
2926
30- find_package (remill REQUIRED ${REMILL_FINDPACKAGE_HINTS} )
3127
3228include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/settings.cmake" )
3329include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/utils.cmake" )
3430include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/BCCompiler.cmake" )
3531include ("${CMAKE_CURRENT_SOURCE_DIR} /cmake/ccache.cmake" )
36- list (APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR} /cmake/modules" )
3732
3833configureCcache()
3934FindAndSelectClangCompiler()
@@ -54,17 +49,23 @@ if(NOT DEFINED WIN32)
5449 set (PROJECT_CXXFLAGS
5550 ${GLOBAL_CXXFLAGS}
5651 -Wconversion
57- -pedantic
58- -Wno-unreachable-code-return
52+ -pedantic
53+ -Wno-unreachable-code-return
5954 )
6055endif ()
6156
6257#
6358# libraries
6459#
6560
61+ find_package (remill CONFIG REQUIRED)
62+ list (APPEND PROJECT_LIBRARIES remill_settings remill)
63+ get_target_property (REMILL_INCLUDE_LOCATION remill_settings INTERFACE_INCLUDE_DIRECTORIES )
64+
6665# protobuf
67- find_package (Protobuf REQUIRED)
66+ # Compatibility since we use older protobuf CMake functions
67+ set (protobuf_MODULE_COMPATIBLE ON CACHE BOOL "" FORCE)
68+ find_package (Protobuf CONFIG REQUIRED)
6869list (APPEND PROJECT_LIBRARIES ${Protobuf_LIBRARIES} )
6970list (APPEND PROJECT_INCLUDEDIRECTORIES ${Protobuf_INCLUDE_DIR} )
7071list (APPEND PROJECT_DEFINITIONS "GOOGLE_PROTOBUF_NO_RTTI" )
@@ -140,32 +141,15 @@ add_custom_command(
140141list (APPEND PROJECT_INCLUDEDIRECTORIES ${CMAKE_CURRENT_SOURCE_DIR} )
141142
142143add_dependencies (${MCSEMA_LIFT}
143- semantics
144144 protobuf_python_module_ida)
145145
146146#
147147# libraries
148148#
149149
150- # remill
151- if (NOT TARGET remill)
152- if ("${PLATFORM_NAME} " STREQUAL "windows" )
153- set (REMILL_FINDPACKAGE_HINTS HINTS "${CMAKE_INSTALL_PREFIX} /remill/lib" )
154- endif ()
155-
156- find_package (remill REQUIRED ${REMILL_FINDPACKAGE_HINTS} )
157- endif ()
158-
159- list (APPEND PROJECT_LIBRARIES remill)
160-
161150# anvill
162- if (NOT TARGET anvill-${REMILL_LLVM_VERSION} )
163- find_package (anvill REQUIRED)
164- if (NOT anvill_FOUND)
165- message (FATAL_ERROR "McSema depends upon Anvill being installed" )
166- endif ()
167- endif ()
168- list (APPEND PROJECT_LIBRARIES anvill-${REMILL_LLVM_VERSION} )
151+ find_package (anvill CONFIG REQUIRED)
152+ list (APPEND PROJECT_LIBRARIES anvill)
169153
170154# mcsema-disass
171155
@@ -191,7 +175,7 @@ set(MCSEMA_PYTHON_SOURCES
191175if (MCSEMA_INSTALL_PYTHON3_LIBS)
192176 add_custom_target (build_mcsema_disass_python3
193177 DEPENDS ${MCSEMA_PYTHON_SOURCES} )
194-
178+
195179 add_custom_command (
196180 TARGET build_mcsema_disass_python3 POST_BUILD
197181 COMMAND which python3 && python3 setup.py build --force
0 commit comments