Pārlūkot izejas kodu

Added functional CMake buildfile.
- Has the option to enable/disable drivers (Oculus and External currently)
- Automatically finds Hidapi when driver needs it (currently just Oculus)

TheOnlyJoey 9 gadi atpakaļ
vecāks
revīzija
f83de6d2ad
2 mainītis faili ar 99 papildinājumiem un 0 dzēšanām
  1. 52 0
      CMakeLists.txt
  2. 47 0
      cmake/FindHIDAPI.cmake

+ 52 - 0
CMakeLists.txt

@@ -0,0 +1,52 @@
+cmake_minimum_required(VERSION 2.8)
+
+project(openhmd C CXX)
+set(CMAKE_C_FLAGS "-std=c99")
+
+set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
+
+include_directories(${CMAKE_CURRENT_LIST_DIR}/include)
+
+if (MSVC)
+  # Add the "lib" prefix for generated .lib outputs.
+  set(LIB_PREFIX lib)
+else (MSVC)
+  # When building with "make", "lib" prefix will be added automatically by
+  # the build tool.
+  set(LIB_PREFIX)
+endif (MSVC)
+
+#source files set just for Android
+set(openhmd_source_files
+${CMAKE_CURRENT_LIST_DIR}/src/openhmd.c
+${CMAKE_CURRENT_LIST_DIR}/src/platform-win32.c
+${CMAKE_CURRENT_LIST_DIR}/src/drv_dummy/dummy.c
+${CMAKE_CURRENT_LIST_DIR}/src/omath.c
+${CMAKE_CURRENT_LIST_DIR}/src/platform-posix.c
+${CMAKE_CURRENT_LIST_DIR}/src/fusion.c
+)
+
+OPTION(OPENHMD_DRIVER_OCULUS_RIFT "Oculus Rift DK1 and DK2" ON)
+OPTION(OPENHMD_DRIVER_EXTERNAL "External sensor driver" ON)
+
+if(OPENHMD_DRIVER_OCULUS_RIFT)
+	set(openhmd_source_files ${openhmd_source_files} 
+	${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/rift.c
+	${CMAKE_CURRENT_LIST_DIR}/src/drv_oculus_rift/packet.c
+	)
+	add_definitions(-DDRIVER_OCULUS_RIFT)
+
+	find_package(HIDAPI REQUIRED)
+	include_directories(${HIDAPI_INCLUDE_DIRS})
+	set(LIBS ${LIBS} ${HIDAPI_LIBRARIES})
+endif(OPENHMD_DRIVER_OCULUS_RIFT)
+
+if (OPENHMD_DRIVER_EXTERNAL)
+	set(openhmd_source_files ${openhmd_source_files} 
+	${CMAKE_CURRENT_LIST_DIR}/src/drv_external/external.c
+	)
+	add_definitions(-DDRIVER_EXTERNAL)
+endif(OPENHMD_DRIVER_EXTERNAL)
+
+add_library(openhmd ${openhmd_source_files} ${LIBS})
+set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_DIR}/)

+ 47 - 0
cmake/FindHIDAPI.cmake

@@ -0,0 +1,47 @@
+# - try to find HIDAPI library
+# from http://www.signal11.us/oss/hidapi/
+#
+# Cache Variables: (probably not for direct use in your scripts)
+#  HIDAPI_INCLUDE_DIR
+#  HIDAPI_LIBRARY
+#
+# Non-cache variables you might use in your CMakeLists.txt:
+#  HIDAPI_FOUND
+#  HIDAPI_INCLUDE_DIRS
+#  HIDAPI_LIBRARIES
+#
+# Requires these CMake modules:
+#  FindPackageHandleStandardArgs (known included with CMake >=2.6.2)
+#
+# Original Author:
+# 2009-2010 Ryan Pavlik <rpavlik@iastate.edu> <abiryan@ryand.net>
+# http://academic.cleardefinition.com
+# Iowa State University HCI Graduate Program/VRAC
+#
+# Copyright Iowa State University 2009-2010.
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+find_library(HIDAPI_LIBRARY
+	NAMES hidapi hidapi-libusb)
+
+find_path(HIDAPI_INCLUDE_DIR
+	NAMES hidapi.h
+	PATH_SUFFIXES
+	hidapi)
+
+include(FindPackageHandleStandardArgs)
+find_package_handle_standard_args(HIDAPI
+	DEFAULT_MSG
+	HIDAPI_LIBRARY
+	HIDAPI_INCLUDE_DIR)
+
+if(HIDAPI_FOUND)
+	set(HIDAPI_LIBRARIES "${HIDAPI_LIBRARY}")
+
+	set(HIDAPI_INCLUDE_DIRS "${HIDAPI_INCLUDE_DIR}")
+endif()
+
+mark_as_advanced(HIDAPI_INCLUDE_DIR HIDAPI_LIBRARY)
+