lovr/Tuprules.tup

291 lines
9.5 KiB
Plaintext
Raw Normal View History

ROOT = $(TUP_CWD)
## Base
2020-05-29 22:27:49 +00:00
CC = @(CC)
2019-12-13 11:39:04 +00:00
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_@(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
2020-08-22 21:40:52 +00:00
CFLAGS_@(OPENXR) += -Ideps/openxr/include
CFLAGS_@(OCULUS) += -DLOVR_USE_OCULUS
CFLAGS_@(OCULUS) += -I@(OCULUS_PATH)/LibOVR/Include
2020-06-10 00:00:33 +00:00
CFLAGS_@(VRAPI) += -DLOVR_USE_VRAPI
2020-07-27 23:20:58 +00:00
CFLAGS_@(PICO) += -DLOVR_USE_PICO
2020-03-05 06:47:24 +00:00
CFLAGS_@(WEBXR) += -DLOVR_USE_WEBXR
## Platform
ifeq (@(PLATFORM),)
PLATFORM = @(TUP_PLATFORM)
else
PLATFORM = @(PLATFORM)
endif
2020-03-03 07:06:42 +00:00
2020-05-29 22:27:49 +00:00
LIB = libs
2020-07-07 02:22:57 +00:00
BUILD = @(CMAKE_DEPS)
DEPS = $(ROOT)/deps
2020-05-29 22:27:49 +00:00
2020-05-15 21:01:10 +00:00
## Windows
ifeq ($(PLATFORM),win32)
CFLAGS += -D_CRT_SECURE_NO_WARNINGS
CFLAGS += -Wno-language-extension-token
LDFLAGS += -lShell32 -lOle32
2020-07-07 02:34:53 +00:00
CFLAGS_@(GRAPHICS) += -DLOVR_GL
2020-05-15 21:01:10 +00:00
EXTRAS += lovr.lib lovr.exp
SUFFIX = .exe
ifeq (@(OPTIMIZE),y)
CONFIG = Release
else
CONFIG = Debug
endif
2020-07-07 02:22:57 +00:00
ifneq ($(BUILD),)
2020-05-15 21:01:10 +00:00
ifeq (@(LUAJIT),y)
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/luajit/src
LDFLAGS += -L$(BUILD)/luajit/src/$(CONFIG) -lluajit
LIBS += $(BUILD)/luajit/src/$(CONFIG)/luajit.dll
2020-05-15 21:01:10 +00:00
else
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/lua/src -I$(BUILD)/lua
LDFLAGS += -L$(BUILD)/lua/$(CONFIG) -llua
2020-05-15 21:01:10 +00:00
endif
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/glfw/include
CFLAGS_@(AUDIO) += -I$(DEPS)/openal-soft/include
CFLAGS_@(DATA) += -I$(DEPS)/msdfgen
CFLAGS_@(OPENVR) += -I$(DEPS)/openvr/headers
CFLAGS_@(PHYSICS) += -I$(DEPS)/ode/include -I$(BUILD)/ode/include
CFLAGS_@(ENET) += -I$(DEPS)/enet/include
LDFLAGS += -L$(BUILD)/glfw/src/$(CONFIG) -lglfw3dll
LDFLAGS_@(AUDIO) += -L$(BUILD)/openal/$(CONFIG) -lOpenAL32
LDFLAGS_@(DATA) += -L$(BUILD)/lib_msdfgen/$(CONFIG) -lmsdfgen
LDFLAGS_@(OPENVR) += -L$(DEPS)/openvr/bin/win64/$(CONFIG) -lopenvr_api64
LDFLAGS_@(PHYSICS) += -L$(BUILD)/ode/$(CONFIG) -lode
LDFLAGS_@(ENET) += -L$(BUILD)/enet/$(CONFIG) -lenet
LIBS += $(BUILD)/glfw/src/$(CONFIG)/glfw3.dll
LIBS_@(AUDIO) += $(BUILD)/glfw/src/$(CONFIG)/glfw3.dll
LIBS_@(DATA) += $(BUILD)/lib_msdfgen/$(CONFIG)/msdfgen.dll
LIBS_@(OPENVR) += $(DEPS)/openvr/bin/win64/openvr_api.dll
LIBS_@(PHYSICS) += $(BUILD)/ode/$(CONFIG)/ode.dll
2020-05-15 21:01:10 +00:00
endif
endif
## macOS
ifeq ($(PLATFORM),macosx)
PLATFORM = macos
LDFLAGS += -lobjc
2020-05-29 22:27:49 +00:00
LDFLAGS += -Wl,-rpath,@executable_path/$(LIB)
2020-07-07 02:34:53 +00:00
CFLAGS_@(GRAPHICS) += -DLOVR_GL
2020-07-07 02:22:57 +00:00
ifneq ($(BUILD),)
ifeq (@(LUAJIT),y)
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/luajit/src
LDFLAGS += -L$(BUILD)/luajit/src -lluajit -pagezero_size 10000 -image_base 100000000
LIBS += $(BUILD)/luajit/src/libluajit.dylib
else
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/lua/src -I$(BUILD)/lua
LDFLAGS += -L$(BUILD)/lua -llua
endif
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/glfw/include
CFLAGS_@(AUDIO) += -I$(DEPS)/openal-soft/include
CFLAGS_@(DATA) += -I$(DEPS)/msdfgen
CFLAGS_@(OPENVR) += -I$(DEPS)/openvr/headers
CFLAGS_@(PHYSICS) += -I$(DEPS)/ode/include -I$(BUILD)/ode/include
CFLAGS_@(ENET) += -I$(DEPS)/enet/include
LDFLAGS += -L$(BUILD)/glfw/src -lglfw
LDFLAGS_@(AUDIO) += -L$(BUILD)/openal -lopenal
LDFLAGS_@(DATA) += -L$(BUILD)/lib_msdfgen -lmsdfgen
LDFLAGS_@(OPENVR) += -L$(BUILD)/openvr_api -lopenvr_api
LDFLAGS_@(PHYSICS) += -L$(BUILD)/ode -lode
LDFLAGS_@(ENET) += -L$(BUILD)/enet -lenet
LIBS += $(BUILD)/glfw/src/libglfw.*dylib
LIBS_@(AUDIO) += $(BUILD)/openal/libopenal.*dylib
LIBS_@(DATA) += $(BUILD)/lib_msdfgen/libmsdfgen.dylib
LIBS_@(OPENVR) += $(BUILD)/openvr_api/libopenvr_api.dylib
LIBS_@(PHYSICS) += $(BUILD)/ode/libode.dylib
endif
endif
2020-03-03 07:06:42 +00:00
## Linux
ifeq ($(PLATFORM),linux)
LDFLAGS += -lm -lpthread
2020-05-29 22:27:49 +00:00
LDFLAGS += -Wl,-rpath,\$ORIGIN/$(LIB)
2020-07-07 02:34:53 +00:00
CFLAGS_@(GRAPHICS) += -DLOVR_GL
2020-07-07 02:22:57 +00:00
ifneq ($(BUILD),)
ifeq (@(LUAJIT),y)
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/luajit/src
LDFLAGS += -L$(BUILD)/luajit/src -lluajit
LIBS += $(BUILD)/luajit/src/libluajit.so
else
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/lua/src -I$(BUILD)/lua
LDFLAGS += -L$(BUILD)/lua -llua
endif
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/glfw/include
CFLAGS_@(AUDIO) += -I$(DEPS)/openal-soft/include
CFLAGS_@(DATA) += -I$(DEPS)/msdfgen
CFLAGS_@(OPENVR) += -I$(DEPS)/openvr/headers
CFLAGS_@(PHYSICS) += -I$(DEPS)/ode/include -I$(BUILD)/ode/include
CFLAGS_@(ENET) += -I$(DEPS)/enet/include
LDFLAGS += -L$(BUILD)/glfw/src -lglfw
LDFLAGS_@(AUDIO) += -L$(BUILD)/openal -lopenal
LDFLAGS_@(DATA) += -L$(BUILD)/lib_msdfgen -lmsdfgen
LDFLAGS_@(OPENVR) += -L$(BUILD)/openvr_api -lopenvr_api
LDFLAGS_@(PHYSICS) += -L$(BUILD)/ode -lode
LDFLAGS_@(ENET) += -L$(BUILD)/enet -lenet
LIBS += $(BUILD)/glfw/src/libglfw.*so*
LIBS_@(AUDIO) += $(BUILD)/openal/libopenal.*so*
LIBS_@(DATA) += $(BUILD)/lib_msdfgen/libmsdfgen.so
LIBS_@(OPENVR) += $(BUILD)/openvr_api/libopenvr_api.so
LIBS_@(PHYSICS) += $(BUILD)/ode/libode.so
endif
endif
2020-05-29 22:27:49 +00:00
## 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)
2020-07-02 16:24:06 +00:00
ANDROID_JAR = @(ANDROID_SDK)/sdk/platforms/android-@(ANDROID_VERSION)/android.jar
2020-05-29 22:27:49 +00:00
GLUE = @(ANDROID_SDK)/sdk/ndk-bundle/sources/android/native_app_glue
2020-07-07 02:22:57 +00:00
VRAPI_LIB_PATH = $(DEPS)/VrApi/Libs/Android/arm64-v8a/Release
2020-07-27 23:20:58 +00:00
PICO_LIB_PATH = $(DEPS)/pico/jni/arm64-v8a
2020-06-28 03:20:40 +00:00
CFLAGS += --target=aarch64-linux-android@(ANDROID_VERSION)
2020-05-29 22:27:49 +00:00
CFLAGS += -I$(GLUE)
2020-06-28 03:20:40 +00:00
LDFLAGS += --target=aarch64-linux-android@(ANDROID_VERSION)
2020-05-29 22:27:49 +00:00
LDFLAGS += -shared
LDFLAGS += -landroid
LDFLAGS += -lEGL
LDFLAGS += -lGLESv3
2020-06-28 03:20:40 +00:00
LIB = lib/arm64-v8a
2020-05-29 22:27:49 +00:00
PREFIX = $(LIB)/lib
SUFFIX = .so
2020-07-07 02:34:53 +00:00
CFLAGS_@(GRAPHICS) += -DLOVR_GLES
2020-07-27 23:20:58 +00:00
ACTIVITY_@(VRAPI) = Activity_vrapi
ACTIVITY_@(PICO) = Activity_pico
ifeq (@(ANDROID_MANIFEST),)
ANDROID_MANIFEST_@(VRAPI) = src/resources/AndroidManifest_vrapi.xml
ANDROID_MANIFEST_@(PICO) = src/resources/AndroidManifest_pico.xml
else
ANDROID_MANIFEST_y = @(ANDROID_MANIFEST)
endif
2020-05-29 22:27:49 +00:00
2020-06-29 23:51:15 +00:00
ifneq (@(ANDROID_ASSETS),)
ANDROID_ASSETS = -A @(ANDROID_ASSETS)
endif
2020-07-27 23:20:58 +00:00
CLASSPATH = $(ANDROID_JAR)
ifeq (@(PICO),y)
EXTRA_JARS = $(DEPS)/pico/classes.jar
ifeq (@(TUP_PLATFORM),win32)
CLASSPATH = "$(CLASSPATH);$(EXTRA_JARS)"
else
CLASSPATH = "$(CLASSPATH):$(EXTRA_JARS)"
endif
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 |>
2020-05-29 22:27:49 +00:00
2020-07-07 02:22:57 +00:00
ifneq ($(BUILD),)
2020-05-29 22:27:49 +00:00
ifeq (@(LUAJIT),y)
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/luajit/src
LDFLAGS += -L$(BUILD)/luajit/src -lluajit
STATIC_LIBS += $(BUILD)/luajit/src/libluajit.a
2020-05-29 22:27:49 +00:00
else
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/lua/src -I$(BUILD)/lua
LDFLAGS += -L$(BUILD)/lua -llua
2020-05-29 22:27:49 +00:00
endif
2020-07-07 02:22:57 +00:00
CFLAGS_@(AUDIO) += -I$(DEPS)/openal-soft/include
CFLAGS_@(DATA) += -I$(DEPS)/msdfgen
CFLAGS_@(PHYSICS) += -I$(DEPS)/ode/include -I$(BUILD)/ode/include
CFLAGS_@(ENET) += -I$(DEPS)/enet/include
CFLAGS_@(VRAPI) += -I$(DEPS)/VrApi/Include
2020-05-29 22:27:49 +00:00
2020-07-27 23:20:58 +00:00
LDFLAGS_@(AUDIO) += -L$(BUILD)/$(LIB) -lopenal
2020-07-07 02:22:57 +00:00
LDFLAGS_@(DATA) += -L$(BUILD)/lib_msdfgen -lmsdfgen
2020-07-27 23:20:58 +00:00
LDFLAGS_@(PHYSICS) += -L$(BUILD)/$(LIB) -lode
2020-07-07 02:22:57 +00:00
LDFLAGS_@(ENET) += -L$(BUILD)/enet -lenet
LDFLAGS_@(VRAPI) += -L$(VRAPI_LIB_PATH) -lvrapi
2020-07-27 23:20:58 +00:00
LDFLAGS_@(PICO) += -L$(PICO_LIB_PATH) -lPvr_NativeSDK
2020-05-29 22:27:49 +00:00
2020-07-27 23:20:58 +00:00
LIBS_@(AUDIO) += $(BUILD)/$(LIB)/libopenal.*so*
LIBS_@(PHYSICS) += $(BUILD)/$(LIB)/libode.so
2020-06-10 00:00:33 +00:00
LIBS_@(VRAPI) += $(VRAPI_LIB_PATH)/libvrapi.so
2020-07-27 23:20:58 +00:00
LIBS_@(PICO) += $(PICO_LIB_PATH)/libPvr_NativeSDK.so
2020-05-29 22:27:49 +00:00
endif
endif
## emscripten
2020-03-03 07:06:42 +00:00
ifeq ($(PLATFORM),web)
SUFFIX = .html
EXTRAS = lovr.js lovr.wasm
2020-03-04 03:27:58 +00:00
EXTRAS_@(THREAD) += lovr.worker.js
2020-08-28 18:58:05 +00:00
CFLAGS_@(OPTIMIZE) += -Os
LDFLAGS_@(OPTIMIZE) += -Os
2020-03-04 03:27:58 +00:00
LDFLAGS += -s USE_WEBGL2
LDFLAGS += -s FORCE_FILESYSTEM
2020-08-28 18:58:05 +00:00
LDFLAGS += -s EXPORTED_FUNCTIONS="['_main','_lovrDestroy','_webxr_attach','_webxr_detach','_lovrCanvasCreateFromHandle','_lovrCanvasDestroy','_lovrGraphicsSetCamera']"
2020-03-05 06:47:24 +00:00
LDFLAGS_@(WEBXR) += --js-library $(ROOT)/src/resources/webxr.js
2020-03-04 03:27:58 +00:00
LDFLAGS += --shell-file $(ROOT)/src/resources/lovr.html
2020-03-03 07:06:42 +00:00
CFLAGS_@(THREAD) += -s USE_PTHREADS=1
LDFLAGS_@(THREAD) += -s USE_PTHREADS=1
2020-07-07 02:34:53 +00:00
CFLAGS_@(GRAPHICS) += -DLOVR_WEBGL
2020-03-03 07:06:42 +00:00
2020-07-07 02:22:57 +00:00
CFLAGS += -I$(DEPS)/lua/src -I$(BUILD)/lua
CFLAGS_@(DATA) += -I$(DEPS)/msdfgen
CFLAGS_@(PHYSICS) += -I$(DEPS)/ode/include -I$(BUILD)/ode/include
2020-07-07 02:22:57 +00:00
STATIC_LIBS += $(BUILD)/lua/liblua.a
STATIC_LIBS_@(DATA) += $(BUILD)/lib_msdfgen/libmsdfgen.a
STATIC_LIBS_@(PHYSICS) += $(BUILD)/ode/libode.a
2020-03-03 07:06:42 +00:00
endif
LIBS += $(LIBS_y)
2019-12-13 11:39:04 +00:00
CFLAGS += @(EXTRA_CFLAGS)
LDFLAGS += @(EXTRA_LDFLAGS)
2019-09-27 03:19:50 +00:00
## Macros
!cc = |> ^ CC %b^ $(CC) $(CFLAGS_y) $(CFLAGS) -o %o -c %f |>
2020-05-29 22:27:49 +00:00
!ld = |> ^ LD %o^ $(CC) -o %o %f $(LDFLAGS_y) $(LDFLAGS) |>
!xd = |> ^ XD %f^ xxd -i %f > %o |>
!cp = |> ^ CP %b^ cp %f %o |>