Commit Graph

354 Commits

Author SHA1 Message Date
Nevyn Bengtsson 8108b6aa5a Switch luajit GC and remove image_base settings
to fix dyld shared cache errors on macOS 11
2021-01-11 15:29:05 +01:00
bjorn 3f975bcc8f Android plugin support;
- Link against dl (this was probably why ffi.load didn't work)
- Store shared libraries in the apk uncompressed
  - Libraries are added during the "package" aapt call instead of "add".
    - Because -0 (used to store uncompressed) only works during package.
    - classes.dex is added here too now.
    - There's only one aapt invocation now, which is kinda nice.
  - The lib folder needs to be in a subfolder now ("raw" was chosen).
    - Because "package" and "add" subcommands work differently.
  - Store shared libraries in the apk page aligned
    - Required passing -p to the zipalign invocation.
    - This is needed because dlopen("zip!path") needs it.
  - android:extractNativeLibs="false" is added to the XML manifest.
  - apk sizes are bigger, but disk usage and install time should improve.
- Fix a bug with moving plugin libraries into the lib folder with CMake.
- Use lovrFilesystemGetSource instead of lovrFilesystemGetExecutablePath
  to get the proper path to the apk.
2020-12-28 14:45:56 -07:00
bjorn bc5ed02d7d Plugins autolink against Lua; 2020-12-28 12:37:35 -07:00
bjorn b356ce2546 Plugins;
- The plugins folder can contain native plugins.
- CMake will build plugins with CMakeLists in them
  - They can check the LOVR variable to see if they are being built inside LOVR.
  - They can set the LOVR_PLUGIN_TARGETS variable to a list of targets they build.
    - If blank, all non-imported targets added in the folder will be used.
  - The libraries built by their targets will be moved next to the executable or into the apk.
- The library loader now tries to load libraries next to the executable or in the APK.
  - It is "fixed function" now, this may be improved in the future.
- The lovr.filesystem C require path has been removed.
- enet and cjson have been removed.  Use plugins.
2020-12-28 12:37:35 -07:00
bjorn 30e01f94a3 Upgrade stb_image; rm stb_image threadlocal patch;
stb_image's vertical flip flag was not thread safe in the version
of stb_image we were using.  We patched stb_image to use a thread
local variable for the flag.  stb_image has since been upgraded to
expose a thread local version of the flag, so our patch is no longer
necessary after upgrading.

The CMake flag to enable the thread local patch did not make very much
sense because thread local stuff is unconditionally used elsewhere.
2020-12-25 16:43:25 -07:00
bjorn 4ded7ef37a CMake: fix duplicated os_linux source; 2020-12-25 16:19:09 -07:00
bjorn e16719c946 CMake: Set luajit EXCLUDE_FROM_ALL;
This prints a warning but it's nice to not build the luajit executable.

Ideally the target would not be created at all but the CMakeLists we
are using does not expose this as an option.

This is congruent with the vanilla Lua build options.
2020-12-25 16:17:59 -07:00
bjorn 6690ce9171 CMake: no GLFW_INSTALL; 2020-12-25 16:08:51 -07:00
bjorn 80062941dc CMake: Use target_compile_definitions more;
- Prefer PRIVATE
- Omit redundant -D
2020-12-25 16:06:40 -07:00
bjorn efc963d8f8 CMake hides symbols by default;
This is more consistent with tup.
2020-12-25 15:50:08 -07:00
bjornbytes 842efe36c7 Handle openvr-specific warnings more precisely;
Instead of disabling a warning for the entire project, it is only
disabled while processing the OpenVR header.
2020-11-21 14:09:51 -07:00
Jakob Bornecrantz ca04882093 OpenXR: Add support for X11 and EGL on Linux 2020-11-16 17:02:51 -07:00
bjornbytes 40c403dfb6 CMake: Add LOVR_SYSTEM_OPENXR;
Searches for the system-installed OpenXR loader using pkg-config.
2020-11-16 17:02:51 -07:00
Bjorn 8a3d365268
Merge pull request #299 from Wallbraker/linux-openxr
Linux OpenXR support
2020-11-16 13:51:41 -07:00
Jakob Bornecrantz 1400cd201a OpenXR: Add support for X11 and EGL on Linux 2020-11-15 22:51:20 +00:00
bjornbytes dda1f6f3b0 CMake: Add LOVR_SYSTEM_OPENXR;
Searches for the system-installed OpenXR loader using pkg-config.
2020-11-15 22:49:00 +00:00
bjorn 64f9a310c3 Disable enet on emscripten;
UDP doesn't work properly.
2020-11-12 18:08:05 -07:00
bjorn 827dfda748 TextureData:encode returns Blob; rm core/png; 2020-11-12 18:08:05 -07:00
bjornbytes 13fe2411a3 CMake: Add LOVR_SYSTEM_OPENXR;
Searches for the system-installed OpenXR loader using pkg-config.
2020-11-12 18:08:04 -07:00
bjornbytes a68320c66a Always rebuild APK; 2020-11-02 11:47:44 -07:00
mcc 2be1c777d7 Add a check so that if ANDROID_KEYSTORE_PASS is not given, apksigner can still be invoked.
This is done by omitting the --ks-pass argument completely
2020-10-27 23:27:02 -04:00
bjorn f1447fd69a lovr.graphics.get/setViewPose; lovr.graphics.get/setProjection; 2020-09-24 19:03:37 -07:00
bjorn 28144c8143 OpenXR Android stuff; 2020-08-29 19:45:52 -06:00
bjorn 3cb291c866 rm leap motion driver;
Planning on using the new Ultraleap OpenXR API layer.  It's possible
that this will be added back if that doesn't work out.
2020-08-22 14:05:40 -06:00
bjorn 6cadcea65d WebXR updates;
- Make the renderloop synchronous by hijacking the RAF to run on the
  XRSession when active.
- Convert os_web to use emscripten's native HTML5 interface instead
  of going through GLFW.
- Stop using preinitialized GL context -- lovrPlatformCreateWindow
  now creates the context.
- GLES2/3 emulation is not necessary.
- Remove inline sessions.  The VR simulator is used to render to the
  Canvas instead.  webxr_attach and webxr_detach are used to replace
  replace the active headset driver with the webxr driver when an
  immersive session starts.
- Add noop desktop_getSkeleton.
2020-08-20 13:28:07 -06:00
bjorn 65470f1e0e Update webxr driver; rm webvr; 2020-08-16 00:31:20 -06:00
Nevyn Bengtsson 4dcca11a78 fix case problem in VrApi include path
in the sdk, 'Include' folder is capital I. With lowercase in
cmake, build fails on case sensitive file systems.
2020-08-04 14:59:23 +02:00
Nevyn Bengtsson 27384ac62c Fix Pico build
* lovrPlatformGetBundlePath was missing the root argument
* ANDROID_SDK can't be assumed to be the parent of the ndk folder, in case it's a side-by-side installation of the NDK. Instead, ANDROID_SDK should be provided with -D
* One more thing we could mention in the docs that I ran into: Installing java with apt gave me an incompatible version. It worked better to just -DJAVA_HOME= to the java that comes with Android studio (/snap/android-studio/91/android-studio/jre on ubuntu).
2020-08-04 10:42:04 +02:00
bjorn 91fb120dcc tup: pico rules; 2020-07-27 17:20:58 -06:00
bjorn ac58a1aeba Pico: Draw the rest of the owl;
Add entrypoints, headset backend code, fill in the Activity, and
add various special cases to account for the asynchronous render loop,
lack of sRGB support, and OpenGL state resets.
2020-07-27 14:56:21 -06:00
bjorn 58ab637465 Custom os implementation for pico; 2020-07-27 14:28:40 -06:00
bjorn b0b9e38da6 Pico: add pico jar and missing DRIVER_PICO enumerant; 2020-07-27 14:25:57 -06:00
bjorn a59c7fee40 Fix AndroidManifest.xml path;
The file has to literally be named AndroidManifest.xml so it has
to be copied to that name.
2020-07-27 14:18:28 -06:00
bjorn e7d4e6cf7b Start pico headset backend; 2020-07-27 13:58:52 -06:00
bjorn d25e20fb9d mv AndroidManifest.xml AndroidManifest_vrapi.xml; 2020-07-27 13:47:32 -06:00
bjorn 92bd4f60cf CMake: Clean up more android files; 2020-07-27 13:16:22 -06:00
bjorn dc2774f136 CMake: Make vrapi an imported target; 2020-07-27 13:16:07 -06:00
bjorn 87b979f51c mv Activity.java Activity_vrapi.java; 2020-07-27 12:50:27 -06:00
bjorn 4a7557b0d1 Clean up Android CMake stuff; 2020-07-27 12:48:01 -06:00
bjorn 9777306b70 rm oculus mobile; 2020-07-02 10:46:10 -06:00
bjorn 0a27a0b17b Fix ANDROID_ASSETS option; 2020-06-29 17:51:15 -06:00
bjorn 6c6c5fd360 CMake android support; 2020-06-29 17:20:26 -06:00
bjorn b34c03bcc8 Tup build system for android; 2020-06-09 18:02:03 -06:00
bjorn 6d2fdac89f Prefix headset implementation files with headset_; 2020-05-24 13:32:13 -06:00
l. coues 61e53f09ff Add webxr to CMake
Default to off unless build with emscripten
2020-05-06 23:07:59 +02:00
bjorn b9a2bddd25 Put all the audio stuff in one file;
If there was ever some sort of hypothetical switch to a different
audio library, this would make such a switch easier.
2020-05-03 12:54:35 -06:00
bjorn 9c044ee91a CMake: Don't exclude Lua lib targets; 2020-03-02 22:24:14 -08:00
bjorn fa771b04bd Fix CMake; 2020-02-23 01:01:34 -08:00
mcc 8d7427d74a The path to libOVR.lib has changed in more recent versions of the Oculus SDK.
They no longer ship separate Debug and Release binaries.
2020-02-17 14:45:03 -05:00
bjorn 47f4319ba8 core/png; rm stb_image_write; 2020-02-16 04:11:55 -08:00
bjorn 51afbd9fd4 CMake: Also include msdfgen so when building as .app; 2020-01-24 22:10:15 -08:00
bjorn a0634005f3 CMake: Turn MACOSX_RPATH ON for msdfgen;
I think it's off because it's targeting an older version of CMake
or something.  There was a warning about CMP0042 as well.
2020-01-24 22:02:13 -08:00
bjorn 158fcca994 CMake: explicitly link with objc runtime on macOS; 2020-01-22 16:30:21 -08:00
bjorn dd6d737a43 CMake: compile binary resources earlier; 2020-01-09 21:57:13 -08:00
Nevyn Bengtsson d987dd0dc3 Bump msdfgen + add move_dll for it
Fixes #184
2020-01-06 20:19:52 +01:00
bjorn c9b1f257bf api: try new file naming convention; Tupfile: cleanup;
I assume full responsibility for any catastrophes this causes.
2019-12-31 19:31:44 -08:00
bjorn f12a092739 OpenXR build instructions;
It is probably bad that there is not a better place to put this,
but it is better than nothing.
2019-12-31 18:29:18 -08:00
bjorn d228dc95d7 Automatically convert binary resources;
- Teach CMake how to compile binary resources to C headers, like xxd.
- Note: tup is already using xxd to do this.
- gitignore binary resource headers to reduce git noise and avoid problematic
  interactions between git and build systems.
2019-12-29 11:25:30 -08:00
mcc 21a52368f5 Patch in thread local storage for stb_image vflip
This makes loading images in multiple threads concurrently safe.

Adds a new CMake variable LOVR_USE_THREADLOCAL, by default on
2019-12-20 16:09:18 -05:00
mcc 3ff94d8797 Bring back old File C API (read-only currently)
This code path is not used anywhere in this commit, but aids in developing Lovr addons.
2019-12-17 20:06:42 -05:00
bjorn e2d8f8c645 platform -> os;
The function names are staying the same for now.
2019-12-13 19:55:46 -08:00
bjorn 33991b41ad tup macOS fixes;
- Need to use dylib suffix.
- Need pagezero stuff (should we only do this when using LuaJIT?)
- rpath is totally different.
- stb_vorbis alloca broke?
2019-12-13 07:27:37 -08:00
bjorn 584d627784 CMake: Add LOVR_BUILD_EXE;
This flag can be turned off to only build dependencies.
2019-12-13 03:35:02 -08:00
bjorn 2f9400a5f7 Adjust includes; 2019-12-10 13:01:28 -08:00
bjorn 488c125c5f Draw the rest of the owl; 2019-12-10 12:19:50 -08:00
bjorn fd16865dd1 Enable threads for wasm builds; 2019-12-05 13:37:27 -08:00
bjorn c904872df0 rm unused wasm zlib flag; 2019-12-05 12:43:57 -08:00
bjorn 871542bddf Use relative rpath on Linux; 2019-12-04 14:07:35 -08:00
bjorn 25bdc05343 rm unused physfs cmake option; 2019-11-23 01:17:00 -08:00
bjorn 23c36597fc CMake: Suppress giant OpenVR warnings; 2019-11-11 19:14:35 -08:00
Bjorn 26aa87034a
Merge pull request #166 from alloverse/fix/vs2019
Fix move_dll for VS2019
2019-11-07 14:26:03 -08:00
Nevyn Bengtsson 66aa0449a5 Fix move_dll for VS2019
TARGET_FILE_DIR will do the right thing regardless of VR version
2019-11-07 23:09:47 +01:00
bjorn 0bd5fced12 Use new glfw method for avoiding chdir; 2019-11-03 15:31:21 -08:00
bjorn d21911d010 Add core/map hash table; rm lib/map; 2019-10-30 00:07:05 -07:00
bjorn 50279d1d9f LOVR_USE_LUAJIT define is not used; 2019-10-22 20:21:41 -07:00
bjorn b35ebc15b6 rm LOVR_USE_SSE;
It doesn't really improve performance on an average LÖVR app and
isn't worth the complexity.
2019-10-22 16:46:54 -07:00
bjorn 505d315c18 Tell GLFW to not change the working directory; 2019-10-14 16:10:48 -07:00
bjorn c8fd4d1f29 CMake: Add LOVR_BUILD_BUNDLE to build as .app on macOS; 2019-10-14 15:24:27 -07:00
bjorn 8c0ae3fbb3 More WebVR (controller) fixes; 2019-10-09 14:54:07 -07:00
bjorn d8d07bfbe8 CMakeLists: Fix the order of words the; 2019-10-09 13:38:01 -07:00
bjorn e9cec44298 Update emscripten compile flags;
- wasm is the default now
- -Os makes things way smaller
- rm unused mat4_translate function
2019-10-09 13:36:35 -07:00
bjorn 5f404e2b1f WebVR fixes;
- Re-add the maf.c file that exports all the maf symbols.
- Fix lovrGpuTock for WebGL.
2019-10-07 19:50:17 -07:00
bjorn eb83962fc6 OpenXR fixes; 2019-10-02 16:29:09 -07:00
bjorn e96c541244 Multithreaded builds on Windows; Formatting; 2019-09-18 16:12:08 -07:00
bjorn fb2d8aae2c Fix CMakeLists; 2019-08-21 16:33:13 -07:00
bjorn cd09e1e695 rm sds; 2019-08-21 16:30:20 -07:00
bjorn 8d4760167f luax is now api; 2019-08-21 15:27:26 -07:00
bjorn 23bba1d59b CMake; 2019-07-16 20:30:51 -07:00
mcc 6f45b90044 Fix CMakeLists.txt after animator removed 2019-07-11 13:30:26 -07:00
bjorn 79a19ef267 Fix M_PI redefinition;
We just set it in util now.
2019-06-28 00:13:45 -07:00
bjorn eb1e257209 Add new array implementation; Upgrade filesystem;
Filesystem:

- Uses streaming file IO.
- Uses less memory when requiring files.
- Simplifies its require path implementation.
2019-06-16 13:30:30 -07:00
bjorn 0e5a55b641 Update CMakeLists; 2019-06-02 01:09:22 -07:00
bjorn 5b1e281d4c Switch to a fork of LuaJIT that supports android; 2019-05-21 00:26:21 -07:00
bjorn 7645f4c014 Add core folder; 2019-05-20 02:47:33 -07:00
bjorn a17f10e273 Add modules folder; 2019-05-19 00:38:35 -07:00
bjorn 4a47afca38 Organize api folder; 2019-05-19 00:31:42 -07:00
bjorn 1792f066f2 Fix CMakeLists; Fix buffer unmapping; Formatting; 2019-05-18 01:09:06 -07:00
bjorn 6f7c30e7e2 Single-translation-unit experiment; 2019-05-15 12:05:56 -07:00
bjorn 8ee7a7c9a3 haha windows; 2019-05-13 04:28:42 -07:00
bjorn b86340ac69 LOVR_USE_LEAP is false by default; 2019-05-12 22:23:02 -07:00