add_definitions(-D__STDC_CONSTANT_MACROS) add_definitions(-D__STDC_LIMIT_MACROS) find_program(CLANG-FORMAT NAMES clang-format clang-format-mp-14 clang-format-14) set(LLVM_LINK_COMPONENTS irreader bitwriter analysis ipo scalaropts instrumentation core codegen objcarcopts) add_llvm_executable(seadsa DISABLE_LLVM_LINK_LLVM_DYLIB seadsa.cc) add_executable(libcSpecGen libcSpecGen.cc) target_link_libraries (seadsa PRIVATE SeaDsaAnalysis) add_custom_target(sea-dsa-tool DEPENDS seadsa) if (TOP_LEVEL OR TARGET sea-dsa-tool) install(TARGETS seadsa RUNTIME DESTINATION bin) endif() if (SEA_DSA_STATIC_EXE) set (CMAKE_EXE_LINKER_FLAGS "-static -static-libgcc -static-libstdc++") set_target_properties (seadsa PROPERTIES LINK_SEARCH_START_STATIC ON) set_target_properties (seadsa PROPERTIES LINK_SEARCH_END_STATIC ON) endif() if (CMAKE_C_COMPILER_ID MATCHES Clang) # In llvm 10, clang-format is not installed when clang is installed # via apt. if (CLANG-FORMAT) message(STATUS "Found clang-format: ${CLANG-FORMAT}") add_custom_command( OUTPUT libc.spec.c COMMAND libcSpecGen COMMAND ${CLANG-FORMAT} -i libc.spec.c DEPENDS libcSpecGen ) else() message(WARNING "Cannot find clang-format") add_custom_command( OUTPUT libc.spec.c COMMAND libcSpecGen DEPENDS libcSpecGen ) endif() add_library(LibcSpec-64 OBJECT libc.spec.c) target_compile_options(LibcSpec-64 BEFORE PRIVATE -emit-llvm) install(FILES $ DESTINATION lib RENAME libc-64.spec.bc ) option(SEAHORN_BUILD_32_BIT_SPEC "Build 32bit library specs" OFF) if(SEAHORN_BUILD_32_BIT_SPEC) add_executable(LibcSpec-32 OBJECT libc.spec.c) target_compile_options(LibcSpec-32 BEFORE PRIVATE -m32 -emit-llvm) install(FILES $ DESTINATION lib RENAME libc-32.spec.bc ) endif() else() message(WARNING "Unable to build sea-dsa spec files using current compiler!\n\ \t Set C compiler to clang using -DCMAKE_C_COMPILER=clang\n\ \t Current C compiler is: ${CMAKE_C_COMPILER_ID}") endif()