@@ -9,77 +9,86 @@ set(binsrc CollectIR.cpp IR2Vec.cpp)
99file (GLOB RESOURCE_FILES ../vocabulary/seedEmbeddingVocab.txt)
1010
1111option (LLVM_IR2VEC "where to enable IR2Vec as subproject for LLVM" OFF )
12+
1213if (NOT LLVM_IR2VEC)
13- set (LT_LLVM_INSTALL_DIR "" CACHE PATH "LLVM installation directory" )
14- list (APPEND CMAKE_PREFIX_PATH "${LT_LLVM_INSTALL_DIR} /lib/cmake/llvm/" )
15-
16- find_package (LLVM 17.0.0 REQUIRED CONFIG)
17- message (STATUS "Found LLVM ${LLVM_PACKAGE_VERSION} " )
18- message (STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR} " )
19-
20- include_directories (SYSTEM ${LLVM_INCLUDE_DIRS} )
21- # llvm_map_components_to_libnames(llvm_libs all)
22- llvm_map_components_to_libnames(llvm_libs support core irreader analysis TransformUtils)
23-
24- add_executable (${PROJECT_NAME} ${binsrc} )
25- target_link_libraries (${PROJECT_NAME} ${llvm_libs} objlib)
26- target_include_directories (${PROJECT_NAME} PRIVATE .)
27-
28- add_library (objlib OBJECT ${libsrc} )
29- set_property (TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
30- target_link_libraries (objlib Eigen3::Eigen)
31-
32- add_library (${IR2VEC_LIB} SHARED $<TARGET_OBJECTS:objlib>)
33- add_library (${IR2VEC_LIB_STATIC} STATIC $<TARGET_OBJECTS:objlib>)
34- set_target_properties (${IR2VEC_LIB} ${IR2VEC_LIB_STATIC} PROPERTIES
35- VERSION ${PROJECT_VERSION}
36- SOVERSION 1
37- PUBLIC_HEADER "./include/IR2Vec.h"
38- RESOURCE ${RESOURCE_FILES}
39- OUTPUT_NAME ${IR2VEC_LIB}
40- LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
41- ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
42- )
43-
44- install (TARGETS ${IR2VEC_LIB} ${IR2VEC_LIB_STATIC}
45- LIBRARY DESTINATION lib
46- PUBLIC_HEADER DESTINATION include
47- RESOURCE DESTINATION ./)
48-
49- add_subdirectory (test -suite)
50-
51- add_custom_target (verify-symbolic
52- COMMAND bash ./sanity_check.sh SYM llvm17
53- COMMENT "Generating Symbolic IR2Vec vectors and comparing with oracle..."
54- WORKING_DIRECTORY ./test -suite
55- DEPENDS ${PROJECT_NAME}
56- VERBATIM
57- )
58-
59- add_custom_target (verify-flowaware
60- COMMAND bash sanity_check.sh FA llvm17
61- COMMENT "Generating Flow-Aware IR2Vec vectors and comparing with oracle..."
62- WORKING_DIRECTORY ./test -suite
63- DEPENDS ${PROJECT_NAME}
64- VERBATIM
65- )
66-
67- add_custom_target (verify-all DEPENDS verify-symbolic verify-flowaware)
14+
15+ set (LT_LLVM_INSTALL_DIR "" CACHE PATH "LLVM installation directory" )
16+ list (APPEND CMAKE_PREFIX_PATH "${LT_LLVM_INSTALL_DIR} /lib/cmake/llvm/" )
17+
18+ find_package (LLVM 17.0.0 REQUIRED CONFIG)
19+ message (STATUS "Found LLVM ${LLVM_PACKAGE_VERSION} " )
20+ message (STATUS "Using LLVMConfig.cmake in: ${LLVM_DIR} " )
21+
22+ include_directories (SYSTEM ${LLVM_INCLUDE_DIRS} )
23+ # llvm_map_components_to_libnames(llvm_libs all)
24+ llvm_map_components_to_libnames(llvm_libs support core irreader analysis TransformUtils)
25+
26+ add_executable (${PROJECT_NAME} ${binsrc} )
27+ target_link_libraries (${PROJECT_NAME} ${llvm_libs} objlib)
28+ target_include_directories (${PROJECT_NAME} PRIVATE .)
29+
30+ add_library (objlib OBJECT ${libsrc} )
31+ set_property (TARGET objlib PROPERTY POSITION_INDEPENDENT_CODE 1)
32+ target_link_libraries (objlib Eigen3::Eigen)
33+
34+ add_library (${IR2VEC_LIB} SHARED $<TARGET_OBJECTS:objlib>)
35+ add_library (${IR2VEC_LIB_STATIC} STATIC $<TARGET_OBJECTS:objlib>)
36+ set_target_properties (${IR2VEC_LIB} ${IR2VEC_LIB_STATIC} PROPERTIES
37+ VERSION ${PROJECT_VERSION}
38+ SOVERSION 1
39+ PUBLIC_HEADER "./include/IR2Vec.h"
40+ RESOURCE ${RESOURCE_FILES}
41+ OUTPUT_NAME ${IR2VEC_LIB}
42+ LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
43+ ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR} /lib
44+ )
45+
46+ install (TARGETS ${IR2VEC_LIB} ${IR2VEC_LIB_STATIC}
47+ LIBRARY DESTINATION lib
48+ PUBLIC_HEADER DESTINATION include
49+ RESOURCE DESTINATION ./)
50+
51+ add_subdirectory (test -suite)
52+
53+ add_custom_target (verify-symbolic
54+ COMMAND bash ./sanity_check.sh SYM llvm17
55+ COMMENT "Generating Symbolic IR2Vec vectors and comparing with oracle..."
56+ WORKING_DIRECTORY ./test -suite
57+ DEPENDS ${PROJECT_NAME}
58+ VERBATIM
59+ )
60+
61+ add_custom_target (verify-flowaware
62+ COMMAND bash sanity_check.sh FA llvm17
63+ COMMENT "Generating Flow-Aware IR2Vec vectors and comparing with oracle..."
64+ WORKING_DIRECTORY ./test -suite
65+ DEPENDS ${PROJECT_NAME}
66+ VERBATIM
67+ )
68+
69+ add_custom_target (verify-all
70+ COMMAND bash sanity_check.sh FA llvm17 && bash sanity_check.sh SYM llvm17
71+ COMMENT "Generating both Symbolic and Flow-Aware IR2Vec vectors and comparing with oracle..."
72+ WORKING_DIRECTORY ./test -suite
73+ DEPENDS ${PROJECT_NAME}
74+ VERBATIM
75+ )
76+
6877else ()
6978
70- file (COPY ${CMAKE_CURRENT_SOURCE_DIR} /include /IR2Vec.h DESTINATION ${LLVM_MAIN_INCLUDE_DIR} /llvm )
79+ file (COPY ${CMAKE_CURRENT_SOURCE_DIR} /include /IR2Vec.h DESTINATION ${LLVM_MAIN_INCLUDE_DIR} /llvm )
7180
72- set (LLVM_OPTIONAL_SOURCES ${binsrc} )
81+ set (LLVM_OPTIONAL_SOURCES ${binsrc} )
7382
74- add_llvm_library(LLVMIR2Vec
75- ${libsrc}
83+ add_llvm_library(LLVMIR2Vec
84+ ${libsrc}
7685
77- DEPENDS
78- intrinsics_gen
79- )
86+ DEPENDS
87+ intrinsics_gen
88+ )
8089
81- target_link_libraries (LLVMIR2Vec PRIVATE Eigen3::Eigen)
82- target_include_directories (LLVMIR2Vec PRIVATE ${LLVM_MAIN_INCLUDE_DIR} )
83- target_include_directories (LLVMIR2Vec PRIVATE .)
90+ target_link_libraries (LLVMIR2Vec PRIVATE Eigen3::Eigen)
91+ target_include_directories (LLVMIR2Vec PRIVATE ${LLVM_MAIN_INCLUDE_DIR} )
92+ target_include_directories (LLVMIR2Vec PRIVATE .)
8493
8594endif ()
0 commit comments