Files
fail/cmake/gem5.cmake
Adrian Böckenkamp 6d8b3331d8 doxygen: doc generation fixed
Doxygen skips undesired directories and files now. In addition, the
documentation of the "fail" namespace has been fixed. Note that there
are still several warnings (due to incomplete documentations) in the
Doxygen output.

Change-Id: Idad4f1ecff453765b307fa40a5c1cebc0c2ce2bb
2013-05-29 13:34:12 +02:00

49 lines
1.9 KiB
CMake

#### gem5-specific stuff
if(BUILD_GEM5)
message(STATUS "[${PROJECT_NAME}] Building gem5 variant ...")
SET(VARIANT gem5)
set(gem5_src_dir ${PROJECT_SOURCE_DIR}/simulators/gem5)
set(gem5_wrapper ${PROJECT_SOURCE_DIR}/src/core/sal/gem5)
set(gem5_build_config build/ARM/gem5.debug)
set(core_count 9)
# FIXMEs:
# - incremental builds working?
# - dependency for modified .cc files not correctly checked
# - core_count should be derived from the parent make -jX parameter
# - make gem5_build_config configurable in CMake
# (alternative: gem5_build_config is set based on the CMake build
# config, e.g., "Debug" or "Release")
# - Ideally, there is no additional "gem5-clean" target. Instead,
# calling "make clean" should also invoke a clean command in the
# gem5 root dir. This seems easy for "make only" projects--things
# get shaky due to "scons".
# Enable ExternalProject CMake module
include(ExternalProject)
# Use cmake's external project feature to build gem5 (and link FailGem5)
ExternalProject_Add(
FailGem5_binary_external # the (unique) name of this custom target (= external project)
# Disable update, patch and configure step:
UPDATE_COMMAND ""
PATCH_COMMAND ""
CONFIGURE_COMMAND ""
SOURCE_DIR ${gem5_src_dir}
BINARY_DIR ${gem5_src_dir}
# Build gem5 using scons build system:
BUILD_COMMAND scons "CXX=${CMAKE_CXX_COMPILER} -p ${gem5_src_dir} --Xcompiler" EXTRAS=${gem5_wrapper} ${gem5_build_config} -j${core_count}
# Disable install step (for now)
INSTALL_COMMAND ""
)
add_custom_target(gem5-allclean
COMMAND @echo "Cleaning Fail* and gem5 ..."
COMMAND cd "${PROJECT_BINARY_DIR}/" && make clean
COMMAND cd "${gem5_src_dir}/" && scons -c build/ARM
)
# Build "fail" library first (will be statically linked to gem5)
add_dependencies(FailGem5_binary_external fail)
endif(BUILD_GEM5)