ocloc package with ocloc binary, ocloc library, and ocloc library header

Change-Id: I252ecdf9cff1ca20e39b2b4b5675410ac51ed38a
This commit is contained in:
Krystian Chmielewski
2020-04-28 11:18:59 +02:00
committed by sys_ocldev
parent 997dcd607f
commit caee16d968
7 changed files with 56 additions and 118 deletions

View File

@@ -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()

View File

@@ -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);
}

View File

@@ -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";

View File

@@ -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})

View File

@@ -1,10 +0,0 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
extern std::string getPath();

View File

@@ -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("");
}
}

View File

@@ -1,12 +0,0 @@
/*
* Copyright (C) 2020 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#include <string>
std::string getPath() {
return std::string("");
}