ARX  1.0
The next-generation open source augmented reality toolkit.
Loading...
Searching...
No Matches
Platform.h
Go to the documentation of this file.
1/*
2 * Platform.h
3 * artoolkitX
4 *
5 * This file is part of artoolkitX.
6 *
7 * artoolkitX is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * artoolkitX is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU Lesser General Public License for more details.
16 *
17 * You should have received a copy of the GNU Lesser General Public License
18 * along with artoolkitX. If not, see <http://www.gnu.org/licenses/>.
19 *
20 * As a special exception, the copyright holders of this library give you
21 * permission to link this library with independent modules to produce an
22 * executable, regardless of the license terms of these independent modules, and to
23 * copy and distribute the resulting executable under terms of your choice,
24 * provided that you also meet, for each linked independent module, the terms and
25 * conditions of the license of that module. An independent module is a module
26 * which is neither derived from nor based on this library. If you modify this
27 * library, you may extend this exception to your version of the library, but you
28 * are not obligated to do so. If you do not wish to do so, delete this exception
29 * statement from your version.
30 *
31 * Copyright 2018 Realmax, Inc.
32 * Copyright 2015 Daqri, LLC.
33 * Copyright 2011-2015 ARToolworks, Inc.
34 *
35 * Author(s): Julian Looser, Philip Lamb
36 *
37 */
38
39#ifndef PLATFORM_H
40#define PLATFORM_H
41
42#if defined _WIN32 || defined _WIN64
43
44// Include Windows API.
45# ifndef WIN32_LEAN_AND_MEAN
46# define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
47# endif
48# include <sdkddkver.h> // Minimum supported version. See http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745.aspx
49# include <windows.h>
50# if defined(WINAPI_FAMILY)
51# if (WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP) // Windows Phone 8.1 and later.
52# if (_WIN32_WINNT >= 0x0603) // (_WIN32_WINNT_WINBLUE)
53# define ARX_TARGET_PLATFORM_WINRT 1
54# else
55# error artoolkitX for Windows Phone requires Windows Phone 8.1 or later. Please compile with Visual Studio 2013 or later with Windows Phone 8.1 SDK installed and with _WIN32_WINNT=0x0603 in your project compiler settings (setting /D_WIN32_WINNT=0x0603).
56# endif
57# elif (WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) // Windows Store 8.1 and later.
58# if (_WIN32_WINNT >= 0x0603) // (_WIN32_WINNT_WINBLUE)
59# define ARX_TARGET_PLATFORM_WINRT 1
60# else
61# error artoolkitX for Windows Store requires Windows 8.1 or later. Please compile with Visual Studio 2013 or later with Windows 8.1 SDK installed and with _WIN32_WINNT=0x0603 in your project compiler settings (setting /D_WIN32_WINNT=0x0603).
62# endif
63# else
64# define ARX_TARGET_PLATFORM_WINDOWS 1
65# endif
66# else
67# define ARX_TARGET_PLATFORM_WINDOWS 1
68# endif
69#endif
70
71// Configure preprocessor definitions for current platform
72
73#if ARX_TARGET_PLATFORM_WINDOWS || ARX_TARGET_PLATFORM_WINRT
74
75# ifdef ARX_STATIC
76# define ARX_EXTERN
77# else
78# ifdef ARX_EXPORTS
79# define ARX_EXTERN __declspec(dllexport)
80# else
81# define ARX_EXTERN __declspec(dllimport)
82# endif
83# endif
84# define CALL_CONV __stdcall
85
86#elif ARX_TARGET_PLATFORM_MACOS || ARX_TARGET_PLATFORM_IOS || ARX_TARGET_PLATFORM_LINUX || ARX_TARGET_PLATFORM_ANDROID || ARX_TARGET_PLATFORM_EMSCRIPTEN
87
88# define ARX_EXTERN
89# define CALL_CONV
90
91#else
92
93# error Must define one of: ARX_TARGET_PLATFORM_MACOS ARX_TARGET_PLATFORM_IOS, ARX_TARGET_PLATFORM_LINUX ARX_TARGET_PLATFORM_ANDROID ARX_TARGET_PLATFORM_WINDOWS ARX_TARGET_PLATFORM_WINRT.
94
95#endif
96
97// Utility preprocessor directive so only one change needed if Java class name changes
98#define JNIFUNCTION(sig) Java_org_artoolkitx_arx_arxj_ARX_1jni_##sig
99
100
101typedef void (CALL_CONV *PFN_LOGCALLBACK)(const char* msg);
102
103
104#endif // !PLATFORM_H
void(CALL_CONV * PFN_LOGCALLBACK)(const char *msg)
Definition: Platform.h:101