This commit is contained in:
Родитель
2cf001f17e
Коммит
26b06c55cb
|
@ -2,6 +2,7 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.0.0)
|
|||
|
||||
LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake")
|
||||
FIND_PACKAGE(dotnet 2.0 REQUIRED)
|
||||
INCLUDE(PostBuild)
|
||||
|
||||
PROJECT(GraphEngine VERSION 2.0.9328 LANGUAGES CXX)
|
||||
SET(TRINITY_VERSION "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}.${PROJECT_VERSION_PATCH}")
|
||||
|
@ -14,25 +15,11 @@ SET(TRINITY_REPO_ROOT ${CMAKE_CURRENT_LIST_DIR})
|
|||
SET(TRINITY_OUTPUT_DIR ${TRINITY_REPO_ROOT}/bin)
|
||||
SET(TRINITY_TEST_DIR ${TRINITY_REPO_ROOT}/tests)
|
||||
SET(TRINITY_TOOLS_DIR ${TRINITY_REPO_ROOT}/tools)
|
||||
SET(TRINITY_LIB_DIR ${TRINITY_REPO_ROOT}/lib)
|
||||
SET(TRINITY_SRC_DIR ${TRINITY_REPO_ROOT}/src)
|
||||
SET(TRINITY_NUGET_EXE ${TRINITY_TOOLS_DIR}/NuGet.exe)
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${TRINITY_OUTPUT_DIR})
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${TRINITY_OUTPUT_DIR})
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${TRINITY_OUTPUT_DIR})
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TRINITY_OUTPUT_DIR})
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${TRINITY_OUTPUT_DIR})
|
||||
SET(XPLAT_LIB_DIR ${TRINITY_REPO_ROOT}/lib)
|
||||
SET_OUTPUT_DIRECTORY(${TRINITY_OUTPUT_DIR})
|
||||
|
||||
IF(WIN32 AND NOT EXISTS ${TRINITY_NUGET_EXE})
|
||||
FILE(DOWNLOAD https://dist.nuget.org/win-x86-commandline/latest/nuget.exe ${TRINITY_NUGET_EXE})
|
||||
|
@ -49,31 +36,6 @@ ELSE()
|
|||
MESSAGE(FATAL_ERROR "Unsupported platform")
|
||||
ENDIF()
|
||||
|
||||
FUNCTION(POSTBUILD_COPY_OUTPUT target file)
|
||||
GET_FILENAME_COMPONENT(filename ${file} NAME)
|
||||
ADD_CUSTOM_COMMAND(
|
||||
TARGET ${target}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${TRINITY_OUTPUT_DIR}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${file} "${TRINITY_OUTPUT_DIR}/"
|
||||
BYPRODUCTS "${TRINITY_OUTPUT_DIR}/${filename}"
|
||||
)
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(POSTBUILD_XPLAT_OUTPUT target)
|
||||
INSTALL(TARGETS ${target} ARCHIVE DESTINATION lib)
|
||||
IF(UNIX)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${TRINITY_LIB_DIR}/${target}.dll")
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${TRINITY_LIB_DIR}/${target}.lib")
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/${target}.dll ARCHIVE DESTINATION lib)
|
||||
ELSEIF(WIN32)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${TRINITY_LIB_DIR}/lib${target}.so")
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/lib${target}.so ARCHIVE DESTINATION lib)
|
||||
# TODO debug symbol
|
||||
# POSTBUILD_COPY_OUTPUT(GraphEngine.Jit.Native "${PROJECT_BINARY_DIR}/GraphEngine.Jit.Native.pdb")
|
||||
ENDIF()
|
||||
ENDFUNCTION()
|
||||
|
||||
ADD_SUBDIRECTORY(src/GraphEngine)
|
||||
ADD_SUBDIRECTORY(src/Trinity.TSL)
|
||||
ADD_SUBDIRECTORY(src/Trinity.C)
|
||||
|
|
|
@ -0,0 +1,88 @@
|
|||
FUNCTION(POSTBUILD_COPY_OUTPUT target file)
|
||||
CMAKE_PARSE_ARGUMENTS(
|
||||
# prefix
|
||||
_PB
|
||||
# options (flags)
|
||||
"ARCHIVE;RUNTIME;LIBRARY"
|
||||
# oneValueArgs
|
||||
"RENAME"
|
||||
# multiValueArgs
|
||||
""
|
||||
# the input arguments
|
||||
${ARGN})
|
||||
GET_FILENAME_COMPONENT(filename ${file} NAME)
|
||||
|
||||
SET(dir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||
IF(_PB_ARCHIVE)
|
||||
SET(dir ${CMAKE_ARCHIVE_OUTPUT_DIRECTORY})
|
||||
ELSEIF(_PB_RUNTIME)
|
||||
SET(dir ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})
|
||||
ELSEIF(_PB_LIBRARY)
|
||||
SET(dir ${CMAKE_LIBRARY_OUTPUT_DIRECTORY})
|
||||
ENDIF()
|
||||
|
||||
ADD_CUSTOM_COMMAND(
|
||||
TARGET ${target}
|
||||
POST_BUILD
|
||||
COMMAND ${CMAKE_COMMAND} -E make_directory "${dir}"
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${file} "${dir}/${_PB_RENAME}"
|
||||
BYPRODUCTS "${dir}/${filename}"
|
||||
)
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(POSTBUILD_XPLAT_OUTPUT target xplat_dir)
|
||||
GET_TARGET_PROPERTY(target_type ${target} TYPE)
|
||||
|
||||
IF(target_type STREQUAL "EXECUTABLE")
|
||||
|
||||
INSTALL(TARGETS ${target} RUNTIME DESTINATION bin)
|
||||
IF(UNIX)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${xplat_dir}/${target}.exe" RUNTIME)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/${target}.exe RUNTIME DESTINATION bin)
|
||||
ELSEIF(WIN32)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${xplat_dir}/${target}" RUNTIME)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/${target} RUNTIME DESTINATION bin)
|
||||
ENDIF()
|
||||
|
||||
ELSEIF(target_type STREQUAL "SHARED_LIBRARY")
|
||||
|
||||
INSTALL(TARGETS ${target} DESTINATION lib)
|
||||
IF(UNIX)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${xplat_dir}/${target}.dll" LIBRARY)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${xplat_dir}/${target}.lib" LIBRARY)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/${target}.dll LIBRARY DESTINATION lib)
|
||||
ELSEIF(WIN32)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${xplat_dir}/lib${target}.so" LIBRARY)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/lib${target}.so LIBRARY DESTINATION lib)
|
||||
ENDIF()
|
||||
|
||||
ELSE()
|
||||
MESSAGE(ERROR "Unsupported target type")
|
||||
ENDIF()
|
||||
|
||||
IF(WIN32)
|
||||
SET(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /PDB:${target}.pdb" PARENT_SCOPE)
|
||||
POSTBUILD_COPY_OUTPUT(${target} "${PROJECT_BINARY_DIR}/${target}.pdb" LIBRARY)
|
||||
ENDIF()
|
||||
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(SET_OUTPUT_DIRECTORY dir)
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${dir} PARENT_SCOPE)
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELEASE ${dir} PARENT_SCOPE)
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_DEBUG ${dir} PARENT_SCOPE)
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELWITHDEBINFO ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELWITHDEBINFO ${dir} PARENT_SCOPE)
|
||||
SET(CMAKE_ARCHIVE_OUTPUT_DIRECTORY_RELWITHDEBINFO ${dir} PARENT_SCOPE)
|
||||
|
||||
ENDFUNCTION()
|
|
@ -22,4 +22,4 @@ ENDIF()
|
|||
|
||||
TARGET_INCLUDE_DIRECTORIES(trinity_host PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
POSTBUILD_XPLAT_OUTPUT(trinity_host)
|
||||
POSTBUILD_XPLAT_OUTPUT(trinity_host ${XPLAT_LIB_DIR})
|
||||
|
|
|
@ -11,4 +11,4 @@ TARGET_INCLUDE_DIRECTORIES(GraphEngine.Jit.Native PRIVATE ${ASMJIT_SOURCE_DIR})
|
|||
TARGET_COMPILE_DEFINITIONS(GraphEngine.Jit.Native PRIVATE -DASMJIT_EMBED -DASMJIT_RELEASE -DGRAPHENGINEJITNATIVE_EXPORTS)
|
||||
TARGET_LINK_LIBRARIES(GraphEngine.Jit.Native Trinity)
|
||||
|
||||
POSTBUILD_XPLAT_OUTPUT(GraphEngine.Jit.Native)
|
||||
POSTBUILD_XPLAT_OUTPUT(GraphEngine.Jit.Native ${XPLAT_LIB_DIR})
|
||||
|
|
|
@ -11,4 +11,4 @@ ADD_LIBRARY(trinity_ffi SHARED ${SRCS})
|
|||
TARGET_COMPILE_DEFINITIONS(trinity_ffi PRIVATE -DTRINITYFFINATIVE_EXPORTS)
|
||||
TARGET_LINK_LIBRARIES(trinity_ffi Trinity trinity_host)
|
||||
|
||||
POSTBUILD_XPLAT_OUTPUT(trinity_ffi)
|
||||
POSTBUILD_XPLAT_OUTPUT(trinity_ffi ${XPLAT_LIB_DIR})
|
|
@ -14,13 +14,7 @@ IF(UNIX)
|
|||
ELSEIF(WIN32)
|
||||
|
||||
ADD_DEFINITIONS(-DWIN32 -DNDEBUG -D_CRT_SECURE_NO_WARNINGS -D_WINDOWS -D_USRDLL -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_SCL_SECURE_NO_WARNINGS)
|
||||
|
||||
TARGET_LINK_LIBRARIES(Trinity PRIVATE Psapi.lib;ws2_32.lib;Dbghelp.lib;Synchronization.lib)
|
||||
POSTBUILD_COPY_OUTPUT(Trinity "${PROJECT_BINARY_DIR}/Trinity.pdb")
|
||||
|
||||
INSTALL(FILES ${PROJECT_BINARY_DIR}/Trinity.pdb
|
||||
ARCHIVE DESTINATION lib)
|
||||
|
||||
ENDIF()
|
||||
|
||||
POSTBUILD_XPLAT_OUTPUT(Trinity)
|
||||
POSTBUILD_XPLAT_OUTPUT(Trinity ${XPLAT_LIB_DIR})
|
||||
|
|
|
@ -7,11 +7,4 @@ ADD_EXECUTABLE(Trinity.TSL.CodeGen ${codegen_srcs})
|
|||
TARGET_LINK_LIBRARIES(Trinity.TSL.CodeGen Trinity.TSL.Parser)
|
||||
INSTALL(TARGETS Trinity.TSL.CodeGen RUNTIME DESTINATION bin)
|
||||
|
||||
IF(WIN32)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/Trinity.TSL.CodeGen RUNTIME DESTINATION bin)
|
||||
POSTBUILD_COPY_OUTPUT(Trinity.TSL.CodeGen ${TRINITY_LIB_DIR}/Trinity.TSL.CodeGen)
|
||||
ELSEIF(UNIX)
|
||||
INSTALL(FILES ${TRINITY_LIB_DIR}/Trinity.TSL.CodeGen.exe RUNTIME DESTINATION bin)
|
||||
POSTBUILD_COPY_OUTPUT(Trinity.TSL.CodeGen ${TRINITY_LIB_DIR}/Trinity.TSL.CodeGen.exe)
|
||||
ENDIF()
|
||||
|
||||
POSTBUILD_XPLAT_OUTPUT(Trinity.TSL.CodeGen ${XPLAT_LIB_DIR})
|
Загрузка…
Ссылка в новой задаче