mirror of
https://github.com/bjornbytes/lovr.git
synced 2024-07-04 21:43:34 +00:00
267 lines
9.2 KiB
Plaintext
267 lines
9.2 KiB
Plaintext
ROOT = $(TUP_CWD)
|
|
|
|
## Base
|
|
CC = @(CC)
|
|
CFLAGS += -std=c99 -pedantic
|
|
CFLAGS += -D_POSIX_C_SOURCE=200809L
|
|
CFLAGS += -I$(ROOT)/src
|
|
CFLAGS += -I$(ROOT)/src/modules
|
|
CFLAGS += -fvisibility=hidden
|
|
CFLAGS += -Wall -Wextra
|
|
CFLAGS += -Wno-unused-parameter
|
|
CFLAGS_@(OPENVR) += -Wno-typedef-redefinition
|
|
CFLAGS_@(STRICT) += -Werror
|
|
CFLAGS_@(DEBUG) += -g
|
|
CFLAGS_@(OPTIMIZE) += -Os
|
|
CFLAGS_@(SANITIZE) += -fsanitize=address,undefined
|
|
LDFLAGS_@(SANITIZE) += -fsanitize=address,undefined
|
|
|
|
## Modules
|
|
CFLAGS_@(AUDIO) += -DLOVR_ENABLE_AUDIO
|
|
CFLAGS_@(DATA) += -DLOVR_ENABLE_DATA
|
|
CFLAGS_@(EVENT) += -DLOVR_ENABLE_EVENT
|
|
CFLAGS_@(FILESYSTEM) += -DLOVR_ENABLE_FILESYSTEM
|
|
CFLAGS_@(GRAPHICS) += -DLOVR_ENABLE_GRAPHICS
|
|
CFLAGS_@(GRAPHICS) += -DLOVR_@(GL)
|
|
CFLAGS_@(HEADSET) += -DLOVR_ENABLE_HEADSET
|
|
CFLAGS_@(MATH) += -DLOVR_ENABLE_MATH
|
|
CFLAGS_@(PHYSICS) += -DLOVR_ENABLE_PHYSICS
|
|
CFLAGS_@(THREAD) += -DLOVR_ENABLE_THREAD
|
|
CFLAGS_@(TIMER) += -DLOVR_ENABLE_TIMER
|
|
CFLAGS_@(JSON) += -DLOVR_ENABLE_JSON
|
|
CFLAGS_@(ENET) += -DLOVR_ENABLE_ENET
|
|
|
|
## Headset backends
|
|
CFLAGS_@(SIMULATOR) += -DLOVR_USE_DESKTOP_HEADSET
|
|
CFLAGS_@(OPENVR) += -DLOVR_USE_OPENVR
|
|
CFLAGS_@(OPENXR) += -DLOVR_USE_OPENXR
|
|
CFLAGS_@(OCULUS) += -DLOVR_USE_OCULUS
|
|
CFLAGS_@(OCULUS) += -I@(OCULUS_PATH)/LibOVR/Include
|
|
CFLAGS_@(VRAPI) += -DLOVR_USE_VRAPI
|
|
CFLAGS_@(VRAPI) += -I$(ROOT)/deps/VrApi/Include
|
|
CFLAGS_@(WEBXR) += -DLOVR_USE_WEBXR
|
|
CFLAGS_@(LEAP) += -DLOVR_USE_LEAP
|
|
|
|
## Platform
|
|
ifeq (@(PLATFORM),)
|
|
PLATFORM = @(TUP_PLATFORM)
|
|
else
|
|
PLATFORM = @(PLATFORM)
|
|
endif
|
|
|
|
LIB = libs
|
|
|
|
## Windows
|
|
ifeq ($(PLATFORM),win32)
|
|
CFLAGS += -D_CRT_SECURE_NO_WARNINGS
|
|
CFLAGS += -Wno-language-extension-token
|
|
LDFLAGS += -lShell32 -lOle32
|
|
EXTRAS += lovr.lib lovr.exp
|
|
SUFFIX = .exe
|
|
|
|
ifeq (@(OPTIMIZE),y)
|
|
CONFIG = Release
|
|
else
|
|
CONFIG = Debug
|
|
endif
|
|
|
|
ifeq (@(CMAKE_DEPS),y)
|
|
ifeq (@(LUAJIT),y)
|
|
CFLAGS += -I$(ROOT)/deps/luajit/src
|
|
LDFLAGS += -L$(ROOT)/build/luajit/src/$(CONFIG) -lluajit
|
|
LIBS += $(ROOT)/build/luajit/src/$(CONFIG)/luajit.dll
|
|
else
|
|
CFLAGS += -I$(ROOT)/deps/lua/src -I$(ROOT)/build/lua
|
|
LDFLAGS += -L$(ROOT)/build/lua/$(CONFIG) -llua
|
|
endif
|
|
|
|
CFLAGS += -I$(ROOT)/deps/glfw/include
|
|
CFLAGS_@(AUDIO) += -I$(ROOT)/deps/openal-soft/include
|
|
CFLAGS_@(DATA) += -I$(ROOT)/deps/msdfgen
|
|
CFLAGS_@(OPENVR) += -I$(ROOT)/deps/openvr/headers
|
|
CFLAGS_@(PHYSICS) += -I$(ROOT)/deps/ode/include -I$(ROOT)/build/ode/include
|
|
CFLAGS_@(ENET) += -I$(ROOT)/deps/enet/include
|
|
|
|
LDFLAGS += -L$(ROOT)/build/glfw/src/$(CONFIG) -lglfw3dll
|
|
LDFLAGS_@(AUDIO) += -L$(ROOT)/build/openal/$(CONFIG) -lOpenAL32
|
|
LDFLAGS_@(DATA) += -L$(ROOT)/build/lib_msdfgen/$(CONFIG) -lmsdfgen
|
|
LDFLAGS_@(OPENVR) += -L$(ROOT)/deps/openvr/bin/win64/$(CONFIG) -lopenvr_api64
|
|
LDFLAGS_@(PHYSICS) += -L$(ROOT)/build/ode/$(CONFIG) -lode
|
|
LDFLAGS_@(ENET) += -L$(ROOT)/build/enet/$(CONFIG) -lenet
|
|
|
|
LIBS += $(ROOT)/build/glfw/src/$(CONFIG)/glfw3.dll
|
|
LIBS_@(AUDIO) += $(ROOT)/build/glfw/src/$(CONFIG)/glfw3.dll
|
|
LIBS_@(DATA) += $(ROOT)/build/lib_msdfgen/$(CONFIG)/msdfgen.dll
|
|
LIBS_@(OPENVR) += $(ROOT)/deps/openvr/bin/win64/openvr_api.dll
|
|
LIBS_@(PHYSICS) += $(ROOT)/build/ode/$(CONFIG)/ode.dll
|
|
endif
|
|
endif
|
|
|
|
## macOS
|
|
ifeq ($(PLATFORM),macosx)
|
|
PLATFORM = macos
|
|
LDFLAGS += -lobjc
|
|
LDFLAGS += -Wl,-rpath,@executable_path/$(LIB)
|
|
|
|
ifeq (@(CMAKE_DEPS),y)
|
|
ifeq (@(LUAJIT),y)
|
|
CFLAGS += -I$(ROOT)/deps/luajit/src
|
|
LDFLAGS += -L$(ROOT)/build/luajit/src -lluajit -pagezero_size 10000 -image_base 100000000
|
|
LIBS += $(ROOT)/build/luajit/src/libluajit.dylib
|
|
else
|
|
CFLAGS += -I$(ROOT)/deps/lua/src -I$(ROOT)/build/lua
|
|
LDFLAGS += -L$(ROOT)/build/lua -llua
|
|
endif
|
|
|
|
CFLAGS += -I$(ROOT)/deps/glfw/include
|
|
CFLAGS_@(AUDIO) += -I$(ROOT)/deps/openal-soft/include
|
|
CFLAGS_@(DATA) += -I$(ROOT)/deps/msdfgen
|
|
CFLAGS_@(OPENVR) += -I$(ROOT)/deps/openvr/headers
|
|
CFLAGS_@(PHYSICS) += -I$(ROOT)/deps/ode/include -I$(ROOT)/build/ode/include
|
|
CFLAGS_@(ENET) += -I$(ROOT)/deps/enet/include
|
|
|
|
LDFLAGS += -L$(ROOT)/build/glfw/src -lglfw
|
|
LDFLAGS_@(AUDIO) += -L$(ROOT)/build/openal -lopenal
|
|
LDFLAGS_@(DATA) += -L$(ROOT)/build/lib_msdfgen -lmsdfgen
|
|
LDFLAGS_@(OPENVR) += -L$(ROOT)/build/openvr_api -lopenvr_api
|
|
LDFLAGS_@(PHYSICS) += -L$(ROOT)/build/ode -lode
|
|
LDFLAGS_@(ENET) += -L$(ROOT)/build/enet -lenet
|
|
|
|
LIBS += $(ROOT)/build/glfw/src/libglfw.*dylib
|
|
LIBS_@(AUDIO) += $(ROOT)/build/openal/libopenal.*dylib
|
|
LIBS_@(DATA) += $(ROOT)/build/lib_msdfgen/libmsdfgen.dylib
|
|
LIBS_@(OPENVR) += $(ROOT)/build/openvr_api/libopenvr_api.dylib
|
|
LIBS_@(PHYSICS) += $(ROOT)/build/ode/libode.dylib
|
|
endif
|
|
endif
|
|
|
|
## Linux
|
|
ifeq ($(PLATFORM),linux)
|
|
LDFLAGS += -lm -lpthread
|
|
LDFLAGS += -Wl,-rpath,\$ORIGIN/$(LIB)
|
|
|
|
ifeq (@(CMAKE_DEPS),y)
|
|
ifeq (@(LUAJIT),y)
|
|
CFLAGS += -I$(ROOT)/deps/luajit/src
|
|
LDFLAGS += -L$(ROOT)/build/luajit/src -lluajit
|
|
LIBS += $(ROOT)/build/luajit/src/libluajit.so
|
|
else
|
|
CFLAGS += -I$(ROOT)/deps/lua/src -I$(ROOT)/build/lua
|
|
LDFLAGS += -L$(ROOT)/build/lua -llua
|
|
endif
|
|
|
|
CFLAGS += -I$(ROOT)/deps/glfw/include
|
|
CFLAGS_@(AUDIO) += -I$(ROOT)/deps/openal-soft/include
|
|
CFLAGS_@(DATA) += -I$(ROOT)/deps/msdfgen
|
|
CFLAGS_@(OPENVR) += -I$(ROOT)/deps/openvr/headers
|
|
CFLAGS_@(PHYSICS) += -I$(ROOT)/deps/ode/include -I$(ROOT)/build/ode/include
|
|
CFLAGS_@(ENET) += -I$(ROOT)/deps/enet/include
|
|
|
|
LDFLAGS += -L$(ROOT)/build/glfw/src -lglfw
|
|
LDFLAGS_@(AUDIO) += -L$(ROOT)/build/openal -lopenal
|
|
LDFLAGS_@(DATA) += -L$(ROOT)/build/lib_msdfgen -lmsdfgen
|
|
LDFLAGS_@(OPENVR) += -L$(ROOT)/build/openvr_api -lopenvr_api
|
|
LDFLAGS_@(PHYSICS) += -L$(ROOT)/build/ode -lode
|
|
LDFLAGS_@(ENET) += -L$(ROOT)/build/enet -lenet
|
|
|
|
LIBS += $(ROOT)/build/glfw/src/libglfw.*so*
|
|
LIBS_@(AUDIO) += $(ROOT)/build/openal/libopenal.*so*
|
|
LIBS_@(DATA) += $(ROOT)/build/lib_msdfgen/libmsdfgen.so
|
|
LIBS_@(OPENVR) += $(ROOT)/build/openvr_api/libopenvr_api.so
|
|
LIBS_@(PHYSICS) += $(ROOT)/build/ode/libode.so
|
|
endif
|
|
endif
|
|
|
|
## Android
|
|
ifeq ($(PLATFORM),android)
|
|
CC = @(ANDROID_SDK)/sdk/ndk-bundle/toolchains/llvm/prebuilt/@(ANDROID_HOST_TAG)/bin/clang
|
|
TOOLS = @(ANDROID_SDK)/sdk/build-tools/@(ANDROID_BUILD_TOOLS_VERSION)
|
|
ANDROID_JAR = @(ANDROID_SDK)/sdk/platforms/android-@(ANDROID_VERSION)/android.jar
|
|
GLUE = @(ANDROID_SDK)/sdk/ndk-bundle/sources/android/native_app_glue
|
|
VRAPI_LIB_PATH = $(ROOT)/deps/VrApi/Libs/Android/arm64-v8a/Release
|
|
CFLAGS += --target=aarch64-linux-android@(ANDROID_VERSION)
|
|
CFLAGS += -I$(GLUE)
|
|
LDFLAGS += --target=aarch64-linux-android@(ANDROID_VERSION)
|
|
LDFLAGS += -shared
|
|
LDFLAGS += -landroid
|
|
LIB = lib/arm64-v8a
|
|
PREFIX = $(LIB)/lib
|
|
SUFFIX = .so
|
|
|
|
ifneq (@(ANDROID_ASSETS),)
|
|
ANDROID_ASSETS = -A @(ANDROID_ASSETS)
|
|
endif
|
|
|
|
# Macros
|
|
!dx = |> ^ DX %b^ dx --dex --output=%o %f |>
|
|
!zipalign = |> ^ ZIPALIGN %f^ $(TOOLS)/zipalign -f 4 %f %o |>
|
|
!apksigner = |> ^ APKSIGNER %o^ $(TOOLS)/apksigner sign --ks @(ANDROID_KEYSTORE) --ks-pass @(ANDROID_KEYSTORE_PASS) --out %o %f |>
|
|
|
|
ifeq (@(CMAKE_DEPS),y)
|
|
ifeq (@(LUAJIT),y)
|
|
CFLAGS += -I$(ROOT)/deps/luajit/src
|
|
LDFLAGS += -L$(ROOT)/build/luajit/src -lluajit
|
|
STATIC_LIBS += $(ROOT)/build/luajit/src/libluajit.a
|
|
else
|
|
CFLAGS += -I$(ROOT)/deps/lua/src -I$(ROOT)/build/lua
|
|
LDFLAGS += -L$(ROOT)/build/lua -llua
|
|
endif
|
|
|
|
CFLAGS_@(AUDIO) += -I$(ROOT)/deps/openal-soft/include
|
|
CFLAGS_@(DATA) += -I$(ROOT)/deps/msdfgen
|
|
CFLAGS_@(PHYSICS) += -I$(ROOT)/deps/ode/include -I$(ROOT)/build/ode/include
|
|
CFLAGS_@(ENET) += -I$(ROOT)/deps/enet/include
|
|
|
|
LDFLAGS_@(AUDIO) += -L$(ROOT)/build/openal -lopenal
|
|
LDFLAGS_@(DATA) += -L$(ROOT)/build/lib_msdfgen -lmsdfgen
|
|
LDFLAGS_@(PHYSICS) += -L$(ROOT)/build/ode -lode
|
|
LDFLAGS_@(ENET) += -L$(ROOT)/build/enet -lenet
|
|
LDFLAGS_@(VRAPI) += -L$(VRAPI_LIB_PATH) -lvrapi
|
|
|
|
LIBS_@(AUDIO) += $(ROOT)/build/openal/libopenal.*so*
|
|
LIBS_@(PHYSICS) += $(ROOT)/build/ode/libode.so
|
|
LIBS_@(VRAPI) += $(VRAPI_LIB_PATH)/libvrapi.so
|
|
endif
|
|
endif
|
|
|
|
## emscripten
|
|
ifeq ($(PLATFORM),web)
|
|
SUFFIX = .html
|
|
EXTRAS = lovr.js lovr.wasm
|
|
EXTRAS_@(THREAD) += lovr.worker.js
|
|
LDFLAGS += -s USE_GLFW=3
|
|
LDFLAGS += -s USE_WEBGL2
|
|
LDFLAGS += -s FULL_ES2
|
|
LDFLAGS += -s FULL_ES3
|
|
LDFLAGS += -s GL_PREINITIALIZED_CONTEXT
|
|
LDFLAGS += -s FORCE_FILESYSTEM
|
|
LDFLAGS += -s EXPORTED_FUNCTIONS="[
|
|
LDFLAGS += '_main',
|
|
LDFLAGS += '_lovrCanvasCreateFromHandle','_lovrGraphicsSetCamera',
|
|
LDFLAGS += '_mat4_set','_mat4_identity','_mat4_invert','_mat4_multiply','_mat4_rotateQuat',
|
|
LDFLAGS += '_mat4_transform','_mat4_transformDirection'
|
|
LDFLAGS += ]"
|
|
LDFLAGS_@(WEBXR) += --js-library $(ROOT)/src/resources/webxr.js
|
|
LDFLAGS += --shell-file $(ROOT)/src/resources/lovr.html
|
|
CFLAGS_@(THREAD) += -s USE_PTHREADS=1
|
|
LDFLAGS_@(THREAD) += -s USE_PTHREADS=1
|
|
|
|
CFLAGS += -I$(ROOT)/deps/lua/src -I$(ROOT)/build/lua
|
|
CFLAGS_@(DATA) += -I$(ROOT)/deps/msdfgen
|
|
CFLAGS_@(PHYSICS) += -I$(ROOT)/deps/ode/include -I$(ROOT)/build/ode/include
|
|
|
|
STATIC_LIBS += $(ROOT)/build/lua/liblua.a
|
|
STATIC_LIBS_@(DATA) += $(ROOT)/build/lib_msdfgen/libmsdfgen.a
|
|
STATIC_LIBS_@(PHYSICS) += $(ROOT)/build/ode/libode.a
|
|
endif
|
|
|
|
LIBS += $(LIBS_y)
|
|
CFLAGS += @(EXTRA_CFLAGS)
|
|
LDFLAGS += @(EXTRA_LDFLAGS)
|
|
|
|
## Macros
|
|
!cc = |> ^ CC %b^ $(CC) $(CFLAGS_y) $(CFLAGS) -o %o -c %f |>
|
|
!ld = |> ^ LD %o^ $(CC) -o %o %f $(LDFLAGS_y) $(LDFLAGS) |>
|
|
!xd = |> ^ XD %f^ xxd -i %f > %o |>
|
|
!cp = |> ^ CP %b^ cp %f %o |>
|