Merge remote-tracking branch 'dfhack/develop' into remote_reader
commit
5e95bd9cf2
@ -0,0 +1,350 @@
|
|||||||
|
{
|
||||||
|
"environments": [
|
||||||
|
{
|
||||||
|
"environment": "msvc_2015_x86",
|
||||||
|
"PATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64_x86;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\bin\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\bin\\x86;${env.PATH}",
|
||||||
|
"VS140COMNTOOLS": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\Common7\\Tools\\",
|
||||||
|
"VCINSTALLDIR": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\",
|
||||||
|
"WindowsSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\",
|
||||||
|
"UCRTVersion": "10.0.10240.0",
|
||||||
|
"UniversalCRTSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\",
|
||||||
|
"LIB": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\10.0.10240.0\\ucrt\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\um\\x86;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x86",
|
||||||
|
"INCLUDE": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\INCLUDE;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\10.0.10240.0\\ucrt;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\shared;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\winrt;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\shared",
|
||||||
|
"LIBPATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"environment": "msvc_2015_x64",
|
||||||
|
"PATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\amd64;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN;${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\BIN\\1033;${env.ProgramFiles(x86)}\\Windows Kits\\bin\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\bin\\x64;${env.PATH}",
|
||||||
|
"VS140COMNTOOLS": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\Common7\\Tools\\",
|
||||||
|
"VCINSTALLDIR": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\",
|
||||||
|
"WindowsSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\",
|
||||||
|
"UCRTVersion": "10.0.10240.0",
|
||||||
|
"UniversalCRTSdkDir": "${env.ProgramFiles(x86)}\\Windows Kits\\10\\",
|
||||||
|
"LIB": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\10.0.10240.0\\ucrt\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\10\\lib\\um\\x64;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Lib\\winv6.3\\um\\x64",
|
||||||
|
"INCLUDE": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\INCLUDE;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\10.0.10240.0\\ucrt;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\shared;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\10\\include\\winrt;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\um;${env.ProgramFiles(x86)}\\Windows Kits\\8.1\\Include\\shared",
|
||||||
|
"LIBPATH": "${env.ProgramFiles(x86)}\\Microsoft Visual Studio 14.0\\VC\\LIB\\amd64"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"configurations": [
|
||||||
|
{
|
||||||
|
"name": "MSVC 32 Debug",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"inheritEnvironments": [ "msvc_x86_x64", "msvc_2015_x86" ],
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MSVC 32 Release",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"inheritEnvironments": [ "msvc_x86_x64", "msvc_2015_x86" ],
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MSVC 64 Debug",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"inheritEnvironments": [ "msvc_x64_x64", "msvc_2015_x64" ],
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "MSVC 64 Release",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"inheritEnvironments": [ "msvc_x64_x64", "msvc_2015_x64" ],
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 32 Debug",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/debug-32",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"intelliSenseMode": "linux-gcc-x86",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 32 Release",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/release-32",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"intelliSenseMode": "linux-gcc-x86",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 64 Debug",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/debug-64",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 64 Release",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/release-64",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 4.8 32 Debug",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/debug-32-48",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"intelliSenseMode": "linux-gcc-x86",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "CMAKE_C_COMPILER",
|
||||||
|
"value": "gcc-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CMAKE_CXX_COMPILER",
|
||||||
|
"value": "g++-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 4.8 32 Release",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/release-32-48",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"intelliSenseMode": "linux-gcc-x86",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "CMAKE_C_COMPILER",
|
||||||
|
"value": "gcc-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CMAKE_CXX_COMPILER",
|
||||||
|
"value": "g++-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "32"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 4.8 64 Debug",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/debug-64-48",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "RelWithDebInfo",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "CMAKE_C_COMPILER",
|
||||||
|
"value": "gcc-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CMAKE_CXX_COMPILER",
|
||||||
|
"value": "g++-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "REMOVE_SYMBOLS_FROM_DF_STUBS",
|
||||||
|
"value": "0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_INCLUDE_CORE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "GCC 4.8 64 Release",
|
||||||
|
"remoteMachineName": "${defaultRemoteMachineName}",
|
||||||
|
"remoteCMakeListsRoot": "/tmp/dfhack-${workspaceHash}/src",
|
||||||
|
"remoteBuildRoot": "/tmp/dfhack-${workspaceHash}/release-64-48",
|
||||||
|
"rsyncCommandArgs": "--exclude=build --include=.git",
|
||||||
|
"remoteCopySources": true,
|
||||||
|
"cmakeExecutable": "$(which cmake)/..",
|
||||||
|
"generator": "Ninja",
|
||||||
|
"configurationType": "Release",
|
||||||
|
"intelliSenseMode": "linux-gcc-x64",
|
||||||
|
"variables": [
|
||||||
|
{
|
||||||
|
"name": "CMAKE_C_COMPILER",
|
||||||
|
"value": "gcc-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "CMAKE_CXX_COMPILER",
|
||||||
|
"value": "g++-4.8"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DFHACK_BUILD_ARCH",
|
||||||
|
"value": "64"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "BUILD_STONESENSE",
|
||||||
|
"value": "1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
@ -0,0 +1 @@
|
|||||||
|
git-describe.cmake
|
@ -1,52 +0,0 @@
|
|||||||
if(NOT EXISTS ${dfhack_SOURCE_DIR}/.git/index OR NOT EXISTS ${dfhack_SOURCE_DIR}/.git/modules/library/xml/index)
|
|
||||||
MESSAGE(FATAL_ERROR "Could not find git index file(s)")
|
|
||||||
endif()
|
|
||||||
|
|
||||||
set(git_describe_tmp_h ${dfhack_SOURCE_DIR}/library/include/git-describe.tmp.h)
|
|
||||||
set(git_describe_h ${dfhack_SOURCE_DIR}/library/include/git-describe.h)
|
|
||||||
|
|
||||||
if(EXISTS ${git_describe_tmp_h} AND
|
|
||||||
NOT(${dfhack_SOURCE_DIR}/.git/index IS_NEWER_THAN ${git_describe_tmp_h}) AND
|
|
||||||
NOT(${dfhack_SOURCE_DIR}/.git/modules/library/xml/index IS_NEWER_THAN ${git_describe_tmp_h}) AND
|
|
||||||
NOT(${dfhack_SOURCE_DIR}/library/git-describe.cmake IS_NEWER_THAN ${git_describe_tmp_h}))
|
|
||||||
return()
|
|
||||||
endif()
|
|
||||||
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=8 --long
|
|
||||||
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
|
||||||
OUTPUT_VARIABLE DFHACK_GIT_DESCRIPTION)
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
|
||||||
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
|
||||||
OUTPUT_VARIABLE DFHACK_GIT_COMMIT)
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=8 --exact-match
|
|
||||||
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
|
||||||
RESULT_VARIABLE DFHACK_GIT_TAGGED_RESULT
|
|
||||||
OUTPUT_QUIET ERROR_QUIET)
|
|
||||||
|
|
||||||
# Check library/xml for matching commits
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD:library/xml
|
|
||||||
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
|
||||||
OUTPUT_VARIABLE DFHACK_GIT_XML_EXPECTED_COMMIT)
|
|
||||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
|
||||||
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}/library/xml"
|
|
||||||
OUTPUT_VARIABLE DFHACK_GIT_XML_COMMIT)
|
|
||||||
|
|
||||||
file(WRITE ${git_describe_tmp_h} "")
|
|
||||||
|
|
||||||
macro(git_describe_definition var)
|
|
||||||
string(STRIP "${${var}}" GIT_DEF_VALUE)
|
|
||||||
file(APPEND ${git_describe_tmp_h} "#define ${var} \"${GIT_DEF_VALUE}\"\n")
|
|
||||||
endmacro()
|
|
||||||
|
|
||||||
git_describe_definition(DFHACK_GIT_DESCRIPTION)
|
|
||||||
git_describe_definition(DFHACK_GIT_COMMIT)
|
|
||||||
git_describe_definition(DFHACK_GIT_XML_EXPECTED_COMMIT)
|
|
||||||
git_describe_definition(DFHACK_GIT_XML_COMMIT)
|
|
||||||
if(${DFHACK_GIT_TAGGED_RESULT} EQUAL 0)
|
|
||||||
file(APPEND ${git_describe_tmp_h} "#define DFHACK_GIT_TAGGED\n")
|
|
||||||
endif()
|
|
||||||
if(${DFHACK_GIT_XML_COMMIT} STREQUAL ${DFHACK_GIT_XML_EXPECTED_COMMIT})
|
|
||||||
file(APPEND ${git_describe_tmp_h} "#define DFHACK_GIT_XML_MATCH\n")
|
|
||||||
endif()
|
|
||||||
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different
|
|
||||||
${git_describe_tmp_h} ${git_describe_h})
|
|
@ -0,0 +1,39 @@
|
|||||||
|
# Generated from git-describe.cmake.in
|
||||||
|
set(DFHACK_BUILD_ID "@DFHACK_BUILD_ID@")
|
||||||
|
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=8 --long
|
||||||
|
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE DFHACK_GIT_DESCRIPTION
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||||
|
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE DFHACK_GIT_COMMIT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=8 --exact-match
|
||||||
|
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
||||||
|
RESULT_VARIABLE DFHACK_GIT_TAGGED_RESULT
|
||||||
|
OUTPUT_QUIET ERROR_QUIET)
|
||||||
|
|
||||||
|
# Check library/xml for matching commits
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD:library/xml
|
||||||
|
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}"
|
||||||
|
OUTPUT_VARIABLE DFHACK_GIT_XML_EXPECTED_COMMIT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse HEAD
|
||||||
|
WORKING_DIRECTORY "${dfhack_SOURCE_DIR}/library/xml"
|
||||||
|
OUTPUT_VARIABLE DFHACK_GIT_XML_COMMIT
|
||||||
|
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||||
|
|
||||||
|
if(${DFHACK_GIT_TAGGED_RESULT} EQUAL 0)
|
||||||
|
set(DFHACK_GIT_TAGGED TRUE)
|
||||||
|
else()
|
||||||
|
set(DFHACK_GIT_TAGGED FALSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(${DFHACK_GIT_XML_COMMIT} STREQUAL ${DFHACK_GIT_XML_EXPECTED_COMMIT})
|
||||||
|
set(DFHACK_GIT_XML_MATCH TRUE)
|
||||||
|
else()
|
||||||
|
set(DFHACK_GIT_XML_MATCH FALSE)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
configure_file(${dfhack_SOURCE_DIR}/library/include/git-describe.h.in ${dfhack_SOURCE_DIR}/library/include/git-describe.h)
|
@ -1 +1 @@
|
|||||||
git-describe.*
|
git-describe.h
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
#cmakedefine DFHACK_GIT_DESCRIPTION "@DFHACK_GIT_DESCRIPTION@"
|
||||||
|
#cmakedefine DFHACK_GIT_COMMIT "@DFHACK_GIT_COMMIT@"
|
||||||
|
#cmakedefine DFHACK_GIT_XML_EXPECTED_COMMIT "@DFHACK_GIT_XML_EXPECTED_COMMIT@"
|
||||||
|
#cmakedefine DFHACK_GIT_XML_COMMIT "@DFHACK_GIT_XML_COMMIT@"
|
||||||
|
#define DFHACK_BUILD_ID "@DFHACK_BUILD_ID@"
|
||||||
|
#cmakedefine DFHACK_GIT_TAGGED
|
||||||
|
#cmakedefine DFHACK_GIT_XML_MATCH
|
@ -1 +1 @@
|
|||||||
Subproject commit 372993c58851153320f3390119cdd2d97caef9db
|
Subproject commit 57928311390bb67fe0cd5deec14e2d4621b13a58
|
@ -1,3 +0,0 @@
|
|||||||
# You can add custom plugins here to avoid touching plugins/CMakeLists.txt,
|
|
||||||
# This can be useful if you've made modifications to that file and try to
|
|
||||||
# switch between branches that have also made modifications to it.
|
|
@ -1 +1 @@
|
|||||||
Subproject commit 6849148e8694f5da415cd6920dd9094c352110de
|
Subproject commit 66b39d888e5f2d4f5c194ece08ba62ac7f110478
|
@ -0,0 +1,25 @@
|
|||||||
|
function test.getCurViewscreen()
|
||||||
|
local scr = dfhack.gui.getCurViewscreen()
|
||||||
|
local scr2 = df.global.gview.view
|
||||||
|
for i = 1, 100 do
|
||||||
|
if scr2.child then
|
||||||
|
scr2 = scr2.child
|
||||||
|
else
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
expect.eq(scr, scr2)
|
||||||
|
end
|
||||||
|
|
||||||
|
function test.getViewscreenByType()
|
||||||
|
local scr = dfhack.gui.getCurViewscreen()
|
||||||
|
local scr2 = dfhack.gui.getViewscreenByType(scr._type)
|
||||||
|
expect.eq(scr, scr2)
|
||||||
|
|
||||||
|
local bad_type = df.viewscreen_titlest
|
||||||
|
if scr._type == bad_type then
|
||||||
|
bad_type = df.viewscreen_optionst
|
||||||
|
end
|
||||||
|
local scr_bad = dfhack.gui.getViewscreenByType(bad_type)
|
||||||
|
expect.eq(scr_bad, nil)
|
||||||
|
end
|
@ -0,0 +1,15 @@
|
|||||||
|
local utils = require 'utils'
|
||||||
|
|
||||||
|
function test.OrderedTable()
|
||||||
|
local t = utils.OrderedTable()
|
||||||
|
local keys = {'a', 'c', 'e', 'd', 'b', 'q', 58, -1.2}
|
||||||
|
for i = 1, #keys do
|
||||||
|
t[keys[i]] = i
|
||||||
|
end
|
||||||
|
local i = 1
|
||||||
|
for k, v in pairs(t) do
|
||||||
|
expect.eq(k, keys[i], 'key order')
|
||||||
|
expect.eq(v, i, 'correct value')
|
||||||
|
i = i + 1
|
||||||
|
end
|
||||||
|
end
|
@ -1,10 +1,172 @@
|
|||||||
|
local script = require 'gui.script'
|
||||||
|
local utils = require 'utils'
|
||||||
|
|
||||||
|
local args = {...}
|
||||||
|
local done_command = args[1]
|
||||||
|
|
||||||
|
expect = {}
|
||||||
|
function expect.true_(value, comment)
|
||||||
|
return not not value, comment, 'expected true'
|
||||||
|
end
|
||||||
|
function expect.false_(value, comment)
|
||||||
|
return not value, comment, 'expected false'
|
||||||
|
end
|
||||||
|
function expect.eq(a, b, comment)
|
||||||
|
return a == b, comment, ('%s ~= %s'):format(a, b)
|
||||||
|
end
|
||||||
|
function expect.ne(a, b, comment)
|
||||||
|
return a ~= b, comment, ('%s == %s'):format(a, b)
|
||||||
|
end
|
||||||
|
function expect.error(func, ...)
|
||||||
|
local ok, ret = pcall(func, ...)
|
||||||
|
if ok then
|
||||||
|
return false, 'no error raised by function call'
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function delay(frames)
|
||||||
|
frames = frames or 1
|
||||||
|
script.sleep(frames, 'frames')
|
||||||
|
end
|
||||||
|
|
||||||
|
function build_test_env()
|
||||||
|
local env = {
|
||||||
|
test = utils.OrderedTable(),
|
||||||
|
expect = {},
|
||||||
|
delay = delay,
|
||||||
|
}
|
||||||
|
local private = {
|
||||||
|
checks = 0,
|
||||||
|
checks_ok = 0,
|
||||||
|
}
|
||||||
|
for name, func in pairs(expect) do
|
||||||
|
env.expect[name] = function(...)
|
||||||
|
private.checks = private.checks + 1
|
||||||
|
local ret = {func(...)}
|
||||||
|
local ok = table.remove(ret, 1)
|
||||||
|
local msg = ''
|
||||||
|
for _, part in pairs(ret) do
|
||||||
|
if part then
|
||||||
|
msg = msg .. ': ' .. tostring(part)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
msg = msg:sub(3) -- strip leading ': '
|
||||||
|
if ok then
|
||||||
|
private.checks_ok = private.checks_ok + 1
|
||||||
|
else
|
||||||
|
dfhack.printerr('Check failed! ' .. (msg or '(no message)'))
|
||||||
|
local info = debug.getinfo(2)
|
||||||
|
dfhack.printerr((' at %s:%d'):format(info.short_src, info.currentline))
|
||||||
|
print('')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
setmetatable(env, {__index = _G})
|
||||||
|
return env, private
|
||||||
|
end
|
||||||
|
|
||||||
|
function get_test_files()
|
||||||
|
local files = {}
|
||||||
|
for _, entry in ipairs(dfhack.filesystem.listdir_recursive(dfhack.getHackPath() .. 'test')) do
|
||||||
|
if not entry.isdir and not entry.path:match('main.lua') then
|
||||||
|
table.insert(files, entry.path)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(files)
|
||||||
|
return files
|
||||||
|
end
|
||||||
|
|
||||||
function set_test_stage(stage)
|
function set_test_stage(stage)
|
||||||
local f = io.open('test_stage.txt', 'w')
|
local f = io.open('test_stage.txt', 'w')
|
||||||
f:write(stage)
|
f:write(stage)
|
||||||
f:close()
|
f:close()
|
||||||
end
|
end
|
||||||
|
|
||||||
print('running tests')
|
function finish_tests(ok)
|
||||||
|
if ok then
|
||||||
|
print('Tests finished')
|
||||||
|
else
|
||||||
|
dfhack.printerr('Tests failed!')
|
||||||
|
end
|
||||||
|
if done_command then
|
||||||
|
dfhack.run_command(done_command)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function main()
|
||||||
|
local files = get_test_files()
|
||||||
|
|
||||||
|
local counts = {
|
||||||
|
tests = 0,
|
||||||
|
tests_ok = 0,
|
||||||
|
checks = 0,
|
||||||
|
checks_ok = 0,
|
||||||
|
file_errors = 0,
|
||||||
|
}
|
||||||
|
local passed = true
|
||||||
|
|
||||||
|
print('Looking for title screen...')
|
||||||
|
for i = 0, 100 do
|
||||||
|
local scr = dfhack.gui.getCurViewscreen()
|
||||||
|
if df.viewscreen_titlest:is_instance(scr) then
|
||||||
|
print('Found title screen')
|
||||||
|
break
|
||||||
|
else
|
||||||
|
scr:feed_key(df.interface_key.LEAVESCREEN)
|
||||||
|
delay(10)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not df.viewscreen_titlest:is_instance(dfhack.gui.getCurViewscreen()) then
|
||||||
|
qerror('Could not find title screen')
|
||||||
|
end
|
||||||
|
|
||||||
|
print('Running tests')
|
||||||
|
for _, file in ipairs(files) do
|
||||||
|
print('Running file: ' .. file:sub(file:find('test'), -1))
|
||||||
|
local env, env_private = build_test_env()
|
||||||
|
local code, err = loadfile(file, 't', env)
|
||||||
|
if not code then
|
||||||
|
passed = false
|
||||||
|
counts.file_errors = counts.file_errors + 1
|
||||||
|
dfhack.printerr('Failed to load file: ' .. tostring(err))
|
||||||
|
else
|
||||||
|
local ok, err = pcall(code)
|
||||||
|
if not ok then
|
||||||
|
passed = false
|
||||||
|
counts.file_errors = counts.file_errors + 1
|
||||||
|
dfhack.printerr('Error when running file: ' .. tostring(err))
|
||||||
|
else
|
||||||
|
for name, test in pairs(env.test) do
|
||||||
|
env_private.checks = 0
|
||||||
|
env_private.checks_ok = 0
|
||||||
|
counts.tests = counts.tests + 1
|
||||||
|
local ok, err = pcall(test)
|
||||||
|
if not ok then
|
||||||
|
dfhack.printerr('test errored: ' .. name .. ': ' .. tostring(err))
|
||||||
|
passed = false
|
||||||
|
elseif env_private.checks ~= env_private.checks_ok then
|
||||||
|
dfhack.printerr('test failed: ' .. name)
|
||||||
|
passed = false
|
||||||
|
else
|
||||||
|
print('test passed: ' .. name)
|
||||||
|
counts.tests_ok = counts.tests_ok + 1
|
||||||
|
end
|
||||||
|
counts.checks = counts.checks + (tonumber(env_private.checks) or 0)
|
||||||
|
counts.checks_ok = counts.checks_ok + (tonumber(env_private.checks_ok) or 0)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
print('\nTest summary:')
|
||||||
|
print(('%d/%d tests passed'):format(counts.tests_ok, counts.tests))
|
||||||
|
print(('%d/%d checks passed'):format(counts.checks_ok, counts.checks))
|
||||||
|
print(('%d test files failed to load'):format(counts.file_errors))
|
||||||
|
|
||||||
|
set_test_stage(passed and 'done' or 'fail')
|
||||||
|
finish_tests(passed)
|
||||||
|
end
|
||||||
|
|
||||||
set_test_stage('done')
|
script.start(main)
|
||||||
dfhack.run_command('die')
|
|
||||||
|
@ -0,0 +1,109 @@
|
|||||||
|
import glob
|
||||||
|
import sys
|
||||||
|
|
||||||
|
actual = {'': {}}
|
||||||
|
|
||||||
|
with open(sys.argv[1]) as f:
|
||||||
|
plugin_name = ''
|
||||||
|
for line in f:
|
||||||
|
line = line.rstrip()
|
||||||
|
if line.startswith('// Plugin: '):
|
||||||
|
plugin_name = line.split(' ')[2]
|
||||||
|
if plugin_name not in actual:
|
||||||
|
actual[plugin_name] = {}
|
||||||
|
elif line.startswith('// RPC '):
|
||||||
|
parts = line.split(' ')
|
||||||
|
actual[plugin_name][parts[2]] = (parts[4], parts[6])
|
||||||
|
|
||||||
|
expected = {'': {}}
|
||||||
|
|
||||||
|
for p in glob.iglob('library/proto/*.proto'):
|
||||||
|
with open(p) as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.rstrip()
|
||||||
|
if line.startswith('// RPC '):
|
||||||
|
parts = line.split(' ')
|
||||||
|
expected[''][parts[2]] = (parts[4], parts[6])
|
||||||
|
|
||||||
|
for p in glob.iglob('plugins/proto/*.proto'):
|
||||||
|
plugin_name = ''
|
||||||
|
with open(p) as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.rstrip()
|
||||||
|
if line.startswith('// Plugin: '):
|
||||||
|
plugin_name = line.split(' ')[2]
|
||||||
|
if plugin_name not in expected:
|
||||||
|
expected[plugin_name] = {}
|
||||||
|
break
|
||||||
|
|
||||||
|
if plugin_name == '':
|
||||||
|
continue
|
||||||
|
|
||||||
|
with open(p) as f:
|
||||||
|
for line in f:
|
||||||
|
line = line.rstrip()
|
||||||
|
if line.startswith('// RPC '):
|
||||||
|
parts = line.split(' ')
|
||||||
|
expected[plugin_name][parts[2]] = (parts[4], parts[6])
|
||||||
|
|
||||||
|
error_count = 0
|
||||||
|
|
||||||
|
for plugin_name in actual:
|
||||||
|
methods = actual[plugin_name]
|
||||||
|
|
||||||
|
if plugin_name not in expected:
|
||||||
|
print('Missing documentation for plugin proto files: ' + plugin_name)
|
||||||
|
print('Add the following lines:')
|
||||||
|
print('// Plugin: ' + plugin_name)
|
||||||
|
error_count += 1
|
||||||
|
for m in methods:
|
||||||
|
io = methods[m]
|
||||||
|
print('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1])
|
||||||
|
error_count += 1
|
||||||
|
else:
|
||||||
|
missing = []
|
||||||
|
wrong = []
|
||||||
|
for m in methods:
|
||||||
|
io = methods[m]
|
||||||
|
if m in expected[plugin_name]:
|
||||||
|
if expected[plugin_name][m] != io:
|
||||||
|
wrong.add('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1])
|
||||||
|
else:
|
||||||
|
missing.add('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1])
|
||||||
|
|
||||||
|
if len(missing) > 0:
|
||||||
|
print('Incomplete documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Add the following lines:')
|
||||||
|
for m in missing:
|
||||||
|
print(m)
|
||||||
|
error_count += 1
|
||||||
|
|
||||||
|
if len(wrong) > 0:
|
||||||
|
print('Incorrect documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Replace the following comments:')
|
||||||
|
for m in wrong:
|
||||||
|
print(m)
|
||||||
|
error_count += 1
|
||||||
|
|
||||||
|
for plugin_name in expected:
|
||||||
|
methods = expected[plugin_name]
|
||||||
|
|
||||||
|
if plugin_name not in actual:
|
||||||
|
print('Incorrect documentation for plugin proto files: ' + plugin_name)
|
||||||
|
print('The following methods are documented, but the plugin does not provide any RPC methods:')
|
||||||
|
for m in methods:
|
||||||
|
io = methods[m]
|
||||||
|
print('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1])
|
||||||
|
error_count += 1
|
||||||
|
else:
|
||||||
|
missing = []
|
||||||
|
for m in methods:
|
||||||
|
io = methods[m]
|
||||||
|
if m not in actual[plugin_name]:
|
||||||
|
missing.add('// RPC ' + m + ' : ' + io[0] + ' -> ' + io[1])
|
||||||
|
|
||||||
|
if len(missing) > 0:
|
||||||
|
print('Incorrect documentation for ' + ('core' if plugin_name == '' else 'plugin "' + plugin_name + '"') + ' proto files. Remove the following lines:')
|
||||||
|
for m in missing:
|
||||||
|
print(m)
|
||||||
|
error_count += 1
|
||||||
|
|
||||||
|
sys.exit(min(100, error_count))
|
@ -1,2 +1,4 @@
|
|||||||
:lua dfhack.internal.addScriptPath(os.getenv('TRAVIS_BUILD_DIR'))
|
devel/dump-rpc dfhack-rpc.txt
|
||||||
test/main
|
|
||||||
|
:lua dfhack.internal.addScriptPath(dfhack.getHackPath())
|
||||||
|
test/main die
|
||||||
|
Loading…
Reference in New Issue