linux compilable

This commit is contained in:
mii
2024-10-30 15:16:08 +09:00
parent 4bdca82764
commit dc65dd07f0
5 changed files with 28 additions and 3 deletions

4
.gitignore vendored
View File

@ -11,4 +11,6 @@ x64/
driver_migawari.dir/
Debug/
Release/
lib/minhook/
lib/minhook/
libdriver_migawari.so
Makefile

View File

@ -6,9 +6,17 @@ set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(OPENVR_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/lib/openvr/headers")
set(PROCESSOR_ARCH "64")
set(PLATFORM_NAME "win")
if (WIN)
set(PLATFORM_NAME "win")
elseif (UNIX AND NOT APPLE)
set(PLATFORM_NAME "linux")
elseif (APPLE)
set(PLATFORM_NAME "osx")
endif()
if (WIN)
add_subdirectory(lib/minhook)
endif()
find_library(OPENVR_LIB openvr_api HINTS "${CMAKE_CURRENT_SOURCE_DIR}/lib/openvr/lib/${PLATFORM_NAME}${PROCESSOR_ARCH}/" NO_DEFAULT_PATH)
set(DRIVER_NAME "migawari")
@ -17,11 +25,15 @@ file(GLOB_RECURSE HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/src/*.hpp")
file(GLOB_RECURSE SOURCES "${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp")
add_library("${PROJECT}" SHARED "${HEADERS}" "${SOURCES}")
if (WIN)
target_include_directories("${PROJECT}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/lib/minhook/include")
endif()
target_include_directories("${PROJECT}" PUBLIC "${OPENVR_INCLUDE_DIR}")
target_include_directories("${PROJECT}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/src/")
target_link_libraries("${PROJECT}" PUBLIC "${OPENVR_LIB}")
if (WIN)
target_link_libraries("${PROJECT}" PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/lib/minhook/Release/minhook.x64.lib")
endif()
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/src" PREFIX "Header Files" FILES ${HEADERS})
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}/src" PREFIX "Source Files" FILES ${SOURCES})
set_property(TARGET "${PROJECT}" PROPERTY CXX_STANDARD 17)

View File

@ -1,6 +1,9 @@
#include "DriverFactory.hpp"
#include "ServerTrackedDeviceProvider.hpp"
#include "VRWatchdogProvider.hpp"
#ifndef _MSC_VER
#include <cstring>
#endif
static ServerTrackedDeviceProvider g_serverTrackedDeviceProvider;
static VRWatchdogProvider g_watchdogProvider;

View File

@ -2,4 +2,8 @@
#include <openvr_driver.h>
extern "C" __declspec(dllexport) void* HmdDriverFactory(const char* pInterfaceName, int* pReturnCode);
extern "C"
#ifdef _MSC_VER
__declspec(dllexport)
#endif
void* HmdDriverFactory(const char* pInterfaceName, int* pReturnCode);

View File

@ -1,10 +1,13 @@
#include "ServerTrackedDeviceProvider.hpp"
#include "Device.hpp"
#ifdef _MSC_VER
#include <Windows.h>
#endif
vr::EVRInitError ServerTrackedDeviceProvider::Init(vr::IVRDriverContext *pDriverContext) {
VR_INIT_SERVER_DRIVER_CONTEXT(pDriverContext);
#ifdef _MSC_VER
auto name = "MigawariDriver_k_unMaxTrackedDeviceCount";
auto size = 4;
HANDLE hSharedMemory = CreateFileMapping(NULL, NULL, PAGE_READWRITE, NULL, size, name);
@ -19,6 +22,7 @@ vr::EVRInitError ServerTrackedDeviceProvider::Init(vr::IVRDriverContext *pDriver
HANDLE pHandle = CreateFileMapping(NULL, NULL, PAGE_READWRITE, NULL, sizeof(SharedDevice), ("MigawariDriver_Device" + std::to_string(i)).c_str());
devices[i] = (SharedDevice*)MapViewOfFile(pHandle, FILE_MAP_ALL_ACCESS, NULL, NULL, sizeof(SharedDevice));
}
#endif
return vr::VRInitError_None;
}