1name='openhmd'
2version='0.3.0'
3email='noname@nurd.se'
4
5AC_PREREQ([2.13])
6AC_INIT([openhmd], [0.3.0], [noname@nurd.de])
7AM_INIT_AUTOMAKE([foreign -Wall])
8m4_ifdef([AM_PROG_AR], [AM_PROG_AR])
9LT_INIT
10AC_CANONICAL_HOST
11
12# Just before release, the LT_VERSION string should be modified. See
13# https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
14# for details how to increment the current:revision:age fields.
15AC_SUBST([LT_VERSION], [1:0:1])
16
17# 0.24 automatically calls AC_SUBST() in PKG_CHECK_MODULES()
18PKG_PROG_PKG_CONFIG([0.24])
19
20m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
21
22hidapi="hidapi"
23deps_ld_flags="-lhidapi"
24AC_SUBST(hidapi)
25AC_SUBST(deps_ld_flags)
26
27AC_SUBST(PKG_CONFIG_EXTRA_PATH, "")
28AC_SUBST(EXTRA_LD_FLAGS, "")
29
30AC_MSG_CHECKING([operating system])
31AS_CASE(["$host"],
32	[*-androideabi],
33		[hidapi=""
34		deps_ld_flags="-landroid"
35		AC_SUBST(EXTRA_LD_FLAGS, "-lm")],
36	[*-linux*],
37		[AC_MSG_RESULT([$host (Linux)])
38		hidapi="hidapi-libusb"
39		deps_ld_flags="-lhidapi-libusb"
40
41		#link with realtime lib on linux for clock_gettime, and libm for math functions such as sincosf
42		AC_SUBST(EXTRA_LD_FLAGS, "-lrt -lpthread -lm")],
43	[*-freebsd*],
44		[AC_SUBST(PKG_CONFIG_EXTRA_PATH, "libdata/")
45		AC_SUBST(EXTRA_LD_FLAGS, "-lthr")],
46	[*-kfreebsd*],
47		[AC_SUBST(EXTRA_LD_FLAGS, "-lpthread")]
48	[*-darwin*],
49		[AC_MSG_RESULT([$host (Mac OS X)])])
50
51# Oculus Rift Driver
52AC_ARG_ENABLE([driver-oculus-rift],
53        [AS_HELP_STRING([--disable-driver-oculus-rift],
54                [disable building of Oculus Rift driver [default=yes]])],
55        [driver_oculus_rift_enabled=$enableval],
56        [driver_oculus_rift_enabled='yes'])
57
58AM_CONDITIONAL([BUILD_DRIVER_OCULUS_RIFT], [test "x$driver_oculus_rift_enabled" != "xno"])
59
60# HTC Vive driver
61AC_ARG_ENABLE([driver-htc-vive],
62        [AS_HELP_STRING([--disable-driver-htc-vive],
63                [disable building of HTC Vive driver [default=yes]])],
64        [driver_htc_vive_enabled=$enableval],
65        [driver_htc_vive_enabled='yes'])
66
67AM_CONDITIONAL([BUILD_DRIVER_HTC_VIVE], [test "x$driver_oculus_rift_enabled" != "xno"])
68
69# Deepoon Driver
70AC_ARG_ENABLE([driver-deepoon],
71        [AS_HELP_STRING([--disable-driver-deepoon],
72                [disable building of Deepoon driver [default=yes]])],
73        [driver_deepoon_enabled=$enableval],
74        [driver_deepoon_enabled='yes'])
75
76AM_CONDITIONAL([BUILD_DRIVER_DEEPOON], [test "x$driver_deepoon_enabled" != "xno"])
77
78# Windows Mixed Reality Driver
79AC_ARG_ENABLE([driver-wmr],
80        [AS_HELP_STRING([--disable-driver-wmr],
81                [disable building of Windows Mixed Reality driver [default=yes]])],
82        [driver_wmr_enabled=$enableval],
83        [driver_wmr_enabled='yes'])
84
85AM_CONDITIONAL([BUILD_DRIVER_WMR], [test "x$driver_wmr_enabled" != "xno"])
86
87# Sony PSVR Driver, disabled for 0.3
88AC_ARG_ENABLE([driver-psvr],
89        [AS_HELP_STRING([--disable-driver-psvr],
90                [disable building of Sony PSVR driver [default=no]])],
91        [driver_psvr_enabled=$enableval],
92        [driver_psvr_enabled='no'])
93
94AM_CONDITIONAL([BUILD_DRIVER_PSVR], [test "x$driver_psvr_enabled" != "xno"])
95
96# NOLO
97AC_ARG_ENABLE([driver-nolo],
98        [AS_HELP_STRING([--disable-driver-nolo],
99                [disable building of NOLO VR driver [default=yes]])],
100        [driver_nolo_enabled=$enableval],
101        [driver_nolo_enabled='yes'])
102
103AM_CONDITIONAL([BUILD_DRIVER_NOLO], [test "x$driver_nolo_enabled" != "xno"])
104
105# 3Glasses HMD driver
106AC_ARG_ENABLE([driver-xgvr],
107        [AS_HELP_STRING([--disable-driver-xgvr],
108                [disable building of 3glasses driver [default=yes]])],
109        [driver_xgvr_enabled=$enableval],
110        [driver_xgvr_enabled='yes'])
111
112AM_CONDITIONAL([BUILD_DRIVER_XGVR], [test "x$driver_xgvr_enabled" != "xno"])
113
114# External Driver
115AC_ARG_ENABLE([driver-external],
116        [AS_HELP_STRING([--disable-driver-external],
117                [disable building of External driver [default=yes]])],
118        [driver_external_enabled=$enableval],
119        [driver_external_enabled='yes'])
120
121AM_CONDITIONAL([BUILD_DRIVER_EXTERNAL], [test "x$driver_external_enabled" != "xno"])
122
123# Android Driver
124AC_ARG_ENABLE([driver-android],
125        [AS_HELP_STRING([--enable-driver-android],
126                [enable building of Android driver [default=no]])],
127        [driver_android_enabled=$enableval],
128        [driver_android_enabled='no'])
129
130AM_CONDITIONAL([BUILD_DRIVER_ANDROID], [test "x$driver_android_enabled" != "xno"])
131
132# Libs required by Oculus Rift Driver
133AS_IF([test "x$driver_oculus_rift_enabled" != "xno"],
134	[PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
135
136# Libs required by HTC Vive Driver
137AS_IF([test "x$driver_htc_vive_enabled" != "xno"],
138	[PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
139
140# Libs required by Depoon Driver
141AS_IF([test "x$driver_deepoon_enabled" != "xno"],
142	[PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
143
144# Libs required by Sony PSVR Driver
145AS_IF([test "x$driver_psvr_enabled" != "xno"],
146	[PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
147
148# Libs required by NOLO VR Driver
149AS_IF([test "x$driver_nolo_enabled" != "xno"],
150	[PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
151
152# Libs required by 3Glasses HMD Driver
153AS_IF([test "x$driver_xgvr_enabled" != "xno"],
154        [PKG_CHECK_MODULES([hidapi], [$hidapi] >= 0.0.5)])
155
156# Do we build OpenGL example?
157AC_ARG_ENABLE([openglexample],
158        [AS_HELP_STRING([--enable-openglexample],
159                [enable building of OpenGL example [default=no]])],
160        [openglexample_enabled=$enableval],
161        [openglexample_enabled='no'])
162
163AM_CONDITIONAL([BUILD_OPENGL_EXAMPLE], [test "x$openglexample_enabled" != "xno"])
164
165# Libs required by OpenGL test
166AS_IF([test "x$openglexample_enabled" != "xno"], [
167	PKG_CHECK_MODULES([sdl2], [sdl2])
168
169	# Try to find OpenGL with pkg-config
170	PKG_CHECK_MODULES([GL], [gl], [],
171			# and try to find which lib to link to, -lGL first
172			[AC_CHECK_LIB(GL, glBegin, [GL_LIBS=-lGL],
173
174				# if that fails, try -lopengl32 (win32)
175				[AC_CHECK_LIB(opengl32, main, [GL_LIBS=-lopengl32],
176					[AC_CHECK_HEADERS([OpenGL/gl.h], [GL_LIBS="-framework OpenGL"],
177						AC_MSG_ERROR([GL not found])
178					)]
179				)]
180			)]
181	)
182
183	AC_SUBST(GL_LIBS)
184
185	# Try to find GLEW with pkg-config
186	PKG_CHECK_MODULES([GLEW], [glew], [],
187		# if that fails, check if there's a glew header
188		[AC_CHECK_HEADER([GL/glew.h], [GLEW_LIBS=-lGLEW; GLEW_CFLAGS=-DGLEW_STATIC], AC_MSG_ERROR([GLEW not found]))]
189	)
190
191	AC_SUBST(GLEW_LIBS)
192	AC_SUBST(GLEW_CFLAGS)
193])
194
195AC_PROG_CC
196AC_PROG_CC_C99
197
198AC_CONFIG_HEADERS([config.h])
199AC_CONFIG_FILES([Makefile src/Makefile tests/Makefile tests/unittests/Makefile examples/Makefile examples/opengl/Makefile examples/simple/Makefile pkg-config/openhmd.pc])
200AC_OUTPUT
201