56 lines
2.0 KiB
CMake
56 lines
2.0 KiB
CMake
if (NOT LIBDWARF)
|
|
add_subdirectory(libdwarf)
|
|
endif()
|
|
|
|
if (ENABLE_UTI)
|
|
if (${ARCH} STREQUAL "arm64")
|
|
set(SYSCALL_INTERCEPT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/syscall_intercept/arch/aarch64" CACHE STRING "relative path to syscalL_intercept source directory")
|
|
elseif (${ARCH} STREQUAL "x86_64")
|
|
set(SYSCALL_INTERCEPT_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/syscall_intercept" CACHE STRING "relative path to syscalL_intercept source directory")
|
|
endif()
|
|
|
|
|
|
# syscall_intercept
|
|
# change cmake options only in this directory
|
|
SET(CMAKE_BUILD_TYPE Release CACHE STRING "release build" FORCE)
|
|
SET(TREAT_WARNINGS_AS_ERRORS OFF CACHE BOOL "ignore warnings" FORCE)
|
|
add_subdirectory(${SYSCALL_INTERCEPT_SOURCE_DIR} syscall_intercept)
|
|
|
|
|
|
# libuti
|
|
find_path(LIBCAP_INCLUDE_DIRS
|
|
capability.h
|
|
PATHS /usr/include/sys
|
|
NO_DEFAULT_PATH)
|
|
|
|
find_library(LIBCAP_LIBRARIES
|
|
NAME cap
|
|
PATHS /usr/lib64
|
|
NO_DEFAULT_PATH)
|
|
|
|
if (NOT LIBCAP_INCLUDE_DIRS OR NOT LIBCAP_LIBRARIES)
|
|
message(FATAL_ERROR "error: couldn't find libcap")
|
|
endif()
|
|
|
|
include(ExternalProject)
|
|
ExternalProject_Add(libuti
|
|
SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/uti
|
|
BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/uti
|
|
CONFIGURE_COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/uti/configure --disable-static --with-rm=mckernel
|
|
BUILD_COMMAND ${MAKE}
|
|
BUILD_IN_SOURCE FALSE
|
|
INSTALL_COMMAND ""
|
|
)
|
|
|
|
# Install libuti.so.* into /usr/lib64/mck/ so that mcexec can
|
|
# redirect /usr/lib64/ to /usr/lib64/mck/. In this way, a.out created
|
|
# by Fujitsu MPICC and thus linked to /usr/lib64/libuti.so
|
|
# can be linked to /usr/lib64/mck/libuti.so when invoked via mcexec.
|
|
ExternalProject_Get_Property(libuti BINARY_DIR)
|
|
foreach(target IN ITEMS libuti.so.1.0.0 libuti.so.1 libuti.so)
|
|
add_custom_target(${target} ALL COMMAND bash -c "cp -P ${BINARY_DIR}/lib/.libs/${target} ${CMAKE_CURRENT_BINARY_DIR}")
|
|
add_dependencies(${target} libuti)
|
|
install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${target} DESTINATION "${LIBDIR}/mck")
|
|
endforeach()
|
|
endif()
|