summaryrefslogtreecommitdiff
path: root/3rdparty/plibsys/platforms
diff options
context:
space:
mode:
authorsanine <sanine.not@pm.me>2022-08-27 23:52:56 -0500
committersanine <sanine.not@pm.me>2022-08-27 23:52:56 -0500
commita4dd0ad63c00f4dee3b86dfd3075d1d61b2b3180 (patch)
tree13bd5bfa15e6fea2a12f176bae79adf9c6fd0933 /3rdparty/plibsys/platforms
parentbde3e4f1bb7b8f8abca0884a7d994ee1c17a66b1 (diff)
add plibsys
Diffstat (limited to '3rdparty/plibsys/platforms')
-rw-r--r--3rdparty/plibsys/platforms/aix-gcc/platform.cmake13
-rw-r--r--3rdparty/plibsys/platforms/amigaos-gcc/Platform/AmigaOS.cmake2
-rw-r--r--3rdparty/plibsys/platforms/amigaos-gcc/amigaos.cmake90
-rw-r--r--3rdparty/plibsys/platforms/amigaos-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/android-clang/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/android-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake141
-rw-r--r--3rdparty/plibsys/platforms/beos-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/common/HPUX.cmake15
-rw-r--r--3rdparty/plibsys/platforms/common/SCOSV.cmake9
-rw-r--r--3rdparty/plibsys/platforms/cygwin-clang/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/cygwin-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/darwin-clang/platform.cmake9
-rw-r--r--3rdparty/plibsys/platforms/darwin-gcc/platform.cmake9
-rw-r--r--3rdparty/plibsys/platforms/darwin-icc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/darwin-pgi/platform.cmake27
-rw-r--r--3rdparty/plibsys/platforms/dragonfly-clang/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/dragonfly-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/freebsd-clang/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/freebsd-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/haiku-clang/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/haiku-gcc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/hpux-gcc/platform.cmake16
-rw-r--r--3rdparty/plibsys/platforms/ios-clang/ios.cmake419
-rw-r--r--3rdparty/plibsys/platforms/ios-clang/platform.cmake9
-rw-r--r--3rdparty/plibsys/platforms/irix64-gcc/platform.cmake13
-rw-r--r--3rdparty/plibsys/platforms/irix64-mipspro/platform.cmake13
-rw-r--r--3rdparty/plibsys/platforms/linux-clang/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/linux-cray/platform.cmake18
-rw-r--r--3rdparty/plibsys/platforms/linux-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/linux-icc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/linux-pgi/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/linux-xlc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/msys-clang/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/msys-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/netbsd-clang/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/netbsd-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/openbsd-clang/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/openbsd-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/os2-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/qnx-qcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/scosv-gcc/platform.cmake27
-rw-r--r--3rdparty/plibsys/platforms/sunos-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/sunos-sunpro/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/syllable-gcc/platform.cmake12
-rw-r--r--3rdparty/plibsys/platforms/tru64-compaq/platform.cmake17
-rw-r--r--3rdparty/plibsys/platforms/tru64-gcc/platform.cmake16
-rw-r--r--3rdparty/plibsys/platforms/unixware-gcc/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/vms-general/README.md49
-rw-r--r--3rdparty/plibsys/platforms/vms-general/build_vms.com616
-rw-r--r--3rdparty/plibsys/platforms/vms-general/plibsys.opt540
-rw-r--r--3rdparty/plibsys/platforms/vms-general/vms_shorten_symbol.c238
-rw-r--r--3rdparty/plibsys/platforms/win32-borland/platform.cmake8
-rw-r--r--3rdparty/plibsys/platforms/win32-clang/platform.cmake8
-rw-r--r--3rdparty/plibsys/platforms/win32-gcc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/win32-icc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/win32-msvc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/win32-watcom/platform.cmake11
-rw-r--r--3rdparty/plibsys/platforms/win64-clang/platform.cmake8
-rw-r--r--3rdparty/plibsys/platforms/win64-gcc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/win64-icc/platform.cmake7
-rw-r--r--3rdparty/plibsys/platforms/win64-msvc/platform.cmake7
62 files changed, 2720 insertions, 0 deletions
diff --git a/3rdparty/plibsys/platforms/aix-gcc/platform.cmake b/3rdparty/plibsys/platforms/aix-gcc/platform.cmake
new file mode 100644
index 0000000..be1d25a
--- /dev/null
+++ b/3rdparty/plibsys/platforms/aix-gcc/platform.cmake
@@ -0,0 +1,13 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LDFLAGS -L/usr/lib/threads)
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES c_r -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_THREAD_SAFE
+)
diff --git a/3rdparty/plibsys/platforms/amigaos-gcc/Platform/AmigaOS.cmake b/3rdparty/plibsys/platforms/amigaos-gcc/Platform/AmigaOS.cmake
new file mode 100644
index 0000000..2889670
--- /dev/null
+++ b/3rdparty/plibsys/platforms/amigaos-gcc/Platform/AmigaOS.cmake
@@ -0,0 +1,2 @@
+# This is a dummy file to suppress CMake warnings about unknown platform.
+# As we are doing it during cross-compilation, it is completely fine.
diff --git a/3rdparty/plibsys/platforms/amigaos-gcc/amigaos.cmake b/3rdparty/plibsys/platforms/amigaos-gcc/amigaos.cmake
new file mode 100644
index 0000000..23e88e6
--- /dev/null
+++ b/3rdparty/plibsys/platforms/amigaos-gcc/amigaos.cmake
@@ -0,0 +1,90 @@
+# In order to suppress CMake warnings about unknown platform
+get_filename_component (cur_dir ${CMAKE_CURRENT_LIST_FILE} PATH)
+list (APPEND CMAKE_MODULE_PATH "${cur_dir}")
+
+set (CMAKE_SYSTEM_NAME AmigaOS)
+set (CMAKE_SYSTEM_VERSION 4)
+set (CMAKE_SYSTEM_PROCESSOR ppc)
+
+if (NOT AMIGA_ROOT)
+ set (AMIGA_ROOT $ENV{AMIGA_ROOT})
+
+ if (NOT AMIGA_ROOT)
+ message (FATAL_ERROR "You must define AMIGA_ROOT environment variable for toolchain")
+ endif()
+endif()
+
+set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
+set (CMAKE_SHARED_LIBRARY_SUFFIX ".so")
+set (CMAKE_STATIC_LIBRARY_PREFIX "lib")
+set (CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+
+if (CMAKE_HOST_WIN32)
+ set (HOST_EXECUTABLE_SUFFIX ".exe")
+endif()
+
+set (CMAKE_AR
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-ar${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS ar program"
+)
+
+set (CMAKE_RANLIB
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-ranlib${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS ranlib program"
+)
+
+set (CMAKE_NM
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-nm${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS nm program"
+)
+
+set (CMAKE_OBJCOPY
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-objcopy${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS objcopy program"
+)
+
+set (CMAKE_OBJDUMP
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-objdump${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS objdump program"
+)
+
+set (CMAKE_LINKER
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-ld${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS linker program"
+)
+
+set (CMAKE_STRIP
+ "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-strip${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "AmigaOS strip program"
+)
+
+set (CMAKE_C_COMPILER "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-gcc${HOST_EXECUTABLE_SUFFIX}")
+set (CMAKE_CXX_COMPILER "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-g++${HOST_EXECUTABLE_SUFFIX}")
+set (CMAKE_ASM_COMPILER "${AMIGA_ROOT}/bin/${CMAKE_SYSTEM_PROCESSOR}-amigaos-as${HOST_EXECUTABLE_SUFFIX}")
+
+set (CMAKE_SHARED_LIBRARY_CXX_FLAGS -fPIC)
+set (CMAKE_SHARED_LIBRARY_C_FLAGS -fPIC)
+set (CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS -shared)
+set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS -shared)
+
+set (AMIGA_CLIB2_PATH "${AMIGA_ROOT}/ppc-amigaos/SDK/clib2/lib")
+
+set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -use-dynld -L${AMIGA_CLIB2_PATH}")
+set (CMAKE_SHARED_LINKER_FLAGS "-L${AMIGA_CLIB2_PATH}")
+
+set (CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG "-Wl,-rpath,")
+set (CMAKE_SHARED_LIBRARY_RUNTIME_CXX_FLAG_SEP ":")
+set (CMAKE_SHARED_LIBRARY_RPATH_LINK_CXX_FLAG "-Wl,-rpath-link,")
+set (CMAKE_SHARED_LIBRARY_SONAME_CXX_FLAG "-Wl,-soname,")
+set (CMAKE_EXE_EXPORTS_CXX_FLAG "-Wl,--export-dynamic")
+
+set (CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG "-Wl,-rpath,")
+set (CMAKE_SHARED_LIBRARY_RUNTIME_C_FLAG_SEP ":")
+set (CMAKE_SHARED_LIBRARY_RPATH_LINK_C_FLAG "-Wl,-rpath-link,")
+set (CMAKE_SHARED_LIBRARY_SONAME_C_FLAG "-Wl,-soname,")
+set (CMAKE_EXE_EXPORTS_C_FLAG "-Wl,--export-dynamic")
+
+set (CMAKE_FIND_ROOT_PATH ${AMIGA_ROOT})
+set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/3rdparty/plibsys/platforms/amigaos-gcc/platform.cmake b/3rdparty/plibsys/platforms/amigaos-gcc/platform.cmake
new file mode 100644
index 0000000..2e589e3
--- /dev/null
+++ b/3rdparty/plibsys/platforms/amigaos-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL amiga)
+set (PLIBSYS_IPC_MODEL amiga)
+set (PLIBSYS_TIME_PROFILER_MODEL amiga)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL amiga)
+set (PLIBSYS_RWLOCK_MODEL general)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES auto amiga unix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/android-clang/platform.cmake b/3rdparty/plibsys/platforms/android-clang/platform.cmake
new file mode 100644
index 0000000..3295b5c
--- /dev/null
+++ b/3rdparty/plibsys/platforms/android-clang/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL none)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/android-gcc/platform.cmake b/3rdparty/plibsys/platforms/android-gcc/platform.cmake
new file mode 100644
index 0000000..3295b5c
--- /dev/null
+++ b/3rdparty/plibsys/platforms/android-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL none)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake b/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake
new file mode 100644
index 0000000..6509d24
--- /dev/null
+++ b/3rdparty/plibsys/platforms/bb10-qcc/blackberry.cmake
@@ -0,0 +1,141 @@
+set (CMAKE_SYSTEM_NAME QNX)
+set (CMAKE_SYSTEM_VERSION 8.0.0)
+set (TOOLCHAIN QNX)
+
+set (CPUVARDIR $ENV{CPUVARDIR})
+
+if (NOT CPUVARDIR)
+ message (FATAL_ERROR "CPU architecture not set")
+endif()
+
+if (${CPUVARDIR} STREQUAL "armle-v7")
+ set (CMAKE_SYSTEM_PROCESSOR armv7)
+elseif (${CPUVARDIR} STREQUAL "x86")
+ set (CMAKE_SYSTEM_PROCESSOR x86)
+else()
+ message (FATAL_ERROR "Unsupported CPU architecture: ${CPUVARDIR}")
+endif()
+
+set (QNX_HOST $ENV{QNX_HOST})
+set (QNX_TARGET $ENV{QNX_TARGET})
+
+if (NOT QNX_HOST)
+ message (FATAL_ERROR "You must define QNX_HOST environment variable for toolchain")
+endif()
+
+if (NOT QNX_TARGET)
+ message (FATAL_ERROR "You must define QNX_TARGET environment variable for toolchain")
+endif()
+
+set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
+set (CMAKE_SHARED_LIBRARY_SUFFIX ".so")
+set (CMAKE_STATIC_LIBRARY_PREFIX "lib")
+set (CMAKE_STATIC_LIBRARY_SUFFIX ".a")
+
+if (CMAKE_HOST_WIN32)
+ set (HOST_EXECUTABLE_SUFFIX ".exe")
+endif()
+
+set (CMAKE_MAKE_PROGRAM
+ "${QNX_HOST}/usr/bin/make${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX make program"
+)
+
+set (CMAKE_SH
+ "${QNX_HOST}/usr/bin/sh${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX shell program"
+)
+
+set (CMAKE_AR
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ar${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX ar program"
+)
+
+set (CMAKE_RANLIB
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ranlib${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX ranlib program"
+)
+
+set (CMAKE_NM
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-nm${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX nm program"
+)
+
+set (CMAKE_OBJCOPY
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objcopy${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX objcopy program"
+)
+
+set (CMAKE_OBJDUMP
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-objdump${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX objdump program"
+)
+
+set (CMAKE_LINKER
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-ld${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX linker program"
+)
+
+set (CMAKE_STRIP
+ "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-strip${HOST_EXECUTABLE_SUFFIX}"
+ CACHE PATH "QNX strip program"
+)
+
+set (CMAKE_C_COMPILER "${QNX_HOST}/usr/bin/qcc${HOST_EXECUTABLE_SUFFIX}")
+set (CMAKE_CXX_COMPILER "${QNX_HOST}/usr/bin/qcc${HOST_EXECUTABLE_SUFFIX}")
+set (CMAKE_ASM_COMPILER "${QNX_HOST}/usr/bin/nto${CMAKE_SYSTEM_PROCESSOR}-as${HOST_EXECUTABLE_SUFFIX}")
+
+execute_process (COMMAND nto${CMAKE_SYSTEM_PROCESSOR}-gcc${HOST_EXECUTABLE_SUFFIX} --version
+ OUTPUT_VARIABLE QCC_VERSION
+ OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+string (REGEX MATCH "[0-9]+.[0-9]+.[0-9]+" QCC_VERSION "${QCC_VERSION}")
+
+set (CMAKE_C_COMPILER_VERSION ${QCC_VERSION})
+set (CMAKE_CXX_COMPILER_VERSION ${QCC_VERSION})
+
+set (BLACKBERRY_BASE_FLAGS "-D_REENTRANT -Wno-psabi -fstack-protector -fstack-protector-all")
+
+if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7")
+ set (BLACKBERRY_CPU_FLAGS "-mcpu=cortex-a9 -mthumb")
+endif()
+
+if (CMAKE_SYSTEM_PROCESSOR STREQUAL "armv7")
+ set (BLACKBERRY_QCC_FLAGS "-Vgcc_ntoarmv7le")
+elseif (CMAKE_SYSTEM_PROCESSOR STREQUAL "x86")
+ set (BLACKBERRY_QCC_FLAGS "-Vgcc_ntox86")
+endif()
+
+set (BLACKBERRY_FLAGS "${BLACKBERRY_QCC_FLAGS} ${BLACKBERRY_BASE_FLAGS} ${BLACKBERRY_CPU_FLAGS}")
+
+set (CMAKE_C_FLAGS_DEBUG "${BLACKBERRY_FLAGS} -g" CACHE STRING "" FORCE)
+set (CMAKE_C_FLAGS_MINSIZEREL "${BLACKBERRY_FLAGS} -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE)
+set (CMAKE_C_FLAGS_RELEASE "${BLACKBERRY_FLAGS} -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE)
+set (CMAKE_C_FLAGS_RELWITHDEBINFO "${BLACKBERRY_FLAGS} -O2 -g -fstack-protector-strong" CACHE STRING "" FORCE)
+
+set (CMAKE_CXX_FLAGS_DEBUG "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -g" CACHE STRING "" FORCE)
+set (CMAKE_CXX_FLAGS_MINSIZEREL "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE)
+set (CMAKE_CXX_FLAGS_RELEASE "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -fstack-protector-strong -Os" CACHE STRING "" FORCE)
+set (CMAKE_CXX_FLAGS_RELWITHDEBINFO "${BLACKBERRY_FLAGS} -lang-c++ -lstdc++ -O2 -g -fstack-protector-strong" CACHE STRING "" FORCE)
+
+set (CMAKE_FIND_ROOT_PATH ${QNX_TARGET})
+set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
+set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+# To remove full linking paths
+link_directories (${QNX_TARGET}/${CPUVARDIR}/lib ${QNX_TARGET}/${CPUVARDIR}/usr/lib)
+
+# To distinguish from QNX
+add_definitions (-D__BLACKBERRY10__)
+
+set (CMAKE_LIBRARY_PATH
+ ${QNX_TARGET}/${CPUVARDIR}/lib
+ ${QNX_TARGET}/${CPUVARDIR}/usr/lib
+)
+
+set (CMAKE_INCLUDE_PATH
+ ${QNX_TARGET}/usr/include/c++/${QCC_VERSION}
+ ${QNX_TARGET}/usr/include/c++/${QCC_VERSION}/arm-unknown-nto-qnx8.0.0eabi
+)
diff --git a/3rdparty/plibsys/platforms/beos-gcc/platform.cmake b/3rdparty/plibsys/platforms/beos-gcc/platform.cmake
new file mode 100644
index 0000000..502313f
--- /dev/null
+++ b/3rdparty/plibsys/platforms/beos-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL beos)
+set (PLIBSYS_IPC_MODEL none)
+set (PLIBSYS_TIME_PROFILER_MODEL beos)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL beos)
+set (PLIBSYS_RWLOCK_MODEL general)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES root socket bind)
diff --git a/3rdparty/plibsys/platforms/common/HPUX.cmake b/3rdparty/plibsys/platforms/common/HPUX.cmake
new file mode 100644
index 0000000..d411066
--- /dev/null
+++ b/3rdparty/plibsys/platforms/common/HPUX.cmake
@@ -0,0 +1,15 @@
+include (CheckFunctionExists)
+
+function (plibsys_hpux_detect_libraryloader_model result)
+ message (STATUS "Checking whether dlopen() presents")
+
+ check_function_exists (dlopen PLIBSYS_HPUX_HAS_DLOPEN)
+
+ if (PLIBSYS_HPUX_HAS_DLOPEN)
+ message (STATUS "Checking whether dlopen() presents - yes")
+ set (${result} posix PARENT_SCOPE)
+ else()
+ message (STATUS "Checking whether dlopen() presents - no")
+ set (${result} shl PARENT_SCOPE)
+ endif()
+endfunction (plibsys_hpux_detect_libraryloader_model)
diff --git a/3rdparty/plibsys/platforms/common/SCOSV.cmake b/3rdparty/plibsys/platforms/common/SCOSV.cmake
new file mode 100644
index 0000000..6ef2416
--- /dev/null
+++ b/3rdparty/plibsys/platforms/common/SCOSV.cmake
@@ -0,0 +1,9 @@
+function (plibsys_scosv_print_threading_message)
+ message ("
+ You need a working port of FSU Pthreads in order to
+ compile with multi-threading support. Please refer to
+ http://moss.csc.ncsu.edu/~mueller/pthreads/ for more
+ details. Make sure that it is compiled with thread-safe
+ memory allocation (usually -DMALLOC macro definition).
+ ")
+endfunction (plibsys_scosv_print_threading_message)
diff --git a/3rdparty/plibsys/platforms/cygwin-clang/platform.cmake b/3rdparty/plibsys/platforms/cygwin-clang/platform.cmake
new file mode 100644
index 0000000..53796bd
--- /dev/null
+++ b/3rdparty/plibsys/platforms/cygwin-clang/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/cygwin-gcc/platform.cmake b/3rdparty/plibsys/platforms/cygwin-gcc/platform.cmake
new file mode 100644
index 0000000..53796bd
--- /dev/null
+++ b/3rdparty/plibsys/platforms/cygwin-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/darwin-clang/platform.cmake b/3rdparty/plibsys/platforms/darwin-clang/platform.cmake
new file mode 100644
index 0000000..38771be
--- /dev/null
+++ b/3rdparty/plibsys/platforms/darwin-clang/platform.cmake
@@ -0,0 +1,9 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL mach)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/darwin-gcc/platform.cmake b/3rdparty/plibsys/platforms/darwin-gcc/platform.cmake
new file mode 100644
index 0000000..38771be
--- /dev/null
+++ b/3rdparty/plibsys/platforms/darwin-gcc/platform.cmake
@@ -0,0 +1,9 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL mach)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/darwin-icc/platform.cmake b/3rdparty/plibsys/platforms/darwin-icc/platform.cmake
new file mode 100644
index 0000000..7b69004
--- /dev/null
+++ b/3rdparty/plibsys/platforms/darwin-icc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread imf svml irng intlc)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/darwin-pgi/platform.cmake b/3rdparty/plibsys/platforms/darwin-pgi/platform.cmake
new file mode 100644
index 0000000..791ff79
--- /dev/null
+++ b/3rdparty/plibsys/platforms/darwin-pgi/platform.cmake
@@ -0,0 +1,27 @@
+if (NOT PLIBSYS_SIZEOF_VOID_P EQUAL 4)
+ if (CMAKE_VERSION VERSION_LESS 2.8.10)
+ message (WARNING
+ "
+ Unable to detect PGI compiler version. Beware that old
+ PGI versions doesn't support shared libraries on 64-bit
+ macOS.
+ ")
+ elseif (CMAKE_C_COMPILER_VERSION VERSION_LESS 18.4)
+ message (FATAL_ERROR
+ "
+ PGI compiler before verison 18.4 doesn't support 64-bit
+ shared libraries on macOS. Use older 32-bit version of
+ the compiler instead.
+ ")
+ endif()
+endif()
+
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL mach)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/dragonfly-clang/platform.cmake b/3rdparty/plibsys/platforms/dragonfly-clang/platform.cmake
new file mode 100644
index 0000000..b801c3e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/dragonfly-clang/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/dragonfly-gcc/platform.cmake b/3rdparty/plibsys/platforms/dragonfly-gcc/platform.cmake
new file mode 100644
index 0000000..b801c3e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/dragonfly-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/freebsd-clang/platform.cmake b/3rdparty/plibsys/platforms/freebsd-clang/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/freebsd-clang/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/freebsd-gcc/platform.cmake b/3rdparty/plibsys/platforms/freebsd-gcc/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/freebsd-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/haiku-clang/platform.cmake b/3rdparty/plibsys/platforms/haiku-clang/platform.cmake
new file mode 100644
index 0000000..0c93b2d
--- /dev/null
+++ b/3rdparty/plibsys/platforms/haiku-clang/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES root network)
diff --git a/3rdparty/plibsys/platforms/haiku-gcc/platform.cmake b/3rdparty/plibsys/platforms/haiku-gcc/platform.cmake
new file mode 100644
index 0000000..0c93b2d
--- /dev/null
+++ b/3rdparty/plibsys/platforms/haiku-gcc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES root network)
diff --git a/3rdparty/plibsys/platforms/hpux-gcc/platform.cmake b/3rdparty/plibsys/platforms/hpux-gcc/platform.cmake
new file mode 100644
index 0000000..bfaa7d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/hpux-gcc/platform.cmake
@@ -0,0 +1,16 @@
+include (${PROJECT_SOURCE_DIR}/platforms/common/HPUX.cmake)
+
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL solaris)
+set (PLIBSYS_DIR_MODEL posix)
+
+plibsys_hpux_detect_libraryloader_model (PLIBSYS_LIBRARYLOADER_MODEL)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES xnet rt -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_THREAD_SAFE
+ -D_XOPEN_SOURCE_EXTENDED=1
+)
diff --git a/3rdparty/plibsys/platforms/ios-clang/ios.cmake b/3rdparty/plibsys/platforms/ios-clang/ios.cmake
new file mode 100644
index 0000000..e0df03b
--- /dev/null
+++ b/3rdparty/plibsys/platforms/ios-clang/ios.cmake
@@ -0,0 +1,419 @@
+# Copyright (c) 2014, Bogdan Cristea and LTE Engineering Software,
+# Kitware, Inc., Insight Software Consortium. All rights reserved.
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+#
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# 3. Neither the name of the copyright holder nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+# FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+# COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+# BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+# LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
+# ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+# POSSIBILITY OF SUCH DAMAGE.
+#
+# Updated by Alex Stewart (alexs.mac@gmail.com)
+#
+# *****************************************************************************
+# Now maintained by Alexander Widerberg (widerbergaren [at] gmail.com)
+# under the BSD-Clause-3 licence
+# *****************************************************************************
+#
+# INFORMATION / HELP
+#
+# The following variables control the behaviour of this toolchain:
+#
+# IOS_PLATFORM: OS (default), SIMULATOR, SIMULATOR64, TVOS or SIMULATOR_TVOS
+# OS = Build for iOS.
+# SIMULATOR = Build for x86 iPhone simulator.
+# SIMULATOR64 = Build for x64 iPhone simulator.
+# TVOS = Build for Apple tvOS.
+# SIMULATOR_TVOS = Build for x64 Apple TV Simulator.
+# WATCHOS = Build for Apple watchOS.
+# SIMULATOR_WATCHOS = Build for x86 watchOS Simulator.
+# SIMULATOR64_WATCHOS = Build for x64 watchOS Simulator.
+# IOS_DEPLOYMENT_TARGET: Minimum version for deployment target.
+# CMAKE_OSX_SYSROOT: Path to the iOS SDK to use. By default this is
+# automatically determined from IOS_PLATFORM and xcodebuild, but can also be
+# manually specified (although this should not be required).
+# CMAKE_IOS_DEVELOPER_ROOT: Path to the Developer directory for the iOS
+# platform being compiled for. By default this is automatically determined
+# from CMAKE_OSX_SYSROOT, but can also be manually specified (although this
+# should not be required).
+# ENABLE_BITCODE: (ON / OFF) Enables or disables bitcode support. Default: ON.
+# ENABLE_ARC: (ON / OFF) Enables or disables ARC support. Default: ON.
+# IOS_ARCH: (armv7 armv7s armv7k arm64 i386 x86_64) If specified, will override the
+# default architectures for the given IOS_PLATFORM. Default architectures:
+# OS = armv7 armv7s arm64
+# SIMULATOR = i386
+# SIMULATOR64 = x86_64
+# TVOS = arm64
+# SIMULATOR_TVOS = x86_64
+# WATCHOS = armv7k
+# SIMULATOR_WATCHOS = i386
+# SIMULATOR64_WATCHOS = x86_64
+#
+# Copyright 2018, Alexander Saprykin <saprykin.spb@gmail.com>
+#
+
+# Get the Xcode version being used.
+execute_process (COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERSION
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+string (REGEX MATCH "Xcode [0-9\\.]+" XCODE_VERSION "${XCODE_VERSION}")
+string (REGEX REPLACE "Xcode ([0-9\\.]+)" "\\1" XCODE_VERSION "${XCODE_VERSION}")
+
+message (STATUS "Building with Xcode version: ${XCODE_VERSION}")
+
+# Default to building for iOS if not specified otherwise, and we cannot
+# determine the platform from the CMAKE_OSX_ARCHITECTURES variable. The use
+# of CMAKE_OSX_ARCHITECTURES is such that try_compile() projects can correctly
+# determine the value of IOS_PLATFORM from the root project, as
+# CMAKE_OSX_ARCHITECTURES is propagated to them by CMake.
+
+if (NOT DEFINED IOS_PLATFORM)
+ if (CMAKE_OSX_ARCHITECTURES)
+ if (CMAKE_OSX_ARCHITECTURES MATCHES ".*arm.*")
+ set (IOS_PLATFORM "OS")
+ elseif (CMAKE_OSX_ARCHITECTURES MATCHES "i386")
+ set (IOS_PLATFORM "SIMULATOR")
+ elseif (CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
+ set (IOS_PLATFORM "SIMULATOR64")
+ endif()
+ endif()
+
+ if (NOT IOS_PLATFORM)
+ set (IOS_PLATFORM "OS")
+ endif()
+endif()
+
+set (IOS_PLATFORM ${IOS_PLATFORM} CACHE STRING "Type of iOS platform for which to build.")
+
+# Determine the platform name and architectures for use in xcodebuild commands
+# from the specified IOS_PLATFORM name.
+
+if (IOS_PLATFORM STREQUAL "OS")
+ set (XCODE_IOS_PLATFORM "iphoneos")
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "armv7;armv7s;arm64")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR")
+ set (XCODE_IOS_PLATFORM "iphonesimulator")
+ set (ENABLE_BITCODE OFF)
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "i386")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR64")
+ set (XCODE_IOS_PLATFORM "iphonesimulator")
+ set (ENABLE_BITCODE OFF)
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "x86_64")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "TVOS")
+ set (XCODE_IOS_PLATFORM "appletvos")
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "arm64")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS")
+ set (XCODE_IOS_PLATFORM "appletvsimulator")
+ set (ENABLE_BITCODE OFF)
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "x86_64")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "WATCHOS")
+ set (XCODE_IOS_PLATFORM "watchos")
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "armv7k")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS")
+ set (XCODE_IOS_PLATFORM "watchsimulator")
+ set (ENABLE_BITCODE OFF)
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "i386")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR64_WATCHOS")
+ set (XCODE_IOS_PLATFORM "watchsimulator")
+ set (ENABLE_BITCODE OFF)
+
+ if (NOT IOS_ARCH)
+ set (IOS_ARCH "x86_64")
+ endif()
+else()
+ message (FATAL_ERROR "Invalid IOS_PLATFORM: ${IOS_PLATFORM}")
+endif()
+
+message (STATUS "Configuring iOS build for platform: ${IOS_PLATFORM}, architecture(s): ${IOS_ARCH}")
+
+# If user did not specify the SDK root to use, then query xcodebuild for it.
+
+if (NOT CMAKE_OSX_SYSROOT)
+ execute_process (COMMAND xcodebuild -version -sdk ${XCODE_IOS_PLATFORM} Path
+ OUTPUT_VARIABLE CMAKE_OSX_SYSROOT
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+ )
+
+ message (STATUS "Using SDK: ${CMAKE_OSX_SYSROOT} for platform: ${IOS_PLATFORM}")
+endif()
+
+if (NOT EXISTS ${CMAKE_OSX_SYSROOT})
+ message(FATAL_ERROR "Invalid CMAKE_OSX_SYSROOT: ${CMAKE_OSX_SYSROOT} does not exist.")
+endif()
+
+# Specify minimum version of deployment target.
+
+if (NOT DEFINED IOS_DEPLOYMENT_TARGET)
+ if (IOS_PLATFORM MATCHES ".*WATCHOS")
+ set (IOS_DEPLOYMENT_TARGET "2.0" CACHE STRING "Minimum watchOS version to build for." )
+ else()
+ set (IOS_DEPLOYMENT_TARGET "8.0" CACHE STRING "Minimum iOS version to build for." )
+ endif()
+
+ message (STATUS "Using the default min-version since IOS_DEPLOYMENT_TARGET not provided.")
+endif()
+
+if (NOT IOS_DEPLOYMENT_TARGET VERSION_LESS 11.0 AND NOT IOS_PLATFORM MATCHES ".*WATCHOS")
+ # iOS 11 does not support 32-bit (armv7*).
+ foreach (ARCH ${IOS_ARCH})
+ if (ARCH MATCHES "armv7.*")
+ message (STATUS "iOS architecture removed: ${ARCH} is not supported by "
+ "the minimum deployment iOS version ${IOS_DEPLOYMENT_TARGET}."
+ )
+ else()
+ list (APPEND VALID_IOS_ARCH ${ARCH})
+ endif()
+ endforeach()
+
+ set (IOS_ARCH ${VALID_IOS_ARCH})
+endif()
+
+# Use bitcode or not
+
+if (NOT DEFINED ENABLE_BITCODE)
+ # Unless specified, enable bitcode support by default
+ set (ENABLE_BITCODE ON CACHE BOOL "Wheter or not to enable bitcode")
+ message (STATUS "Enabling bitcode support by default.")
+endif()
+
+# Use ARC or not
+
+if (NOT DEFINED ENABLE_ARC)
+ # Unless specified, enable ARC support by default
+ set (ENABLE_ARC ON CACHE BOOL "Wheter or not to enable ARC")
+ message (STATUS "Enabling ARC support by default.")
+endif()
+
+# Get the SDK version information.
+
+execute_process (COMMAND xcodebuild -sdk ${CMAKE_OSX_SYSROOT} -version SDKVersion
+ OUTPUT_VARIABLE IOS_SDK_VERSION
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+# Find the Developer root for the specific iOS platform being compiled for
+# from CMAKE_OSX_SYSROOT. Should be ../../ from SDK specified in
+# CMAKE_OSX_SYSROOT. There does not appear to be a direct way to obtain
+# this information from xcrun or xcodebuild.
+
+if (NOT CMAKE_IOS_DEVELOPER_ROOT)
+ get_filename_component (IOS_PLATFORM_SDK_DIR ${CMAKE_OSX_SYSROOT} PATH)
+ get_filename_component (CMAKE_IOS_DEVELOPER_ROOT ${IOS_PLATFORM_SDK_DIR} PATH)
+endif()
+
+if (NOT EXISTS ${CMAKE_IOS_DEVELOPER_ROOT})
+ message (FATAL_ERROR "Invalid CMAKE_IOS_DEVELOPER_ROOT: ${CMAKE_IOS_DEVELOPER_ROOT} does not exist.")
+endif()
+
+# Find the C & C++ compilers for the specified SDK.
+
+if (NOT CMAKE_C_COMPILER)
+ execute_process (COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang
+ OUTPUT_VARIABLE CMAKE_C_COMPILER
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message (STATUS "Using C compiler: ${CMAKE_C_COMPILER}")
+endif()
+
+if (NOT CMAKE_CXX_COMPILER)
+ execute_process (COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find clang++
+ OUTPUT_VARIABLE CMAKE_CXX_COMPILER
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+ message (STATUS "Using CXX compiler: ${CMAKE_CXX_COMPILER}")
+endif()
+
+# Find (Apple's) libtool.
+
+execute_process (COMMAND xcrun -sdk ${CMAKE_OSX_SYSROOT} -find libtool
+ OUTPUT_VARIABLE IOS_LIBTOOL
+ ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE)
+message (STATUS "Using libtool: ${IOS_LIBTOOL}")
+
+# Configure libtool to be used instead of ar + ranlib to build static libraries.
+# This is required on Xcode 7+, but should also work on previous versions of
+# Xcode.
+
+set (CMAKE_C_CREATE_STATIC_LIBRARY "${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS>")
+set (CMAKE_CXX_CREATE_STATIC_LIBRARY "${IOS_LIBTOOL} -static -o <TARGET> <LINK_FLAGS> <OBJECTS>")
+
+# Standard settings.
+
+set (CMAKE_SYSTEM_NAME Darwin CACHE INTERNAL "")
+set (CMAKE_SYSTEM_VERSION ${IOS_SDK_VERSION} CACHE INTERNAL "")
+set (UNIX TRUE CACHE BOOL "")
+set (APPLE TRUE CACHE BOOL "")
+set (IOS TRUE CACHE BOOL "")
+set (CMAKE_AR ar CACHE FILEPATH "" FORCE)
+set (CMAKE_RANLIB ranlib CACHE FILEPATH "" FORCE)
+
+# Force unset of OS X-specific deployment target (otherwise autopopulated),
+# required as of cmake 2.8.10.
+
+set (CMAKE_OSX_DEPLOYMENT_TARGET "" CACHE STRING "Must be empty for iOS builds." FORCE)
+
+# Set the architectures for which to build.
+
+set (CMAKE_OSX_ARCHITECTURES ${IOS_ARCH} CACHE STRING "Build architecture for iOS")
+
+# All iOS/Darwin specific settings - some may be redundant.
+
+set (CMAKE_SHARED_LIBRARY_PREFIX "lib")
+set (CMAKE_SHARED_LIBRARY_SUFFIX ".dylib")
+set (CMAKE_SHARED_MODULE_PREFIX "lib")
+set (CMAKE_SHARED_MODULE_SUFFIX ".so")
+set (CMAKE_MODULE_EXISTS 1)
+set (CMAKE_DL_LIBS "")
+
+set (CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG "-compatibility_version ")
+set (CMAKE_C_OSX_CURRENT_VERSION_FLAG "-current_version ")
+set (CMAKE_CXX_OSX_COMPATIBILITY_VERSION_FLAG "${CMAKE_C_OSX_COMPATIBILITY_VERSION_FLAG}")
+set (CMAKE_CXX_OSX_CURRENT_VERSION_FLAG "${CMAKE_C_OSX_CURRENT_VERSION_FLAG}")
+
+message (STATUS "Building for minimum OS version: ${IOS_DEPLOYMENT_TARGET} (SDK version: ${IOS_SDK_VERSION})")
+
+# Note that only Xcode 7+ supports the newer more specific:
+# -m${XCODE_IOS_PLATFORM}-version-min flags, older versions of Xcode use:
+# -m(ios/ios-simulator)-version-min instead.
+if (IOS_PLATFORM STREQUAL "OS")
+ if (XCODE_VERSION VERSION_LESS 7.0)
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mios-version-min=${IOS_DEPLOYMENT_TARGET}")
+ else()
+ # Xcode 7.0+ uses flags we can build directly from XCODE_IOS_PLATFORM.
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-m${XCODE_IOS_PLATFORM}-version-min=${IOS_DEPLOYMENT_TARGET}")
+ endif()
+elseif (IOS_PLATFORM STREQUAL "TVOS")
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mtvos-version-min=${IOS_DEPLOYMENT_TARGET}")
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR_TVOS")
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mtvos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+elseif (IOS_PLATFORM STREQUAL "WATCHOS")
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mwatchos-version-min=${IOS_DEPLOYMENT_TARGET}")
+elseif (IOS_PLATFORM STREQUAL "SIMULATOR_WATCHOS" OR IOS_PLATFORM STREQUAL "SIMULATOR64_WATCHOS")
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mwatchos-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+else()
+ # SIMULATOR or SIMULATOR64 both use -mios-simulator-version-min.
+ set (XCODE_IOS_PLATFORM_VERSION_FLAGS "-mios-simulator-version-min=${IOS_DEPLOYMENT_TARGET}")
+endif()
+
+message (STATUS "Version flags set to: ${XCODE_IOS_PLATFORM_VERSION_FLAGS}")
+
+if (ENABLE_BITCODE)
+ set (BITCODE "-fembed-bitcode")
+ message (STATUS "Enabling bitcode support.")
+else()
+ set (BITCODE "")
+ message (STATUS "Disabling bitcode support.")
+endif()
+
+if (ENABLE_ARC)
+ set (FOBJC_ARC "-fobjc-arc")
+ message (STATUS "Enabling ARC support.")
+else()
+ set (FOBJC_ARC "-fno-objc-arc")
+ message (STATUS "Disabling ARC support.")
+endif()
+
+set (CMAKE_C_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${C_FLAGS}")
+set (CMAKE_CXX_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} ${BITCODE} -fobjc-abi-version=2 ${FOBJC_ARC} ${CXX_FLAGS}")
+set (CMAKE_C_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${C_LINK_FLAGS}")
+set (CMAKE_CXX_LINK_FLAGS "${XCODE_IOS_PLATFORM_VERSION_FLAGS} -Wl,-search_paths_first ${CXX_LINK_FLAGS}")
+
+# In order to ensure that the updated compiler flags are used in try_compile()
+# tests, we have to forcibly set them in the CMake cache, not merely set them
+# in the local scope.
+
+list (APPEND VARS_TO_FORCE_IN_CACHE
+ CMAKE_C_FLAGS
+ CMAKE_CXX_FLAGS
+ CMAKE_C_LINK_FLAGS
+ CMAKE_CXX_LINK_FLAGS
+)
+
+foreach (VAR_TO_FORCE ${VARS_TO_FORCE_IN_CACHE})
+ set (${VAR_TO_FORCE} "${${VAR_TO_FORCE}}" CACHE STRING "" FORCE)
+endforeach()
+
+set (CMAKE_PLATFORM_HAS_INSTALLNAME 1)
+
+set (CMAKE_SHARED_LIBRARY_CREATE_C_FLAGS "-dynamiclib")
+set (CMAKE_SHARED_LIBRARY_CREATE_CXX_FLAGS "-dynamiclib")
+set (CMAKE_SHARED_MODULE_CREATE_C_FLAGS "-bundle")
+set (CMAKE_SHARED_MODULE_CREATE_CXX_FLAGS "-bundle")
+set (CMAKE_SHARED_MODULE_LOADER_C_FLAG "-Wl,-bundle_loader,")
+set (CMAKE_SHARED_MODULE_LOADER_CXX_FLAG "-Wl,-bundle_loader,")
+set (CMAKE_FIND_LIBRARY_SUFFIXES ".dylib" ".so" ".a")
+
+# Hack: If a new CMake (which uses CMAKE_INSTALL_NAME_TOOL) runs on an old
+# build tree (where install_name_tool was hardcoded) and where
+# CMAKE_INSTALL_NAME_TOOL isn't in the cache and still CMake didn't fail in
+# CMakeFindBinUtils.cmake (because it isn't rerun) hardcode
+# CMAKE_INSTALL_NAME_TOOL here to install_name_tool, so it behaves as it did
+# before, Alex.
+
+if (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
+ find_program (CMAKE_INSTALL_NAME_TOOL install_name_tool)
+endif (NOT DEFINED CMAKE_INSTALL_NAME_TOOL)
+
+# Set the find root to the iOS developer roots and to user defined paths.
+set (CMAKE_FIND_ROOT_PATH ${CMAKE_IOS_DEVELOPER_ROOT}
+ ${CMAKE_OSX_SYSROOT}
+ ${CMAKE_PREFIX_PATH}
+ CACHE string "iOS find search path root" FORCE
+)
+
+# Default to searching for frameworks first.
+
+set (CMAKE_FIND_FRAMEWORK FIRST)
+
+# Set up the default search directories for frameworks.
+
+set (CMAKE_SYSTEM_FRAMEWORK_PATH
+ ${CMAKE_OSX_SYSROOT}/System/Library/Frameworks
+ ${CMAKE_OSX_SYSROOT}/System/Library/PrivateFrameworks
+ ${CMAKE_OSX_SYSROOT}/Developer/Library/Frameworks
+)
+
+# Only search the specified iOS SDK, not the remainder of the host filesystem.
+
+set (CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
+set (CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
diff --git a/3rdparty/plibsys/platforms/ios-clang/platform.cmake b/3rdparty/plibsys/platforms/ios-clang/platform.cmake
new file mode 100644
index 0000000..38771be
--- /dev/null
+++ b/3rdparty/plibsys/platforms/ios-clang/platform.cmake
@@ -0,0 +1,9 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL mach)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/irix64-gcc/platform.cmake b/3rdparty/plibsys/platforms/irix64-gcc/platform.cmake
new file mode 100644
index 0000000..1a7e78e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/irix64-gcc/platform.cmake
@@ -0,0 +1,13 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_PTHREADS
+ -D_POSIX_C_SOURCE=199506L
+ -D_BSD_TYPES
+)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES pthread)
diff --git a/3rdparty/plibsys/platforms/irix64-mipspro/platform.cmake b/3rdparty/plibsys/platforms/irix64-mipspro/platform.cmake
new file mode 100644
index 0000000..1a7e78e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/irix64-mipspro/platform.cmake
@@ -0,0 +1,13 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_PTHREADS
+ -D_POSIX_C_SOURCE=199506L
+ -D_BSD_TYPES
+)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES pthread)
diff --git a/3rdparty/plibsys/platforms/linux-clang/platform.cmake b/3rdparty/plibsys/platforms/linux-clang/platform.cmake
new file mode 100644
index 0000000..f2067c4
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-clang/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/linux-cray/platform.cmake b/3rdparty/plibsys/platforms/linux-cray/platform.cmake
new file mode 100644
index 0000000..fc125c0
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-cray/platform.cmake
@@ -0,0 +1,18 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES rt dl)
+set (PLIBSYS_PLATFORM_CFLAGS "-h threadsafe -h nomessage=186 -O1")
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_GNU_SOURCE
+)
+
+message ("
+ Cray compiler has an optimization bug on SHA-1 algorithm
+ when using optimization levels higher than O1. Thus
+ O1 is enabled by default.
+ ")
diff --git a/3rdparty/plibsys/platforms/linux-gcc/platform.cmake b/3rdparty/plibsys/platforms/linux-gcc/platform.cmake
new file mode 100644
index 0000000..f2067c4
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/linux-icc/platform.cmake b/3rdparty/plibsys/platforms/linux-icc/platform.cmake
new file mode 100644
index 0000000..edf371a
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-icc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl imf svml irng intlc)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/linux-pgi/platform.cmake b/3rdparty/plibsys/platforms/linux-pgi/platform.cmake
new file mode 100644
index 0000000..defde72
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-pgi/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/linux-xlc/platform.cmake b/3rdparty/plibsys/platforms/linux-xlc/platform.cmake
new file mode 100644
index 0000000..c1b573f
--- /dev/null
+++ b/3rdparty/plibsys/platforms/linux-xlc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/msys-clang/platform.cmake b/3rdparty/plibsys/platforms/msys-clang/platform.cmake
new file mode 100644
index 0000000..53796bd
--- /dev/null
+++ b/3rdparty/plibsys/platforms/msys-clang/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/msys-gcc/platform.cmake b/3rdparty/plibsys/platforms/msys-gcc/platform.cmake
new file mode 100644
index 0000000..53796bd
--- /dev/null
+++ b/3rdparty/plibsys/platforms/msys-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_GNU_SOURCE
+)
diff --git a/3rdparty/plibsys/platforms/netbsd-clang/platform.cmake b/3rdparty/plibsys/platforms/netbsd-clang/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/netbsd-clang/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/netbsd-gcc/platform.cmake b/3rdparty/plibsys/platforms/netbsd-gcc/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/netbsd-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/openbsd-clang/platform.cmake b/3rdparty/plibsys/platforms/openbsd-clang/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/openbsd-clang/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/openbsd-gcc/platform.cmake b/3rdparty/plibsys/platforms/openbsd-gcc/platform.cmake
new file mode 100644
index 0000000..975c5df
--- /dev/null
+++ b/3rdparty/plibsys/platforms/openbsd-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/os2-gcc/platform.cmake b/3rdparty/plibsys/platforms/os2-gcc/platform.cmake
new file mode 100644
index 0000000..258bbb5
--- /dev/null
+++ b/3rdparty/plibsys/platforms/os2-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL os2)
+set (PLIBSYS_IPC_MODEL os2)
+set (PLIBSYS_TIME_PROFILER_MODEL os2)
+set (PLIBSYS_DIR_MODEL os2)
+set (PLIBSYS_RWLOCK_MODEL general)
+set (PLIBSYS_LIBRARYLOADER_MODEL os2)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES os2386)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/qnx-qcc/platform.cmake b/3rdparty/plibsys/platforms/qnx-qcc/platform.cmake
new file mode 100644
index 0000000..de75bc2
--- /dev/null
+++ b/3rdparty/plibsys/platforms/qnx-qcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_POSIX_THREAD_SAFE_FUNCTIONS
+)
diff --git a/3rdparty/plibsys/platforms/scosv-gcc/platform.cmake b/3rdparty/plibsys/platforms/scosv-gcc/platform.cmake
new file mode 100644
index 0000000..d1a2d8d
--- /dev/null
+++ b/3rdparty/plibsys/platforms/scosv-gcc/platform.cmake
@@ -0,0 +1,27 @@
+include (${PROJECT_SOURCE_DIR}/platforms/common/SCOSV.cmake)
+
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_SIMPLE_R
+)
+
+if (CMAKE_SYSTEM_VERSION VERSION_LESS "5.0")
+ set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket nsl gthreads malloc)
+
+ plibsys_scosv_print_threading_message ()
+else()
+ set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket nsl -pthread)
+ set (PLIBSYS_PLATFORM_CFLAGS -pthread)
+
+ message ("
+ SCO OpenServer 6 was not actually tested with GCC
+ compiler. This build may or may not work properly.
+ Consider running tests before usage.
+ ")
+endif()
diff --git a/3rdparty/plibsys/platforms/sunos-gcc/platform.cmake b/3rdparty/plibsys/platforms/sunos-gcc/platform.cmake
new file mode 100644
index 0000000..a980d6e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/sunos-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL solaris)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL solaris)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket nsl rt)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_POSIX_PTHREAD_SEMANTICS
+)
diff --git a/3rdparty/plibsys/platforms/sunos-sunpro/platform.cmake b/3rdparty/plibsys/platforms/sunos-sunpro/platform.cmake
new file mode 100644
index 0000000..a980d6e
--- /dev/null
+++ b/3rdparty/plibsys/platforms/sunos-sunpro/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL solaris)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL solaris)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket nsl rt)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_POSIX_PTHREAD_SEMANTICS
+)
diff --git a/3rdparty/plibsys/platforms/syllable-gcc/platform.cmake b/3rdparty/plibsys/platforms/syllable-gcc/platform.cmake
new file mode 100644
index 0000000..a61e1e0
--- /dev/null
+++ b/3rdparty/plibsys/platforms/syllable-gcc/platform.cmake
@@ -0,0 +1,12 @@
+set (PLIBSYS_THREAD_MODEL atheos)
+set (PLIBSYS_IPC_MODEL none)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_RWLOCK_MODEL general)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES rt dl)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/tru64-compaq/platform.cmake b/3rdparty/plibsys/platforms/tru64-compaq/platform.cmake
new file mode 100644
index 0000000..693ba57
--- /dev/null
+++ b/3rdparty/plibsys/platforms/tru64-compaq/platform.cmake
@@ -0,0 +1,17 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_ATOMIC_MODEL decc)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_XOPEN_SOURCE_EXTENDED=1
+ -D_POSIX_PII_SOCKET
+ -D_OSF_SOURCE
+ -D_XOPEN_SOURCE=500
+ -D_POSIX_SOURCE=199506L
+)
diff --git a/3rdparty/plibsys/platforms/tru64-gcc/platform.cmake b/3rdparty/plibsys/platforms/tru64-gcc/platform.cmake
new file mode 100644
index 0000000..ecacc1d
--- /dev/null
+++ b/3rdparty/plibsys/platforms/tru64-gcc/platform.cmake
@@ -0,0 +1,16 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL posix)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES -pthread rt)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+ -D_XOPEN_SOURCE_EXTENDED=1
+ -D_POSIX_PII_SOCKET
+ -D_OSF_SOURCE
+ -D_XOPEN_SOURCE=500
+ -D_POSIX_SOURCE=199506L
+)
diff --git a/3rdparty/plibsys/platforms/unixware-gcc/platform.cmake b/3rdparty/plibsys/platforms/unixware-gcc/platform.cmake
new file mode 100644
index 0000000..96ca256
--- /dev/null
+++ b/3rdparty/plibsys/platforms/unixware-gcc/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL posix)
+set (PLIBSYS_IPC_MODEL sysv)
+set (PLIBSYS_TIME_PROFILER_MODEL posix)
+set (PLIBSYS_DIR_MODEL posix)
+set (PLIBSYS_LIBRARYLOADER_MODEL posix)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES socket nsl -pthread)
+
+set (PLIBSYS_PLATFORM_DEFINES
+ -D_REENTRANT
+)
diff --git a/3rdparty/plibsys/platforms/vms-general/README.md b/3rdparty/plibsys/platforms/vms-general/README.md
new file mode 100644
index 0000000..9bbfc85
--- /dev/null
+++ b/3rdparty/plibsys/platforms/vms-general/README.md
@@ -0,0 +1,49 @@
+## OpenVMS
+
+This directory contains mainly a build script for OpenVMS.
+
+## Requirements
+
+* OpenVMS 8.4 or later (Alpha or IA64), VAX is not supported
+* DEC CC 6.5 or later
+* DEC CXX 7.1 or later (for tests only)
+
+## Building
+
+Library can be built with 32-bit or 64-bit pointers. By default 64-bit
+pointers are used. Use `32` parameter to switch behaviour.
+
+Test suit is optional and is not built by default. Use `TESTS` parameter to
+enable tests.
+
+There are other build parametes available, plese look inside the
+`build_vms.com` (a DCL-based script) to see the detailed description for
+all of them.
+
+Object library (.OLB) and shareable image (.EXE) are built. An object
+library acts like a widely-known static library, and a shareable image
+acts like a shared library. All libraries and tests are placed inside the
+`[.ALPHA]` or `[.IA64]` directory depending on a host architecture.
+
+Do not forget to define a logical name for a shareable image of the library
+before running programs which use it:
+
+`DEFINE PLIBSYS SYS$SYSROOT:[BUILD_DIR]PLIBSYS.EXE`
+
+You can also place an image into the `SYS$SHARE` directory instead of
+defining a logical name.
+
+Here are some examples of the build commands:
+
+* `@build_vms.com` builds only the libraries (64-bit pointers).
+* `@build_vms.com 32 TESTS` builds libraries (32-bit pointers) and all
+the tests.
+* `@build_vms.com NOLIB RUN_TESTS` only runs already built tests.
+* `@build_vms.com CLEAN` cleans all the files produced during a build.
+
+## More
+
+OpenVMS can mangle long (> 31 characters) symbol names in a compiled object
+to fit the limit. Sometimes it is useful to know the mangled name of a
+symbol. Use the `vms_shorten_symbol.c` program to get a mangled name. See
+details inside.
diff --git a/3rdparty/plibsys/platforms/vms-general/build_vms.com b/3rdparty/plibsys/platforms/vms-general/build_vms.com
new file mode 100644
index 0000000..ce5e95c
--- /dev/null
+++ b/3rdparty/plibsys/platforms/vms-general/build_vms.com
@@ -0,0 +1,616 @@
+$!
+$! Copyright 2011, Richard Levitte <richard@levitte.org>
+$! Copyright 2014, John Malmberg <wb8tyw@qsl.net>
+$! Copyright 2016-2018, Alexander Saprykin <saprykin.spb@gmail.com>
+$!
+$! Permission to use, copy, modify, and/or distribute this software for any
+$! purpose with or without fee is hereby granted, provided that the above
+$! copyright notice and this permission notice appear in all copies.
+$!
+$! THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+$! WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+$! MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+$! ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+$! WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+$! ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
+$! OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+$!
+$!===========================================================================
+$! Command-line options:
+$!
+$! 32 Compile with 32-bit pointers.
+$! BIGENDIAN Compile for a big endian host.
+$! CCQUAL=x Add "x" to the C compiler qualifiers.
+$! DEBUG Build in debug mode.
+$! CLEAN Only perform clean after the previous build.
+$! TESTS=(x) Build library tests. Comma separated test names or leave
+$! empty to build all the tests.
+$! Example 1 (curtain tests): TESTS=(pmem,puthread)
+$! Example 2 (all tests): TESTS
+$! RUN_TESTS Runs all tests.
+$! NOLIB Skip library buidling. Useful when you want to rebuild
+$! particular tests.
+$!===========================================================================
+$!
+$!
+$! Save the original default dev:[dir], and arrange for its restoration
+$! at exit.
+$!---------------------------------------------------------------------
+$ orig_def = f$environment("DEFAULT")
+$ on error then goto common_exit
+$ on severe_error then goto common_exit
+$ on control_y then goto common_exit
+$!
+$ ctrl_y = 1556
+$ proc = f$environment("PROCEDURE")
+$ proc_fid = f$file_attributes(proc, "FID")
+$ proc_dev = f$parse(proc, , , "DEVICE")
+$ proc_dir = f$parse(proc, , , "DIRECTORY")
+$ proc_name = f$parse(proc, , , "NAME")
+$ proc_type = f$parse(proc, , , "TYPE")
+$ proc_dev_dir = proc_dev + proc_dir
+$!
+$! Have to manually parse the device for a search list.
+$! Can not use the f$parse() as it will return the first name
+$! in the search list.
+$!
+$ orig_def_dev = f$element(0, ":", orig_def) + ":"
+$ if orig_def_dev .eqs. "::" then orig_def_dev = "sys$disk:"
+$ test_proc = orig_def_dev + proc_dir + proc_name + proc_type
+$!
+$! If we can find this file using the default directory
+$! then we know that we should use the original device from the
+$! default directory which could be a search list.
+$!
+$ test_proc_fid = f$file_attributes(test_proc, "FID")
+$!
+$ if (test_proc_fid .eq. proc_fid)
+$ then
+$ proc_dev_dir = orig_def_dev + proc_dir
+$ endif
+$!
+$! Verbose output message stuff. Define symbol to "write sys$output".
+$! vo_c - verbose output for compile
+$!
+$ vo_c := "write sys$output"
+$!
+$! Determine the main distribution directory ("[--]") in an
+$! ODS5-tolerant (case-insensitive) way. (We do assume that the only
+$! "]" or ">" is the one at the end.)
+$!
+$! Some non-US VMS installations report ">" for the directory delimiter
+$! so do not assume that it is "]".
+$!
+$ orig_def_len = f$length(orig_def)
+$ delim = f$extract(orig_def_len - 1, 1, orig_def)
+$!
+$ set default 'proc_dev_dir'
+$ set default [--.src]
+$ base_src_dir = f$environment("default")
+$ set default 'proc_dev_dir'
+$!
+$! Define the architecture-specific destination directory name
+$! -----------------------------------------------------------
+$!
+$ if (f$getsyi("HW_MODEL") .lt. 1024)
+$ then
+$ 'vo_c' "%PLIBSYS-F-NOTSUP, VAX platform is not supported, sorry :("
+$ goto common_exit
+$ else
+$ arch_name = ""
+$ arch_name = arch_name + f$edit(f$getsyi("ARCH_NAME"), "UPCASE")
+$!
+$ if (arch_name .eqs. "") then arch_name = "UNK"
+$!
+$ node_swvers = f$getsyi("node_swvers")
+$ version_patch = f$extract(1, f$length(node_swvers), node_swvers)
+$ maj_ver = f$element(0, ".", version_patch)
+$ min_ver_patch = f$element(1, ".", version_patch)
+$ min_ver = f$element(0, "-", min_ver_patch)
+$ patch = f$element(1, "-", min_ver_patch)
+$!
+$ if maj_ver .lts. "8" .or. min_ver .lts. "4"
+$ then
+$ 'vo_c' "%PLIBSYS-F-NOTSUP, only OpenVMS 8.4 and above are supported, sorry :("
+$ goto common_exit
+$ endif
+$ endif
+$!
+$ objdir = proc_dev_dir - delim + ".''arch_name'" + delim
+$!
+$! Parse input arguments
+$! ---------------------
+$! Allow arguments to be grouped together with comma or separated by spaces
+$! Do no know if we will need more than 8.
+$ args = "," + p1 + "," + p2 + "," + p3 + "," + p4 + ","
+$ args = args + p5 + "," + p6 + "," + p7 + "," + p8 + ","
+$!
+$! Provide lower case version to simplify parsing.
+$ args_lower = f$edit(args, "LOWERCASE,COLLAPSE")
+$!
+$ args_len = f$length(args)
+$ args_lower_len = f$length(args_lower)
+$!
+$ if f$locate(",clean,", args_lower) .lt. args_lower_len
+$ then
+$ 'vo_c' "Cleaning up previous build..."
+$ set default 'proc_dev_dir'
+$!
+$ if f$search("''arch_name'.DIR") .nes. ""
+$ then
+$ set prot=w:d []'arch_name'.DIR;*
+$ delete/tree [.'arch_name'...]*.*;*
+$ delete []'arch_name'.DIR;*
+$ endif
+$!
+$ goto common_exit
+$ endif
+$!
+$ build_64 = 1
+$ if f$locate(",32,", args_lower) .lt. args_lower_len
+$ then
+$ build_64 = 0
+$ endif
+$!
+$ big_endian = 0
+$ if f$locate(",bigendian,", args_lower) .lt. args_lower_len
+$ then
+$ big_endian = 1
+$ endif
+$!
+$ cc_extra = ""
+$ args_loc = f$locate(",ccqual=", args_lower)
+$ if args_loc .lt. args_lower_len
+$ then
+$ arg = f$extract(args_loc + 1, args_lower_len, args_lower)
+$ arg_val = f$element(0, ",", arg)
+$ cc_extra = f$element(1, "=", arg_val)
+$ endif
+$!
+$ is_debug = 0
+$ if f$locate(",debug,", args_lower) .lt. args_lower_len
+$ then
+$ is_debug = 1
+$ endif
+$!
+$ is_tests = 0
+$ test_list = ""
+$ if f$locate(",tests,", args_lower) .lt. args_lower_len
+$ then
+$ is_tests = 1
+$ else
+$ args_loc = f$locate(",tests=(", args_lower)
+$ if args_loc .lt. args_lower_len
+$ then
+$ is_tests = 1
+$ arg = f$extract(args_loc + 1, args_lower_len, args_lower)
+$ arg_val = f$element(0, ")", arg)
+$ test_list_val = f$element(1, "=", arg_val) - "(" - ")"
+$ test_list_val = f$edit(test_list_val, "COLLAPSE")
+$ test_list_counter = 0
+$
+$ test_list_loop:
+$ next_test_val = f$element (test_list_counter, ",", test_list_val)
+$ if next_test_val .nes. "" .and. next_test_val .nes. ","
+$ then
+$ test_list = test_list + next_test_val + " "
+$ test_list_counter = test_list_counter + 1
+$ goto test_list_loop
+$ endif
+$ endif
+$ endif
+$!
+$ run_tests = 0
+$ if f$locate(",run_tests,", args_lower) .lt. args_lower_len
+$ then
+$ run_tests = 1
+$ endif
+$!
+$! Prepare build directory
+$! -----------------------
+$!
+$! When building on a search list, need to do a create to make sure that
+$! the output directory exists, since the clean procedure tries to delete
+$! it.
+$!
+$ if f$search("''proc_dev_dir'''arch_name'.DIR") .eqs. ""
+$ then
+$ create/dir 'objdir'/prot=o:rwed
+$ endif
+$!
+$ set default 'objdir'
+$ if f$search("CXX_REPOSITORY.DIR") .nes. ""
+$ then
+$ set prot=w:d []CXX_REPOSITORY.DIR;*
+$ delete/tree [.CXX_REPOSITORY...]*.*;*
+$ delete []CXX_REPOSITORY.DIR;*
+$ endif
+$!
+$ if f$locate(",nolib,", args_lower) .lt. args_lower_len
+$ then
+$ goto build_tests
+$ endif
+$!
+$! Generate platform-specific config file
+$! --------------------------------------
+$!
+$ if f$search("plibsysconfig.h") .nes. "" then delete plibsysconfig.h;*
+$!
+$! Get the version number
+$! ----------------------
+$!
+$ i = 0
+$ open/read/error=version_loop_end vhf [---]CMakeLists.txt
+$ version_loop:
+$ read/end=version_loop_end vhf line_in
+$!
+$ if line_in .eqs. "" then goto version_loop
+$!
+$ if f$locate("set (PLIBSYS_VERSION_MAJOR ", line_in) .eq. 0
+$ then
+$ plibsys_vmajor = f$element(2, " ", line_in) - ")"
+$ i = i + 1
+$ endif
+$!
+$ if f$locate("set (PLIBSYS_VERSION_MINOR ", line_in) .eq. 0
+$ then
+$ plibsys_vminor = f$element(2, " ", line_in) - ")"
+$ i = i + 1
+$ endif
+$!
+$ if f$locate("set (PLIBSYS_VERSION_PATCH ", line_in) .eq. 0
+$ then
+$ plibsys_vpatch = f$element(2, " ", line_in) - ")"
+$ i = i + 1
+$ endif
+$!
+$ if f$locate("set (PLIBSYS_VERSION_NUM ", line_in) .eq. 0
+$ then
+$ plibsys_vnum = f$element(2, " ", line_in) - ")"
+$ i = i + 1
+$ endif
+$!
+$ if i .lt 4 then goto version_loop
+$ version_loop_end:
+$ close vhf
+$!
+$! Write config file
+$! -----------------
+$!
+$ open/write/error=config_write_end chf plibsysconfig.h
+$ write chf "#ifndef PLIBSYS_HEADER_PLIBSYSCONFIG_H"
+$ write chf "#define PLIBSYS_HEADER_PLIBSYSCONFIG_H"
+$ write chf ""
+$ write chf "#define PLIBSYS_VERSION_MAJOR ''plibsys_vmajor'"
+$ write chf "#define PLIBSYS_VERSION_MINOR ''plibsys_vminor'"
+$ write chf "#define PLIBSYS_VERSION_PATCH ''plibsys_vpatch'"
+$ write chf "#define PLIBSYS_VERSION_STR ""''plibsys_vmajor'.''plibsys_vminor'.''plibsys_vpatch'"""
+$ write chf "#define PLIBSYS_VERSION ''plibsys_vnum'"
+$ write chf ""
+$ write chf "#define PLIBSYS_SIZEOF_SAFAMILY_T 1"
+$ write chf ""
+$ write chf "#include <pmacros.h>"
+$ write chf ""
+$ write chf "#include <float.h>"
+$ write chf "#include <limits.h>"
+$ write chf ""
+$ write chf "P_BEGIN_DECLS"
+$ write chf ""
+$ write chf "#define P_MINFLOAT FLT_MIN"
+$ write chf "#define P_MAXFLOAT FLT_MAX"
+$ write chf "#define P_MINDOUBLE DBL_MIN"
+$ write chf "#define P_MAXDOUBLE DBL_MAX"
+$ write chf "#define P_MINSHORT SHRT_MIN"
+$ write chf "#define P_MAXSHORT SHRT_MAX"
+$ write chf "#define P_MAXUSHORT USHRT_MAX"
+$ write chf "#define P_MININT INT_MIN"
+$ write chf "#define P_MAXINT INT_MAX"
+$ write chf "#define P_MAXUINT UINT_MAX"
+$ write chf "#define P_MINLONG LONG_MIN"
+$ write chf "#define P_MAXLONG LONG_MAX"
+$ write chf "#define P_MAXULONG ULONG_MAX"
+$ write chf ""
+$ write chf "#define PLIBSYS_MMAP_HAS_MAP_ANONYMOUS"
+$ write chf "#define PLIBSYS_HAS_NANOSLEEP"
+$ write chf "#define PLIBSYS_HAS_GETADDRINFO"
+$ write chf "#define PLIBSYS_HAS_POSIX_SCHEDULING"
+$ write chf "#define PLIBSYS_HAS_POSIX_STACKSIZE"
+$ write chf "#define PLIBSYS_HAS_SOCKADDR_STORAGE"
+$ write chf "#define PLIBSYS_SOCKADDR_HAS_SA_LEN"
+$ write chf "#define PLIBSYS_SOCKADDR_IN6_HAS_SCOPEID"
+$ write chf "#define PLIBSYS_SOCKADDR_IN6_HAS_FLOWINFO"
+$ write chf ""
+$!
+$ if build_64 .eqs. "1"
+$ then
+$ write chf "#define PLIBSYS_SIZEOF_VOID_P 8"
+$ write chf "#define PLIBSYS_SIZEOF_SIZE_T 8"
+$ else
+$ write chf "#define PLIBSYS_SIZEOF_VOID_P 4"
+$ write chf "#define PLIBSYS_SIZEOF_SIZE_T 4"
+$ endif
+$!
+$ write chf "#define PLIBSYS_SIZEOF_LONG 4"
+$ write chf ""
+$!
+$ if big_endian .eqs. "1"
+$ then
+$ write chf "#define P_BYTE_ORDER P_BIG_ENDIAN"
+$ else
+$ write chf "#define P_BYTE_ORDER P_LITTLE_ENDIAN"
+$ endif
+$!
+$ write chf ""
+$ write chf "P_END_DECLS"
+$ write chf ""
+$ write chf "#endif /* PLIBSYS_HEADER_PLIBSYSCONFIG_H */"
+$ config_write_end:
+$ close chf
+$!
+$! Prepare sources for compilation
+$! -------------------------------
+$!
+$ cc_link_params = ""
+$ cc_params = "/NAMES=(AS_IS,SHORTENED)"
+$ cc_params = cc_params + "/DEFINE=(PLIBSYS_COMPILATION,_REENTRANT,_POSIX_EXIT)"
+$ cc_params = cc_params + "/INCLUDE_DIRECTORY=(''objdir',''base_src_dir')"
+$ cc_params = cc_params + "/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS"
+$!
+$ if build_64 .eqs. "1"
+$ then
+$ cc_params = cc_params + "/POINTER_SIZE=64"
+$ else
+$ cc_params = cc_params + "/POINTER_SIZE=32"
+$ endif
+$!
+$ if cc_extra .nes. ""
+$ then
+$ cc_params = cc_params + " " + cc_extra
+$ endif
+$!
+$ if is_debug .eqs. "1"
+$ then
+$ cc_params = cc_params + "/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL"
+$ cc_link_params = "/DEBUG/TRACEBACK"
+$ else
+$ cc_link_params = "/NODEBUG/NOTRACEBACK"
+$ endif
+$!
+$ plibsys_src = "patomic-decc.c pcondvariable-posix.c pcryptohash-gost3411.c pcryptohash-md5.c"
+$ plibsys_src = plibsys_src + " pcryptohash-sha1.c pcryptohash-sha2-256.c pcryptohash-sha2-512.c"
+$ plibsys_src = plibsys_src + " pcryptohash-sha3.c pcryptohash.c pdir-posix.c pdir.c"
+$ plibsys_src = plibsys_src + " perror.c pfile.c phashtable.c pinifile.c pipc.c plibraryloader-posix.c"
+$ plibsys_src = plibsys_src + " plist.c pmain.c pmem.c pmutex-posix.c pprocess.c prwlock-posix.c"
+$ plibsys_src = plibsys_src + " psemaphore-posix.c pshm-posix.c pshmbuffer.c psocket.c"
+$ plibsys_src = plibsys_src + " psocketaddress.c pspinlock-decc.c pstring.c psysclose-unix.c"
+$ plibsys_src = plibsys_src + " ptimeprofiler-posix.c ptimeprofiler.c ptree-avl.c ptree-bst.c"
+$ plibsys_src = plibsys_src + " ptree-rb.c ptree.c puthread-posix.c puthread.c"
+$!
+$! Inform about building
+$! ---------------------
+$!
+$ if build_64 .eqs. "1"
+$ then
+$ 'vo_c' "Building for ''arch_name' (64-bit)"
+$ else
+$ 'vo_c' "Building for ''arch_name' (32-bit)"
+$ endif
+$!
+$! Compile library modules
+$! -----------------------
+$!
+$ 'vo_c' "Compiling object modules..."
+$ src_counter = 0
+$ plibsys_src = f$edit(plibsys_src, "COMPRESS")
+$ plibsys_objs = ""
+$!
+$ src_loop:
+$ next_src = f$element (src_counter, " ", plibsys_src)
+$ if next_src .nes. "" .and. next_src .nes. " "
+$ then
+$ 'vo_c' "[CC] ''next_src'"
+$ cc [---.src]'next_src' 'cc_params'
+$!
+$ src_counter = src_counter + 1
+$!
+$ obj_file = f$extract (0, f$length (next_src) - 1, next_src) + "obj"
+$ plibsys_objs = plibsys_objs + "''obj_file',"
+$ purge 'obj_file'
+$!
+$ goto src_loop
+$ endif
+$!
+$ plibsys_objs = f$extract (0, f$length (plibsys_objs) - 1, plibsys_objs)
+$!
+$! Create library
+$! --------------
+$!
+$ 'vo_c' "Creating object library..."
+$ library/CREATE/INSERT/REPLACE /LIST=PLIBSYS.LIS PLIBSYS.OLB 'plibsys_objs'
+$ library/COMPRESS PLIBSYS.OLB
+$ purge PLIBSYS.OLB
+$ purge PLIBSYS.LIS
+$!
+$ 'vo_c' "Creating shared library..."
+$ link/SHAREABLE=PLIBSYS.EXE /MAP=PLIBSYS.MAP 'cc_link_params' 'plibsys_objs', [-]plibsys.opt/OPTION
+$ purge PLIBSYS.EXE
+$ purge PLIBSYS.MAP
+$!
+$! Testing area
+$! ------------
+$!
+$ build_tests:
+$ test_list_full = "patomic pcondvariable pcryptohash pdir"
+$ test_list_full = test_list_full + " perror pfile phashtable pinifile plibraryloader plist"
+$ test_list_full = test_list_full + " pmacros pmain pmem pmutex pprocess prwlock psemaphore"
+$ test_list_full = test_list_full + " pshm pshmbuffer psocket psocketaddress pspinlock pstdarg"
+$ test_list_full = test_list_full + " pstring ptimeprofiler ptree ptypes puthread"
+$!
+$ if is_tests .eqs. "0"
+$ then
+$ goto build_done
+$ endif
+$!
+$! Write link options file
+$! -----------------------
+$!
+$ if f$search("plibsys_link.opt") .nes. "" then delete plibsys_link.opt;*
+$!
+$ open/write/error=link_write_end lhf plibsys_link.opt
+$ write lhf "''objdir'PLIBSYS.EXE/SHARE"
+$ write lhf ""
+$ link_write_end:
+$ close lhf
+$!
+$! Compile tests
+$! -------------------------
+$!
+$ if test_list .nes. ""
+$ then
+$ plibsys_tests = f$edit(test_list, "TRIM")
+$ else
+$ plibsys_tests = test_list_full
+$ endif
+$!
+$ 'vo_c' "Compiling test executables..."
+$ test_counter = 0
+$ plibsys_tests = f$edit(plibsys_tests, "COMPRESS")
+$!
+$ cxx_params = "/INCLUDE=(''objdir',''base_src_dir')"
+$ cxx_params = cxx_params + "/DEFINE=(__USE_STD_IOSTREAM)/NAMES=(AS_IS, SHORTENED)"
+$ cxx_params = cxx_params + "/FLOAT=IEEE/IEEE_MODE=DENORM_RESULTS"
+$!
+$ if build_64 .eqs. "1"
+$ then
+$ set noon
+$ define/user/nolog sys$output NL:
+$ define/user/nolog sys$error NL:
+$ cxx/POINTER_SIZE=64=ARGV NL:
+$!
+$ if ($STATUS .and. %X0FFF0000) .eq. %X00030000
+$ then
+$!
+$! If we got here, it means DCL complained like this:
+$! %DCL-W-NOVALU, value not allowed - remove value specification
+$! \64=\
+$!
+$! If the compiler was run, logicals defined in /USER would
+$! have been deassigned automatically. However, when DCL
+$! complains, they aren't, so we do it here (it might be
+$! unnecessary, but just in case there will be another error
+$! message further on that we don't want to miss).
+$!
+$ deassign/user/nolog sys$error
+$ deassign/user/nolog sys$output
+$ cxx_params = cxx_params + "/POINTER_SIZE=64"
+$ else
+$ cxx_params = cxx_params + "/POINTER_SIZE=64=ARGV"
+$ endif
+$ else
+$ cxx_params = cxx_params + "/POINTER_SIZE=32"
+$ endif
+$!
+$ if is_debug .eqs. "1"
+$ then
+$ cxx_params = cxx_params + "/DEBUG/NOOPTIMIZE/LIST/SHOW=ALL"
+$ endif
+$!
+$ test_loop:
+$ next_test = f$element (test_counter, " ", plibsys_tests)
+$ if next_test .nes. "" .and. next_test .nes. " "
+$ then
+$ next_test = next_test + "_test"
+$ 'vo_c' "[CXX ] ''next_test'.cpp"
+$ cxx [---.tests]'next_test'.cpp 'cxx_params'
+$!
+$ 'vo_c' "[CXXLINK] ''next_test'.obj"
+$ cxxlink 'next_test'.obj,'objdir'plibsys_link.opt/OPTION /THREADS_ENABLE
+$!
+$ if f$search("CXX_REPOSITORY.DIR") .nes. ""
+$ then
+$ set prot=w:d []CXX_REPOSITORY.DIR;*
+$ delete/tree [.CXX_REPOSITORY...]*.*;*
+$ delete []CXX_REPOSITORY.DIR;*
+$ endif
+$!
+$ purge 'next_test'.obj
+$ purge 'next_test'.exe
+$!
+$ test_counter = test_counter + 1
+$ goto test_loop
+$ endif
+$!
+$ build_done:
+$ 'vo_c' "Build done."
+$!
+$! Run unit tests
+$! --------------
+$!
+$ if run_tests .eqs. "0"
+$ then
+$ if is_tests .eqs. "1"
+$ then
+$ 'vo_c' "To run tests invoke: @build_vms.com NOLIB RUN_TESTS"
+$ endif
+$ goto common_exit
+$ endif
+$!
+$ 'vo_c' "Running tests..."
+$ test_counter = 0
+$ tests_passed = 0
+$!
+$ run_loop:
+$ next_test = f$element (test_counter, " ", test_list_full)
+$ if next_test .nes. "" .and. next_test .nes. " "
+$ then
+$ if f$search("''next_test'_test.exe") .eqs. ""
+$ then
+$ 'vo_c' "[SKIP] Test not found: ''next_test'"
+$ goto run_loop_next
+$ endif
+$!
+$ 'vo_c' "[RUN ] ''next_test'"
+$!
+$ define/user/nolog sys$error NL:
+$ define/user/nolog sys$output NL:
+$ define/user/nolog plibsys 'objdir'PLIBSYS.EXE
+$ define/user/nolog test_imgdir 'objdir'
+$!
+$! Disable error cheking for the test binary
+$!
+$ set noon
+$!
+$ xrun := $test_imgdir:'next_test'_test.exe
+$ if next_test .eqs. "plibraryloader"
+$ then
+$ xrun 'objdir'PLIBSYS.EXE
+$ else
+$ xrun
+$ endif
+$!
+$ if $STATUS .eqs. "%X00000001"
+$ then
+$ 'vo_c' "[PASS] Test passed: ''next_test'"
+$ tests_passed = tests_passed + 1
+$ else
+$ 'vo_c' "[FAIL] *** Test failed: ''next_test'"
+$ endif
+$!
+$ set on
+$!
+$ run_loop_next:
+$ test_counter = test_counter + 1
+$ goto run_loop
+$ endif
+$!
+$ 'vo_c' "Tests passed: ''tests_passed'/''test_counter'"
+$!
+$! In case of error during the last test
+$ deassign/user/nolog sys$error
+$ deassign/user/nolog sys$output
+$ deassign/user/nolog plibsys
+$ deassign/user/nolog test_imgdir
+$!
+$ common_exit:
+$ set default 'orig_def'
+$ exit
diff --git a/3rdparty/plibsys/platforms/vms-general/plibsys.opt b/3rdparty/plibsys/platforms/vms-general/plibsys.opt
new file mode 100644
index 0000000..408b884
--- /dev/null
+++ b/3rdparty/plibsys/platforms/vms-general/plibsys.opt
@@ -0,0 +1,540 @@
+GSMATCH=LEQUAL,3,0
+IDENTIFICATION="plibsys"
+CASE_SENSITIVE=YES
+!
+! patomic.h
+!
+SYMBOL_VECTOR=(p_atomic_int_get=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_GET/p_atomic_int_get=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_set=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_SET/p_atomic_int_set=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_inc=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_INC/p_atomic_int_inc=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_dec_and_test=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_DEC_AND_TEST/p_atomic_int_dec_and_test=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_compare_an2fhrots$=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_COMPARE_AN2UA3PBG$/p_atomic_int_compare_an2fhrots$=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_add=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_ADD/p_atomic_int_add=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_and=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_AND/p_atomic_int_and=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_or=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_OR/p_atomic_int_or=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_int_xor=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_INT_XOR/p_atomic_int_xor=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_get=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_GET/p_atomic_pointer_get=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_set=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_SET/p_atomic_pointer_set=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_compar0usq95l$=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_COMPAR19ERBSM$/p_atomic_pointer_compar0usq95l$=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_add=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_ADD/p_atomic_pointer_add=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_and=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_AND/p_atomic_pointer_and=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_or=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_OR/p_atomic_pointer_or=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_pointer_xor=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_POINTER_XOR/p_atomic_pointer_xor=PROCEDURE)
+SYMBOL_VECTOR=(p_atomic_is_lock_free=PROCEDURE)
+SYMBOL_VECTOR=(P_ATOMIC_IS_LOCK_FREE/p_atomic_is_lock_free=PROCEDURE)
+!
+! pcondvariable.h
+!
+SYMBOL_VECTOR=(p_cond_variable_new=PROCEDURE)
+SYMBOL_VECTOR=(P_COND_VARIABLE_NEW/p_cond_variable_new=PROCEDURE)
+SYMBOL_VECTOR=(p_cond_variable_free=PROCEDURE)
+SYMBOL_VECTOR=(P_COND_VARIABLE_FREE/p_cond_variable_free=PROCEDURE)
+SYMBOL_VECTOR=(p_cond_variable_wait=PROCEDURE)
+SYMBOL_VECTOR=(P_COND_VARIABLE_WAIT/p_cond_variable_wait=PROCEDURE)
+SYMBOL_VECTOR=(p_cond_variable_signal=PROCEDURE)
+SYMBOL_VECTOR=(P_COND_VARIABLE_SIGNAL/p_cond_variable_signal=PROCEDURE)
+SYMBOL_VECTOR=(p_cond_variable_broadcast=PROCEDURE)
+SYMBOL_VECTOR=(P_COND_VARIABLE_BROADCAST/p_cond_variable_broadcast=PROCEDURE)
+!
+! pcryptohash.h
+!
+SYMBOL_VECTOR=(p_crypto_hash_new=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_NEW/p_crypto_hash_new=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_update=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_UPDATE/p_crypto_hash_update=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_reset=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_RESET/p_crypto_hash_reset=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_get_string=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_GET_STRING/p_crypto_hash_get_string=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_get_digest=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_GET_DIGEST/p_crypto_hash_get_digest=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_get_length=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_GET_LENGTH/p_crypto_hash_get_length=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_get_type=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_GET_TYPE/p_crypto_hash_get_type=PROCEDURE)
+SYMBOL_VECTOR=(p_crypto_hash_free=PROCEDURE)
+SYMBOL_VECTOR=(P_CRYPTO_HASH_FREE/p_crypto_hash_free=PROCEDURE)
+!
+! pdir.h
+!
+SYMBOL_VECTOR=(p_dir_new=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_NEW/p_dir_new=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_create=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_CREATE/p_dir_create=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_remove=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_REMOVE/p_dir_remove=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_is_exists=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_IS_EXISTS/p_dir_is_exists=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_get_path=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_GET_PATH/p_dir_get_path=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_get_next_entry=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_GET_NEXT_ENTRY/p_dir_get_next_entry=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_rewind=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_REWIND/p_dir_rewind=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_entry_free=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_ENTRY_FREE/p_dir_entry_free=PROCEDURE)
+SYMBOL_VECTOR=(p_dir_free=PROCEDURE)
+SYMBOL_VECTOR=(P_DIR_FREE/p_dir_free=PROCEDURE)
+!
+! perror.h
+!
+SYMBOL_VECTOR=(p_error_new=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_NEW/p_error_new=PROCEDURE)
+SYMBOL_VECTOR=(p_error_new_literal=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_NEW_LITERAL/p_error_new_literal=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_message=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_MESSAGE/p_error_get_message=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_code=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_CODE/p_error_get_code=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_native_code=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_NATIVE_CODE/p_error_get_native_code=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_domain=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_DOMAIN/p_error_get_domain=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_last_system=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_LAST_SYSTEM/p_error_get_last_system=PROCEDURE)
+SYMBOL_VECTOR=(p_error_get_last_net=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_GET_LAST_NET/p_error_get_last_net=PROCEDURE)
+SYMBOL_VECTOR=(p_error_copy=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_COPY/p_error_copy=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_error=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_ERROR/p_error_set_error=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_error_p=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_ERROR_P/p_error_set_error_p=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_code=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_CODE/p_error_set_code=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_native_code=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_NATIVE_CODE/p_error_set_native_code=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_message=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_MESSAGE/p_error_set_message=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_last_system=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_LAST_SYSTEM/p_error_set_last_system=PROCEDURE)
+SYMBOL_VECTOR=(p_error_set_last_net=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_SET_LAST_NET/p_error_set_last_net=PROCEDURE)
+SYMBOL_VECTOR=(p_error_clear=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_CLEAR/p_error_clear=PROCEDURE)
+SYMBOL_VECTOR=(p_error_free=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_FREE/p_error_free=PROCEDURE)
+!
+! pfile.h
+!
+SYMBOL_VECTOR=(p_file_is_exists=PROCEDURE)
+SYMBOL_VECTOR=(P_ERROR_IS_EXISTS/p_file_is_exists=PROCEDURE)
+SYMBOL_VECTOR=(p_file_remove=PROCEDURE)
+SYMBOL_VECTOR=(P_FILE_REMOVE/p_file_remove=PROCEDURE)
+!
+! phashtable.h
+!
+SYMBOL_VECTOR=(p_hash_table_new=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_NEW/p_hash_table_new=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_insert=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_INSERT/p_hash_table_insert=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_lookup=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_LOOKUP/p_hash_table_lookup=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_keys=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_KEYS/p_hash_table_keys=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_values=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_VALUES/p_hash_table_values=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_free=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_FREE/p_hash_table_free=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_remove=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_REMOVE/p_hash_table_remove=PROCEDURE)
+SYMBOL_VECTOR=(p_hash_table_lookup_by_value=PROCEDURE)
+SYMBOL_VECTOR=(P_HASH_TABLE_LOOKUP_BY_VALUE/p_hash_table_lookup_by_value=PROCEDURE)
+!
+! pinifile.h
+!
+SYMBOL_VECTOR=(p_ini_file_new=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_NEW/p_ini_file_new=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_free=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_FREE/p_ini_file_free=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parse=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARSE/p_ini_file_parse=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_is_parsed=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_IS_PARSED/p_ini_file_is_parsed=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_sections=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_SECTIONS/p_ini_file_sections=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_keys=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_KEYS/p_ini_file_keys=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_is_key_exists=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_IS_KEY_EXISTS/p_ini_file_is_key_exists=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parameter_string=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARAMETER_STRING/p_ini_file_parameter_string=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parameter_int=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARAMETER_INT/p_ini_file_parameter_int=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parameter_double=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARAMETER_DOUBLE/p_ini_file_parameter_double=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parameter_boolean=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARAMETER_BOOLEAN/p_ini_file_parameter_boolean=PROCEDURE)
+SYMBOL_VECTOR=(p_ini_file_parameter_list=PROCEDURE)
+SYMBOL_VECTOR=(P_INI_FILE_PARAMETER_LIST/p_ini_file_parameter_list=PROCEDURE)
+!
+! plibraryloader.h
+!
+SYMBOL_VECTOR=(p_library_loader_new=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBRARY_LOADER_NEW/p_library_loader_new=PROCEDURE)
+SYMBOL_VECTOR=(p_library_loader_get_symbol=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBRARY_LOADER_GET_SYMBOL/p_library_loader_get_symbol=PROCEDURE)
+SYMBOL_VECTOR=(p_library_loader_free=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBRARY_LOADER_FREE/p_library_loader_free=PROCEDURE)
+SYMBOL_VECTOR=(p_library_loader_get_last_error=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBRARY_LOADER_GET_LAST_ERROR/p_library_loader_get_last_error=PROCEDURE)
+SYMBOL_VECTOR=(p_library_loader_is_ref_counted=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBRARY_LOADER_IS_REF_COUNTED/p_library_loader_is_ref_counted=PROCEDURE)
+!
+! plist.h
+!
+SYMBOL_VECTOR=(p_list_append=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_APPEND/p_list_append=PROCEDURE)
+SYMBOL_VECTOR=(p_list_remove=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_REMOVE/p_list_remove=PROCEDURE)
+SYMBOL_VECTOR=(p_list_foreach=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_FOREACH/p_list_foreach=PROCEDURE)
+SYMBOL_VECTOR=(p_list_free=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_FREE/p_list_free=PROCEDURE)
+SYMBOL_VECTOR=(p_list_last=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_LAST/p_list_last=PROCEDURE)
+SYMBOL_VECTOR=(p_list_length=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_LENGTH/p_list_length=PROCEDURE)
+SYMBOL_VECTOR=(p_list_prepend=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_PREPEND/p_list_prepend=PROCEDURE)
+SYMBOL_VECTOR=(p_list_reverse=PROCEDURE)
+SYMBOL_VECTOR=(P_LIST_REVERSE/p_list_reverse=PROCEDURE)
+!
+! pmain.h
+!
+SYMBOL_VECTOR=(p_libsys_init=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBSYS_INIT/p_libsys_init=PROCEDURE)
+SYMBOL_VECTOR=(p_libsys_init_full=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBSYS_INIT_FULL/p_libsys_init_full=PROCEDURE)
+SYMBOL_VECTOR=(p_libsys_shutdown=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBSYS_SHUTDOWN/p_libsys_shutdown=PROCEDURE)
+SYMBOL_VECTOR=(p_libsys_version=PROCEDURE)
+SYMBOL_VECTOR=(P_LIBSYS_VERSION/p_libsys_version=PROCEDURE)
+!
+! pmem.h
+!
+SYMBOL_VECTOR=(p_malloc=PROCEDURE)
+SYMBOL_VECTOR=(P_MALLOC/p_malloc=PROCEDURE)
+SYMBOL_VECTOR=(p_malloc0=PROCEDURE)
+SYMBOL_VECTOR=(P_MALLOC0/p_malloc0=PROCEDURE)
+SYMBOL_VECTOR=(p_realloc=PROCEDURE)
+SYMBOL_VECTOR=(P_REALLOC/p_realloc=PROCEDURE)
+SYMBOL_VECTOR=(p_free=PROCEDURE)
+SYMBOL_VECTOR=(P_FREE/p_free=PROCEDURE)
+SYMBOL_VECTOR=(p_mem_set_vtable=PROCEDURE)
+SYMBOL_VECTOR=(P_MEM_SET_VTABLE/p_mem_set_vtable=PROCEDURE)
+SYMBOL_VECTOR=(p_mem_restore_vtable=PROCEDURE)
+SYMBOL_VECTOR=(P_MEM_RESTORE_VTABLE/p_mem_restore_vtable=PROCEDURE)
+SYMBOL_VECTOR=(p_mem_mmap=PROCEDURE)
+SYMBOL_VECTOR=(P_MEM_MMAP/p_mem_mmap=PROCEDURE)
+SYMBOL_VECTOR=(p_mem_munmap=PROCEDURE)
+SYMBOL_VECTOR=(P_MEM_MUNMAP/p_mem_munmap=PROCEDURE)
+!
+! pmutex.h
+!
+SYMBOL_VECTOR=(p_mutex_new=PROCEDURE)
+SYMBOL_VECTOR=(P_MUTEX_NEW/p_mutex_new=PROCEDURE)
+SYMBOL_VECTOR=(p_mutex_lock=PROCEDURE)
+SYMBOL_VECTOR=(P_MUTEX_LOCK/p_mutex_lock=PROCEDURE)
+SYMBOL_VECTOR=(p_mutex_trylock=PROCEDURE)
+SYMBOL_VECTOR=(P_MUTEX_TRYLOCK/p_mutex_trylock=PROCEDURE)
+SYMBOL_VECTOR=(p_mutex_unlock=PROCEDURE)
+SYMBOL_VECTOR=(P_MUTEX_UNLOCK/p_mutex_unlock=PROCEDURE)
+SYMBOL_VECTOR=(p_mutex_free=PROCEDURE)
+SYMBOL_VECTOR=(P_MUTEX_FREE/p_mutex_free=PROCEDURE)
+!
+! pprocess.h
+!
+SYMBOL_VECTOR=(p_process_get_current_pid=PROCEDURE)
+SYMBOL_VECTOR=(P_PROCESS_GET_CURRENT_PID/p_process_get_current_pid=PROCEDURE)
+SYMBOL_VECTOR=(p_process_is_running=PROCEDURE)
+SYMBOL_VECTOR=(P_PROCESS_IS_RUNNING/p_process_is_running=PROCEDURE)
+!
+! prwlock.h
+!
+SYMBOL_VECTOR=(p_rwlock_new=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_NEW/p_rwlock_new=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_reader_lock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_READER_LOCK/p_rwlock_reader_lock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_reader_trylock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_READER_TRYLOCK/p_rwlock_reader_trylock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_reader_unlock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_READER_UNLOCK/p_rwlock_reader_unlock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_writer_lock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_WRITER_LOCK/p_rwlock_writer_lock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_writer_trylock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_WRITER_TRYLOCK/p_rwlock_writer_trylock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_writer_unlock=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_WRITER_UNLOCK/p_rwlock_writer_unlock=PROCEDURE)
+SYMBOL_VECTOR=(p_rwlock_free=PROCEDURE)
+SYMBOL_VECTOR=(P_RWLOCK_FREE/p_rwlock_free=PROCEDURE)
+!
+! psemaphore.h
+!
+SYMBOL_VECTOR=(p_semaphore_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SEMAPHORE_NEW/p_semaphore_new=PROCEDURE)
+SYMBOL_VECTOR=(p_semaphore_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(P_SEMAPHORE_TAKE_OWNERSHIP/p_semaphore_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(p_semaphore_acquire=PROCEDURE)
+SYMBOL_VECTOR=(P_SEMAPHORE_ACQUIRE/p_semaphore_acquire=PROCEDURE)
+SYMBOL_VECTOR=(p_semaphore_release=PROCEDURE)
+SYMBOL_VECTOR=(P_SEMAPHORE_RELEASE/p_semaphore_release=PROCEDURE)
+SYMBOL_VECTOR=(p_semaphore_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SEMAPHORE_FREE/p_semaphore_free=PROCEDURE)
+!
+! pshm.h
+!
+SYMBOL_VECTOR=(p_shm_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_NEW/p_shm_new=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_TAKE_OWNERSHIP/p_shm_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_FREE/p_shm_free=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_lock=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_LOCK/p_shm_lock=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_unlock=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_UNLOCK/p_shm_unlock=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_get_address=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_GET_ADDRESS/p_shm_get_address=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_get_size=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_GET_SIZE/p_shm_get_size=PROCEDURE)
+!
+! pshmbuffer.h
+!
+SYMBOL_VECTOR=(p_shm_buffer_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_NEW/p_shm_buffer_new=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_FREE/p_shm_buffer_free=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_TAKE_OWNERSHIP/p_shm_buffer_take_ownership=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_read=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_READ/p_shm_buffer_read=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_write=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_WRITE/p_shm_buffer_write=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_get_free_space=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_GET_FREE_SPACE/p_shm_buffer_get_free_space=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_get_used_space=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_GET_USED_SPACE/p_shm_buffer_get_used_space=PROCEDURE)
+SYMBOL_VECTOR=(p_shm_buffer_clear=PROCEDURE)
+SYMBOL_VECTOR=(P_SHM_BUFFER_CLEAR/p_shm_buffer_clear=PROCEDURE)
+!
+! psocket.h
+!
+SYMBOL_VECTOR=(p_socket_new_from_fd=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_NEW_FROM_FD/p_socket_new_from_fd=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_NEW/p_socket_new=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_fd=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_FD/p_socket_get_fd=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_family=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_FAMILY/p_socket_get_family=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_type=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_TYPE/p_socket_get_type=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_protocol=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_PROTOCOL/p_socket_get_protocol=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_keepalive=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_KEEPALIVE/p_socket_get_keepalive=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_blocking=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_BLOCKING/p_socket_get_blocking=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_listen_backlog=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_LISTEN_BACKLOG/p_socket_get_listen_backlog=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_timeout=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_TIMEOUT/p_socket_get_timeout=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_local_address=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_LOCAL_ADDRESS/p_socket_get_local_address=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_get_remote_address=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_GET_REMOTE_ADDRESS/p_socket_get_remote_address=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_is_connected=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_IS_CONNECTED/p_socket_is_connected=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_is_closed=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_IS_CLOSED/p_socket_is_closed=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_check_connect_result=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_CHECK_CONNECT_RESULT/p_socket_check_connect_result=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_set_keepalive=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SET_KEEPALIVE/p_socket_set_keepalive=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_set_blocking=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SET_BLOCKING/p_socket_set_blocking=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_set_listen_backlog=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SET_LISTEN_BACKLOG/p_socket_set_listen_backlog=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_set_timeout=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SET_TIMEOUT/p_socket_set_timeout=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_bind=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_BIND/p_socket_bind=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_connect=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_CONNECT/p_socket_connect=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_listen=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_LISTEN/p_socket_listen=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_accept=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ACCEPT/p_socket_accept=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_receive=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_RECEIVE/p_socket_receive=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_receive_from=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_RECEIVE_FROM/p_socket_receive_from=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_send=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SEND/p_socket_send=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_send_to=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SEND_TO/p_socket_send_to=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_close=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_CLOSE/p_socket_close=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_shutdown=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SHUTDOWN/p_socket_shutdown=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_FREE/p_socket_free=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_set_buffer_size=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_SET_BUFFER_SIZE/p_socket_set_buffer_size=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_io_condition_wait=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_IO_CONDITION_WAIT/p_socket_io_condition_wait=PROCEDURE)
+!
+! psocketaddress.h
+!
+SYMBOL_VECTOR=(p_socket_address_new_fr1g0bamc$=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_NEW_FR0V6PAD7$/p_socket_address_new_fr1g0bamc$=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_NEW/p_socket_address_new=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_new_any=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_NEW_ANY/p_socket_address_new_any=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_new_loopback=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_NEW_LOOPBACK/p_socket_address_new_loopback=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_to_native=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_TO_NATIVE/p_socket_address_to_native=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_na1kai9ab$=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_NA0SBOC5O$/p_socket_address_get_na1kai9ab$=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_family=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_FAMILY/p_socket_address_get_family=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_address=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_ADDRESS/p_socket_address_get_address=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_port=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_PORT/p_socket_address_get_port=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_flow_info=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_FLOW_INFO/p_socket_address_get_flow_info=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_get_scope_id=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_GET_SCOPE_ID/p_socket_address_get_scope_id=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_set_flow_info=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_SET_FLOW_INFO/p_socket_address_set_flow_info=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_set_scope_id=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_SET_SCOPE_ID/p_socket_address_set_scope_id=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_is_flo3bgg0hi$=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_IS_FLO1N1P65T$/p_socket_address_is_flo3bgg0hi$=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_is_sco2c7455c$=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_IS_SCO1COK854$/p_socket_address_is_sco2c7455c$=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_is_ipv3s9t3vi$=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_IS_IPV13UAVM5$/p_socket_address_is_ipv3s9t3vi$=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_is_any=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_IS_ANY/p_socket_address_is_any=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_is_loopback=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_IS_LOOPBACK/p_socket_address_is_loopback=PROCEDURE)
+SYMBOL_VECTOR=(p_socket_address_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SOCKET_ADDRESS_FREE/p_socket_address_free=PROCEDURE)
+!
+! pspinlock.h
+!
+SYMBOL_VECTOR=(p_spinlock_new=PROCEDURE)
+SYMBOL_VECTOR=(P_SPINLOCK_NEW/p_spinlock_new=PROCEDURE)
+SYMBOL_VECTOR=(p_spinlock_lock=PROCEDURE)
+SYMBOL_VECTOR=(P_SPINLOCK_LOCK/p_spinlock_lock=PROCEDURE)
+SYMBOL_VECTOR=(p_spinlock_trylock=PROCEDURE)
+SYMBOL_VECTOR=(P_SPINLOCK_TRYLOCK/p_spinlock_trylock=PROCEDURE)
+SYMBOL_VECTOR=(p_spinlock_unlock=PROCEDURE)
+SYMBOL_VECTOR=(P_SPINLOCK_UNLOCK/p_spinlock_unlock=PROCEDURE)
+SYMBOL_VECTOR=(p_spinlock_free=PROCEDURE)
+SYMBOL_VECTOR=(P_SPINLOCK_FREE/p_spinlock_free=PROCEDURE)
+!
+! pstring.h
+!
+SYMBOL_VECTOR=(p_strdup=PROCEDURE)
+SYMBOL_VECTOR=(P_STRDUP/p_strdup=PROCEDURE)
+SYMBOL_VECTOR=(p_strchomp=PROCEDURE)
+SYMBOL_VECTOR=(P_STRCHOMP/p_strchomp=PROCEDURE)
+SYMBOL_VECTOR=(p_strtok=PROCEDURE)
+SYMBOL_VECTOR=(P_STRTOK/p_strtok=PROCEDURE)
+SYMBOL_VECTOR=(p_strtod=PROCEDURE)
+SYMBOL_VECTOR=(P_STRTOD/p_strtod=PROCEDURE)
+!
+! ptimeprofiler.h
+!
+SYMBOL_VECTOR=(p_time_profiler_new=PROCEDURE)
+SYMBOL_VECTOR=(P_TIME_PROFILER_NEW/p_time_profiler_new=PROCEDURE)
+SYMBOL_VECTOR=(p_time_profiler_reset=PROCEDURE)
+SYMBOL_VECTOR=(P_TIME_PROFILER_RESET/p_time_profiler_reset=PROCEDURE)
+SYMBOL_VECTOR=(p_time_profiler_elapsed_usecs=PROCEDURE)
+SYMBOL_VECTOR=(P_TIME_PROFILER_ELAPSED_USECS/p_time_profiler_elapsed_usecs=PROCEDURE)
+SYMBOL_VECTOR=(p_time_profiler_free=PROCEDURE)
+SYMBOL_VECTOR=(P_TIME_PROFILER_FREE/p_time_profiler_free=PROCEDURE)
+!
+! ptree.h
+!
+SYMBOL_VECTOR=(p_tree_new=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_NEW/p_tree_new=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_new_with_data=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_NEW_WITH_DATA/p_tree_new_with_data=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_new_full=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_NEW_FULL/p_tree_new_full=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_insert=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_INSERT/p_tree_insert=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_remove=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_REMOVE/p_tree_remove=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_lookup=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_LOOKUP/p_tree_lookup=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_foreach=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_FOREACH/p_tree_foreach=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_clear=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_CLEAR/p_tree_clear=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_get_type=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_GET_TYPE/p_tree_get_type=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_get_nnodes=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_GET_NNODES/p_tree_get_nnodes=PROCEDURE)
+SYMBOL_VECTOR=(p_tree_free=PROCEDURE)
+SYMBOL_VECTOR=(P_TREE_FREE/p_tree_free=PROCEDURE)
+!
+! puthread.h
+!
+SYMBOL_VECTOR=(p_uthread_create_full=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_CREATE_FULL/p_uthread_create_full=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_create=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_CREATE/p_uthread_create=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_exit=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_EXIT/p_uthread_exit=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_join=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_JOIN/p_uthread_join=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_sleep=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_SLEEP/p_uthread_sleep=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_set_priority=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_SET_PRIORITY/p_uthread_set_priority=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_yield=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_YIELD/p_uthread_yield=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_current_id=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_CURRENT_ID/p_uthread_current_id=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_current=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_CURRENT/p_uthread_current=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_ideal_count=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_IDEAL_COUNT/p_uthread_ideal_count=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_ref=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_REF/p_uthread_ref=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_unref=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_UNREF/p_uthread_unref=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_local_new=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_LOCAL_NEW/p_uthread_local_new=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_local_free=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_LOCAL_FREE/p_uthread_local_free=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_get_local=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_GET_LOCAL/p_uthread_get_local=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_set_local=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_SET_LOCAL/p_uthread_set_local=PROCEDURE)
+SYMBOL_VECTOR=(p_uthread_replace_local=PROCEDURE)
+SYMBOL_VECTOR=(P_UTHREAD_REPLACE_LOCAL/p_uthread_replace_local=PROCEDURE)
diff --git a/3rdparty/plibsys/platforms/vms-general/vms_shorten_symbol.c b/3rdparty/plibsys/platforms/vms-general/vms_shorten_symbol.c
new file mode 100644
index 0000000..fbb6c5a
--- /dev/null
+++ b/3rdparty/plibsys/platforms/vms-general/vms_shorten_symbol.c
@@ -0,0 +1,238 @@
+/*
+ * Copyright (c) 2010 Craig A. Berry
+ * Copyright (c) 2016 Alexander Saprykin
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/* vms_shorten_symbol
+ *
+ * This program provides shortening of long symbols (> 31 characters) using the
+ * same mechanism as the OpenVMS C compiler. The basic procedure is to compute
+ * an AUTODIN II checksum of the entire symbol, encode the checksum in base32,
+ * and glue together a shortened symbol from the first 23 characters of the
+ * original symbol plus the encoded checksum appended. The output format is
+ * the same as that of the name mangler database, stored by default in
+ * [.CXX_REPOSITORY]CXX$DEMANGLER_DB.
+ *
+ * To obtain the same result as CC/NAMES=SHORTENED, run like so:
+ *
+ * $ mcr []vms_shorten_symbol "Please_forgive_this_absurdly_long_symbol_name"
+ * PLEASE_FORGIVE_THIS_ABS1ARO4QU$Please_forgive_this_absurdly_long_symbol_name
+ *
+ * To obtain the same result as CC/NAMES=(SHORTENED,AS_IS), pass a non-zero
+ * value as the second argument, like so:
+ *
+ * $ mcr []vms_shorten_symbol "Please_forgive_this_absurdly_long_symbol_name" 1
+ * Please_forgive_this_abs3rv8rnn$Please_forgive_this_absurdly_long_symbol_name
+ */
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifdef __VMS
+# define UINT32 unsigned int
+#else
+# include <inttypes.h>
+# define UINT32 uint32_t
+#endif
+
+static UINT32 crc32 (const char *input_string);
+static UINT32 u32_to_base32 (UINT32 input, char *output);
+static UINT32 vms_shorten_symbol (const char *symbol, char *shortened, char as_is_flag);
+
+/*
+ * This routine implements the AUTODIN II polynomial.
+ */
+UINT32
+crc32 (const char *input_string)
+{
+
+ /*
+ * CRC code and data based partly on FreeBSD implementation, which
+ * notes:
+ *
+ * The crc32 functions and data was originally written by Spencer
+ * Garrett >s...@quick.com> and was cleaned from the PostgreSQL source
+ * tree via the files contrib/ltree/crc32.[ch]. No license was
+ * included, therefore it is assumed that this code is public
+ * domain. Attribution still noted.
+ *
+ * (I think they mean "gleaned" not "cleaned".)
+ */
+ static const UINT32 autodin_ii_table[256] = {
+ 0x00000000, 0x77073096, 0xee0e612c, 0x990951ba, 0x076dc419, 0x706af48f,
+ 0xe963a535, 0x9e6495a3, 0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
+ 0x09b64c2b, 0x7eb17cbd, 0xe7b82d07, 0x90bf1d91, 0x1db71064, 0x6ab020f2,
+ 0xf3b97148, 0x84be41de, 0x1adad47d, 0x6ddde4eb, 0xf4d4b551, 0x83d385c7,
+ 0x136c9856, 0x646ba8c0, 0xfd62f97a, 0x8a65c9ec, 0x14015c4f, 0x63066cd9,
+ 0xfa0f3d63, 0x8d080df5, 0x3b6e20c8, 0x4c69105e, 0xd56041e4, 0xa2677172,
+ 0x3c03e4d1, 0x4b04d447, 0xd20d85fd, 0xa50ab56b, 0x35b5a8fa, 0x42b2986c,
+ 0xdbbbc9d6, 0xacbcf940, 0x32d86ce3, 0x45df5c75, 0xdcd60dcf, 0xabd13d59,
+ 0x26d930ac, 0x51de003a, 0xc8d75180, 0xbfd06116, 0x21b4f4b5, 0x56b3c423,
+ 0xcfba9599, 0xb8bda50f, 0x2802b89e, 0x5f058808, 0xc60cd9b2, 0xb10be924,
+ 0x2f6f7c87, 0x58684c11, 0xc1611dab, 0xb6662d3d, 0x76dc4190, 0x01db7106,
+ 0x98d220bc, 0xefd5102a, 0x71b18589, 0x06b6b51f, 0x9fbfe4a5, 0xe8b8d433,
+ 0x7807c9a2, 0x0f00f934, 0x9609a88e, 0xe10e9818, 0x7f6a0dbb, 0x086d3d2d,
+ 0x91646c97, 0xe6635c01, 0x6b6b51f4, 0x1c6c6162, 0x856530d8, 0xf262004e,
+ 0x6c0695ed, 0x1b01a57b, 0x8208f4c1, 0xf50fc457, 0x65b0d9c6, 0x12b7e950,
+ 0x8bbeb8ea, 0xfcb9887c, 0x62dd1ddf, 0x15da2d49, 0x8cd37cf3, 0xfbd44c65,
+ 0x4db26158, 0x3ab551ce, 0xa3bc0074, 0xd4bb30e2, 0x4adfa541, 0x3dd895d7,
+ 0xa4d1c46d, 0xd3d6f4fb, 0x4369e96a, 0x346ed9fc, 0xad678846, 0xda60b8d0,
+ 0x44042d73, 0x33031de5, 0xaa0a4c5f, 0xdd0d7cc9, 0x5005713c, 0x270241aa,
+ 0xbe0b1010, 0xc90c2086, 0x5768b525, 0x206f85b3, 0xb966d409, 0xce61e49f,
+ 0x5edef90e, 0x29d9c998, 0xb0d09822, 0xc7d7a8b4, 0x59b33d17, 0x2eb40d81,
+ 0xb7bd5c3b, 0xc0ba6cad, 0xedb88320, 0x9abfb3b6, 0x03b6e20c, 0x74b1d29a,
+ 0xead54739, 0x9dd277af, 0x04db2615, 0x73dc1683, 0xe3630b12, 0x94643b84,
+ 0x0d6d6a3e, 0x7a6a5aa8, 0xe40ecf0b, 0x9309ff9d, 0x0a00ae27, 0x7d079eb1,
+ 0xf00f9344, 0x8708a3d2, 0x1e01f268, 0x6906c2fe, 0xf762575d, 0x806567cb,
+ 0x196c3671, 0x6e6b06e7, 0xfed41b76, 0x89d32be0, 0x10da7a5a, 0x67dd4acc,
+ 0xf9b9df6f, 0x8ebeeff9, 0x17b7be43, 0x60b08ed5, 0xd6d6a3e8, 0xa1d1937e,
+ 0x38d8c2c4, 0x4fdff252, 0xd1bb67f1, 0xa6bc5767, 0x3fb506dd, 0x48b2364b,
+ 0xd80d2bda, 0xaf0a1b4c, 0x36034af6, 0x41047a60, 0xdf60efc3, 0xa867df55,
+ 0x316e8eef, 0x4669be79, 0xcb61b38c, 0xbc66831a, 0x256fd2a0, 0x5268e236,
+ 0xcc0c7795, 0xbb0b4703, 0x220216b9, 0x5505262f, 0xc5ba3bbe, 0xb2bd0b28,
+ 0x2bb45a92, 0x5cb36a04, 0xc2d7ffa7, 0xb5d0cf31, 0x2cd99e8b, 0x5bdeae1d,
+ 0x9b64c2b0, 0xec63f226, 0x756aa39c, 0x026d930a, 0x9c0906a9, 0xeb0e363f,
+ 0x72076785, 0x05005713, 0x95bf4a82, 0xe2b87a14, 0x7bb12bae, 0x0cb61b38,
+ 0x92d28e9b, 0xe5d5be0d, 0x7cdcefb7, 0x0bdbdf21, 0x86d3d2d4, 0xf1d4e242,
+ 0x68ddb3f8, 0x1fda836e, 0x81be16cd, 0xf6b9265b, 0x6fb077e1, 0x18b74777,
+ 0x88085ae6, 0xff0f6a70, 0x66063bca, 0x11010b5c, 0x8f659eff, 0xf862ae69,
+ 0x616bffd3, 0x166ccf45, 0xa00ae278, 0xd70dd2ee, 0x4e048354, 0x3903b3c2,
+ 0xa7672661, 0xd06016f7, 0x4969474d, 0x3e6e77db, 0xaed16a4a, 0xd9d65adc,
+ 0x40df0b66, 0x37d83bf0, 0xa9bcae53, 0xdebb9ec5, 0x47b2cf7f, 0x30b5ffe9,
+ 0xbdbdf21c, 0xcabac28a, 0x53b39330, 0x24b4a3a6, 0xbad03605, 0xcdd70693,
+ 0x54de5729, 0x23d967bf, 0xb3667a2e, 0xc4614ab8, 0x5d681b02, 0x2a6f2b94,
+ 0xb40bbe37, 0xc30c8ea1, 0x5a05df1b, 0x2d02ef8d,
+ };
+
+ UINT32 crc = ~0UL;
+ char * c;
+
+ for (c = (char *) input_string; *c; ++c)
+ crc = (crc >> 8) ^ autodin_ii_table[(crc ^ *c) & 0xff];
+
+ return ~crc;
+}
+
+/*
+ * This is the RFC2938 variant of base32, not RFC3548, Crockford's, or
+ * other newer variant. It produces an 8-byte encoded character string
+ * (plus trailing null) from a 32-bit integer input.
+ */
+static UINT32
+u32_to_base32 (UINT32 input, char *output)
+{
+ static const char base32hex_table[32] = {
+ '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+ 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
+ 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
+ 'u', 'v'
+ };
+
+ int i;
+
+ /*
+ * Grab lowest 5 bits and look up conversion in table. Lather, rinse,
+ * repeat for 6, 5-bit chunks to accommodate 32 bits of input.
+ */
+ for (i = 0; i < 7; i++) {
+ output[6 - i] = base32hex_table[input & 0x1f];
+
+ /* Position to look at next 5. */
+ input >>= 5;
+ }
+
+ /* It's DEC, so use '$' not '=' to pad. */
+ output[7] = '$';
+ output[8] = '\0';
+
+ return 0;
+}
+
+static UINT32
+vms_shorten_symbol (const char *symbol, char *shortened, char as_is_flag)
+{
+ char b32str[9];
+ UINT32 crc;
+ char * c;
+
+ crc = crc32 (symbol);
+
+ /*
+ * The compiler does not use the inverted checksum, so we invert it
+ * back before encoding.
+ */
+ (void) u32_to_base32 (~crc, (char *) &b32str);
+
+ if (!as_is_flag) {
+ for (c = (char *) &b32str; *c; c++)
+ *c = toupper (*c);
+ }
+
+ sprintf (shortened, "%.23s%.8s\n", symbol, b32str);
+ shortened[31] = '\0';
+
+ return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+ char short_symbol[32];
+ char as_is_flag = 0;
+ char * c;
+ char * input_symbol;
+ int symlen;
+
+ if (argc < 2) {
+ fprintf (stderr, "Usage: %s <symbol name> [<AS_IS flag>]\n", argv[0]);
+ return EXIT_FAILURE;
+ }
+
+ if (argc > 2)
+ as_is_flag = 1;
+
+ symlen = strlen (argv[1]);
+
+ if (symlen <= 31) {
+ printf ("No need for shorten symbol\n");
+ return EXIT_SUCCESS;
+ }
+
+ input_symbol = malloc (symlen + 1);
+
+ if (input_symbol == NULL)
+ return EXIT_FAILURE;
+
+ strncpy (input_symbol, argv[1], symlen);
+ input_symbol[symlen] = '\0';
+
+ if (!as_is_flag) {
+ for (c = input_symbol; *c; c++)
+ *c = toupper (*c);
+ }
+
+ vms_shorten_symbol (input_symbol, (char *) &short_symbol, as_is_flag);
+ printf ("%s%s\n", &short_symbol, argv[1]);
+ free (input_symbol);
+
+ return EXIT_SUCCESS;
+}
diff --git a/3rdparty/plibsys/platforms/win32-borland/platform.cmake b/3rdparty/plibsys/platforms/win32-borland/platform.cmake
new file mode 100644
index 0000000..564ae9a
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-borland/platform.cmake
@@ -0,0 +1,8 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_CFLAGS "-w-8065 -w-8008 -w-8057 -w-8059 -w-8066 -w-8004")
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win32-clang/platform.cmake b/3rdparty/plibsys/platforms/win32-clang/platform.cmake
new file mode 100644
index 0000000..bd115ff
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-clang/platform.cmake
@@ -0,0 +1,8 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_CFLAGS "-Wno-missing-braces -Wmissing-field-initializers")
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win32-gcc/platform.cmake b/3rdparty/plibsys/platforms/win32-gcc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-gcc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win32-icc/platform.cmake b/3rdparty/plibsys/platforms/win32-icc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-icc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win32-msvc/platform.cmake b/3rdparty/plibsys/platforms/win32-msvc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-msvc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win32-watcom/platform.cmake b/3rdparty/plibsys/platforms/win32-watcom/platform.cmake
new file mode 100644
index 0000000..ef5a855
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win32-watcom/platform.cmake
@@ -0,0 +1,11 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+if (NOT PLIBSYS_SIZEOF_VOID_P)
+ set (PLIBSYS_SIZEOF_VOID_P 4)
+endif()
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win64-clang/platform.cmake b/3rdparty/plibsys/platforms/win64-clang/platform.cmake
new file mode 100644
index 0000000..bd115ff
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win64-clang/platform.cmake
@@ -0,0 +1,8 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_CFLAGS "-Wno-missing-braces -Wmissing-field-initializers")
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win64-gcc/platform.cmake b/3rdparty/plibsys/platforms/win64-gcc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win64-gcc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win64-icc/platform.cmake b/3rdparty/plibsys/platforms/win64-icc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win64-icc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)
diff --git a/3rdparty/plibsys/platforms/win64-msvc/platform.cmake b/3rdparty/plibsys/platforms/win64-msvc/platform.cmake
new file mode 100644
index 0000000..05ac5d8
--- /dev/null
+++ b/3rdparty/plibsys/platforms/win64-msvc/platform.cmake
@@ -0,0 +1,7 @@
+set (PLIBSYS_THREAD_MODEL win)
+set (PLIBSYS_IPC_MODEL win)
+set (PLIBSYS_TIME_PROFILER_MODEL win)
+set (PLIBSYS_DIR_MODEL win)
+set (PLIBSYS_LIBRARYLOADER_MODEL win)
+
+set (PLIBSYS_PLATFORM_LINK_LIBRARIES ws2_32)