mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-06 10:26:29 +08:00
ocloc package with ocloc binary, ocloc library, and ocloc library header
Change-Id: I252ecdf9cff1ca20e39b2b4b5675410ac51ed38a
This commit is contained in:
committed by
sys_ocldev
parent
997dcd607f
commit
caee16d968
@@ -4,7 +4,10 @@
|
||||
# SPDX-License-Identifier: MIT
|
||||
#
|
||||
|
||||
project(ocloc_lib)
|
||||
project(${OCLOC_NAME}_lib)
|
||||
|
||||
set(OCLOC_NAME "ocloc")
|
||||
set(OCLOC_FOLDER_NAME "offline_compiler")
|
||||
|
||||
set(CLOC_LIB_SRCS_LIB
|
||||
${NEO_SHARED_DIRECTORY}/device_binary_format/ar/ar.h
|
||||
@@ -108,34 +111,12 @@ set(CLOC_LIB_SRCS
|
||||
${CLOC_LIB_SRCS_LIB}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt
|
||||
)
|
||||
add_library(ocloc_lib SHARED ${CLOC_LIB_SRCS})
|
||||
|
||||
set(CLOC_SRCS
|
||||
${NEO_SHARED_DIRECTORY}/os_interface/os_library.h
|
||||
${OCLOC_DIRECTORY}/source/ocloc_wrapper.h
|
||||
${OCLOC_DIRECTORY}/source/ocloc_wrapper.cpp
|
||||
${OCLOC_DIRECTORY}/source/utilities/get_path.h
|
||||
)
|
||||
if(WIN32)
|
||||
list(APPEND CLOC_SRCS
|
||||
${NEO_SHARED_DIRECTORY}/os_interface/windows/os_library_win.cpp
|
||||
${NEO_SHARED_DIRECTORY}/os_interface/windows/os_library_win.h
|
||||
${OCLOC_DIRECTORY}/source/utilities/windows/get_path.cpp
|
||||
|
||||
)
|
||||
else()
|
||||
list(APPEND CLOC_SRCS
|
||||
${NEO_SHARED_DIRECTORY}/os_interface/linux/os_library_linux.cpp
|
||||
${NEO_SHARED_DIRECTORY}/os_interface/linux/os_library_linux.h
|
||||
${OCLOC_DIRECTORY}/source/utilities/linux/get_path.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
add_executable(ocloc ${CLOC_SRCS} ${OCLOC_DIRECTORY}/source/main.cpp ${CLOC_LIB_SRCS})
|
||||
add_library(${OCLOC_NAME}_lib SHARED ${CLOC_LIB_SRCS})
|
||||
|
||||
add_subdirectories()
|
||||
|
||||
create_project_source_tree(ocloc_lib)
|
||||
create_project_source_tree(${OCLOC_NAME}_lib)
|
||||
set_target_properties(${OCLOC_NAME}_lib PROPERTIES FOLDER ${OCLOC_FOLDER_NAME})
|
||||
|
||||
set(CLOC_LIB_INCLUDES
|
||||
${ENGINE_NODE_DIR}
|
||||
@@ -146,72 +127,79 @@ set(CLOC_LIB_INCLUDES
|
||||
${NEO__IGC_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
target_include_directories(ocloc_lib BEFORE PRIVATE ${CLOC_LIB_INCLUDES})
|
||||
target_include_directories(ocloc_lib BEFORE PRIVATE ${IGA_INCLUDE_DIR})
|
||||
target_include_directories(${OCLOC_NAME}_lib BEFORE PRIVATE ${CLOC_LIB_INCLUDES})
|
||||
target_include_directories(${OCLOC_NAME}_lib BEFORE PRIVATE ${IGA_INCLUDE_DIR})
|
||||
|
||||
target_compile_definitions(ocloc_lib PUBLIC ${CLOC_LIB_LIB_FLAGS_DEFINITIONS} ${SUPPORTED_GEN_FLAGS_DEFINITONS} DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM}
|
||||
target_compile_definitions(${OCLOC_NAME}_lib PUBLIC ${CLOC_LIB_LIB_FLAGS_DEFINITIONS} ${SUPPORTED_GEN_FLAGS_DEFINITONS} DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM}
|
||||
IGA_LIBRARY_NAME=${CMAKE_SHARED_LIBRARY_PREFIX}${IGA_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX})
|
||||
target_compile_definitions(ocloc_lib PUBLIC ${NEO__IGC_COMPILE_DEFINITIONS})
|
||||
target_compile_definitions(${OCLOC_NAME}_lib PUBLIC ${NEO__IGC_COMPILE_DEFINITIONS})
|
||||
|
||||
if(MSVC)
|
||||
target_link_libraries(ocloc_lib dbghelp)
|
||||
target_link_libraries(ocloc dbghelp)
|
||||
target_link_libraries(${OCLOC_NAME}_lib dbghelp)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
target_link_libraries(ocloc_lib dl pthread)
|
||||
target_link_libraries(ocloc dl pthread)
|
||||
target_link_libraries(${OCLOC_NAME}_lib dl pthread)
|
||||
endif()
|
||||
|
||||
set(CLOC_LIB_SRCS_LIB ${CLOC_LIB_SRCS_LIB} PARENT_SCOPE)
|
||||
|
||||
add_dependencies(ocloc ocloc_lib)
|
||||
set(OCLOC_SRCS
|
||||
${OCLOC_DIRECTORY}/source/ocloc_api.h
|
||||
${OCLOC_DIRECTORY}/source/main.cpp
|
||||
)
|
||||
|
||||
target_include_directories(ocloc BEFORE PRIVATE ${CLOC_LIB_INCLUDES})
|
||||
target_include_directories(ocloc BEFORE PRIVATE ${IGA_INCLUDE_DIR})
|
||||
add_executable(${OCLOC_NAME} ${OCLOC_SRCS})
|
||||
target_link_libraries(${OCLOC_NAME} ${OCLOC_NAME}_lib)
|
||||
|
||||
target_compile_definitions(ocloc PUBLIC ${CLOC_LIB_LIB_FLAGS_DEFINITIONS} ${SUPPORTED_GEN_FLAGS_DEFINITONS} DEFAULT_PLATFORM=${DEFAULT_SUPPORTED_PLATFORM}
|
||||
IGA_LIBRARY_NAME=${CMAKE_SHARED_LIBRARY_PREFIX}${IGA_LIBRARY_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX} MOCKABLE_VIRTUAL=)
|
||||
target_compile_definitions(ocloc PRIVATE ${NEO__IGC_COMPILE_DEFINITIONS})
|
||||
create_project_source_tree(${OCLOC_NAME})
|
||||
set_target_properties(${OCLOC_NAME} PROPERTIES FOLDER ${OCLOC_FOLDER_NAME})
|
||||
|
||||
set(OCLOC_LIB_NAME "ocloc")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(OCLOC_BITNESS_SUFFIX 32)
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(OCLOC_BITNESS_SUFFIX 64)
|
||||
if(MSVC)
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 4)
|
||||
set(OCLOC_BITNESS_SUFFIX 32)
|
||||
elseif(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(OCLOC_BITNESS_SUFFIX 64)
|
||||
endif()
|
||||
else()
|
||||
set(OCLOC_BITNESS_SUFFIX "")
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
install(FILES $<TARGET_FILE:ocloc>
|
||||
set_property(GLOBAL APPEND PROPERTY NEO_OCL_COMPONENTS_LIST ${OCLOC_NAME})
|
||||
install(FILES $<TARGET_FILE:${OCLOC_NAME}>
|
||||
DESTINATION ${CMAKE_INSTALL_BINDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
COMPONENT ocloc)
|
||||
set_property(GLOBAL APPEND PROPERTY NEO_OCL_COMPONENTS_LIST "ocloc")
|
||||
set_target_properties(ocloc_lib PROPERTIES OUTPUT_NAME ${OCLOC_LIB_NAME})
|
||||
add_definitions(-DOCLOC_LIB_NAME="lib${OCLOC_LIB_NAME}.so")
|
||||
else()
|
||||
set_target_properties(ocloc_lib PROPERTIES OUTPUT_NAME "${OCLOC_LIB_NAME}${OCLOC_BITNESS_SUFFIX}")
|
||||
add_definitions(-DOCLOC_LIB_NAME="${OCLOC_LIB_NAME}${OCLOC_BITNESS_SUFFIX}.dll")
|
||||
COMPONENT ${OCLOC_NAME})
|
||||
install(FILES $<TARGET_FILE:${OCLOC_NAME}_lib>
|
||||
DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE
|
||||
COMPONENT ${OCLOC_NAME})
|
||||
install(FILES ${OCLOC_DIRECTORY}/source/ocloc_api.h
|
||||
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}
|
||||
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
|
||||
COMPONENT ${OCLOC_NAME})
|
||||
endif()
|
||||
|
||||
create_project_source_tree(ocloc)
|
||||
set_target_properties(ocloc PROPERTIES FOLDER "offline_compiler")
|
||||
set_target_properties(ocloc_lib PROPERTIES FOLDER "offline_compiler")
|
||||
set(OCLOC_OUTPUT_NAME "${OCLOC_NAME}${OCLOC_BITNESS_SUFFIX}")
|
||||
set(OCLOC_LIB_OUTPUT_NAME "${CMAKE_SHARED_LIBRARY_PREFIX}${OCLOC_OUTPUT_NAME}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
|
||||
set_target_properties(
|
||||
${OCLOC_NAME}_lib PROPERTIES
|
||||
OUTPUT_NAME ${OCLOC_OUTPUT_NAME}
|
||||
OCLOC_OUTPUT_FILENAME ${OCLOC_LIB_OUTPUT_NAME}}
|
||||
)
|
||||
|
||||
add_custom_target(copy_compiler_files DEPENDS ${NEO__IGC_TARGETS})
|
||||
set_target_properties(copy_compiler_files PROPERTIES FOLDER "offline_compiler")
|
||||
set_target_properties(copy_compiler_files PROPERTIES FOLDER ${OCLOC_FOLDER_NAME})
|
||||
|
||||
if(WIN32)
|
||||
foreach(TARGET_tmp ${NEO__IGC_TARGETS})
|
||||
add_custom_command(
|
||||
TARGET copy_compiler_files
|
||||
PRE_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:ocloc_lib>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${TARGET_tmp}> $<TARGET_FILE_DIR:ocloc_lib>
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:ocloc>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${TARGET_tmp}> $<TARGET_FILE_DIR:ocloc>
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory $<TARGET_FILE_DIR:${OCLOC_NAME}_lib>
|
||||
COMMAND ${CMAKE_COMMAND} -E copy_if_different $<TARGET_FILE:${TARGET_tmp}> $<TARGET_FILE_DIR:${OCLOC_NAME}_lib>
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
|
||||
@@ -5,9 +5,11 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include "ocloc_wrapper.h"
|
||||
#include "ocloc_api.h"
|
||||
|
||||
int main(int argc, const char *argv[]) {
|
||||
OclocWrapper oclocWrapper;
|
||||
return oclocWrapper.invokeOcloc(argc, argv);
|
||||
return oclocInvoke(argc, argv,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
0, nullptr, nullptr, nullptr,
|
||||
nullptr, nullptr, nullptr, nullptr);
|
||||
}
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
|
||||
#include "shared/source/os_interface/os_library.h"
|
||||
|
||||
#include "utilities/get_path.h"
|
||||
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
|
||||
@@ -41,7 +39,7 @@ struct OclocWrapper::Impl {
|
||||
|
||||
void loadOcloc() {
|
||||
OclocLibrary ocloc;
|
||||
std::string oclocLibName = "";
|
||||
std::string oclocLibName = OCLOC_LIB_NAME;
|
||||
ocloc.library.reset(NEO::OsLibrary::load(oclocLibName));
|
||||
if (nullptr == (ocloc.invoke = reinterpret_cast<pOclocInvoke>(ocloc.library->getProcAddress("oclocInvoke")))) {
|
||||
std::cout << "Error! Couldn't find OclocInvoke function.\n";
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
set(CLOC_LIB_SRCS_UTILITIES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/safety_caller.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/get_current_dir.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/get_path.h
|
||||
)
|
||||
|
||||
if(WIN32)
|
||||
@@ -17,15 +16,12 @@ if(WIN32)
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/seh_exception.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/seh_exception.h
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/get_current_dir_windows.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/windows/get_path.cpp
|
||||
)
|
||||
else()
|
||||
list(APPEND CLOC_LIB_SRCS_UTILITIES
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/safety_caller_linux.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/get_current_dir_linux.cpp
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/linux/get_path.cpp
|
||||
)
|
||||
endif()
|
||||
|
||||
target_sources(ocloc_lib PRIVATE ${CLOC_LIB_SRCS_UTILITIES})
|
||||
target_sources(ocloc PRIVATE ${CLOC_LIB_SRCS_UTILITIES})
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
extern std::string getPath();
|
||||
@@ -1,24 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
#include <sys/types.h>
|
||||
#include <unistd.h>
|
||||
|
||||
std::string getPath() {
|
||||
char exepath[128] = {0};
|
||||
std::stringstream ss;
|
||||
ss << "/proc/" << getpid() << "/exe";
|
||||
if (readlink(ss.str().c_str(), exepath, 128) != -1) {
|
||||
std::string path = std::string(exepath);
|
||||
path = path.substr(0, path.find_last_of('/') + 1);
|
||||
return path;
|
||||
} else {
|
||||
return std::string("");
|
||||
}
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
/*
|
||||
* Copyright (C) 2020 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
*/
|
||||
|
||||
#include <string>
|
||||
|
||||
std::string getPath() {
|
||||
return std::string("");
|
||||
}
|
||||
Reference in New Issue
Block a user