Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 51 additions & 0 deletions Config.uk
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
menuconfig LIBOPENARENA
bool "libopenarena - a server for OpenArena, a community-produced deathmatch FPS based of GPL idTech3 technology"
default n
select LIBPOSIX_EVENTFD
select LIBPOSIX_USER
select LIBUKVMEM
select LIBPOSIX_MMAP
select LIBMUSL
select LIBLWIP
select LIBUKNETDEV_EINFO_LIBPARAM
select LWIP_TCP_KEEPALIVE
select LWIP_THREADS
select LWIP_IPV6
select LWIP_DHCP
select LIBZLIB

if LIBOPENARENA

config LIBOPENARENA_MAIN_FUNCTION
bool "Provide main function"
default n

config LIBOPENARENA_ASM
bool "Provide assembly code for optimized math calculations"
default y

config LIBOPENARENA_BOTLIB
bool "Provide code supporting bot players actions"
default y

config LIBOPENARENA_GAME
bool "Provide code for ingame logic"
default y

config LIBOPENARENA_NULL
bool "Provide code for dummy implementations of rendering-related functions"
default y

config LIBOPENARENA_QCOMMON
bool "Provide common code for server and client"
default y

config LIBOPENARENA_SERVER
bool "Provide code for the game loop, frames generation and networking communication"
default y

config LIBOPENARENA_SYS
bool "Provide code for OS-level interaction"
default y

endif
5 changes: 5 additions & 0 deletions Library.uk
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
name := "OpenArena"
description := "A server for OpenArena, a community-produced deathmatch FPS based of GPL idTech3 technology."
homepage := "https://openarena.ws/"
version := 0.8.8 6f768215fc27355a90a3fd35b4078fa4d88ac60a79a665de7d4eb8aaf267a5c5 https://github.com/OpenArena/engine/archive/refs/heads/master.zip
license := "GPL-2.0"
226 changes: 226 additions & 0 deletions Makefile.uk
Original file line number Diff line number Diff line change
@@ -0,0 +1,226 @@
$(eval $(call addlib_s,libopenarena,$(CONFIG_LIBOPENARENA)))

LIBOPENARENA_VERSION = 0.8.8
LIBOPENARENA_BASENAME = engine-master
LIBOPENARENA_URL = https://github.com/OpenArena/engine/archive/refs/heads/master.zip
$(eval $(call fetch,libopenarena,$(LIBOPENARENA_URL)))

LIBOPENARENA_SRC = $(LIBOPENARENA_ORIGIN)/$(LIBOPENARENA_BASENAME)/code

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_MAIN_FUNCTION) += $(LIBOPENARENA_BASE)/main.c

LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_ASM) += -I$(LIBOPENARENA_SRC)/asm
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_BOTLIB) += -I$(LIBOPENARENA_SRC)/botlib
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_GAME) += -I$(LIBOPENARENA_SRC)/game
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_NULL) += -I$(LIBOPENARENA_SRC)/null
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_QCOMMON) += -I$(LIBOPENARENA_SRC)/qcommon
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_SERVER) += -I$(LIBOPENARENA_SRC)/server
LIBOPENARENA_CINCLUDES-$(CONFIG_LIBOPENARENA_SYS) += -I$(LIBOPENARENA_SRC)/sys

CFLAGS_OA = -std=gnu11 -Wall -fno-strict-aliasing -Wimplicit -Wstrict-prototypes -pipe -DSTANDALONE -DPRODUCT_VERSION=\"3\" -Wformat=2 -Wno-format-zero-length \
-Wformat-security -Wno-format-nonliteral -Wstrict-aliasing=2 -Wmissing-format-attribute -Wdisabled-optimization -Werror-implicit-function-declaration -MMD -D__linux__
OPTIMIZE_OA = -DNDEBUG -O3 -fomit-frame-pointer -funroll-loops -ffast-math -flto
SERVER_CFLAGS_OA = -DUSE_VOIP

LIBOPENARENA_SYS_MAIN_FLAGS-y += -Dmain=openarenaserver_main

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_bot.c
LIBOPENARENA_SV_BOT_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_client.c
LIBOPENARENA_SV_CLIENT_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_ccmds.c
LIBOPENARENA_SV_CCMDS_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_game.c
LIBOPENARENA_SV_GAME_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_init.c
LIBOPENARENA_SV_INIT_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_main.c
LIBOPENARENA_SV_MAIN_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_net_chan.c
LIBOPENARENA_SV_NET_CHAN_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_snapshot.c
LIBOPENARENA_SV_SNAPSHOT_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SERVER) += $(LIBOPENARENA_SRC)/server/sv_world.c
LIBOPENARENA_SV_WORLD_FLAGS-$(CONFIG_LIBOPENARENA_SERVER) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cm_load.c
LIBOPENARENA_CM_LOAD_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cm_patch.c
LIBOPENARENA_CM_PATCH_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cm_polylib.c
LIBOPENARENA_CM_POLYLIB_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cm_test.c
LIBOPENARENA_CM_TEST_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cm_trace.c
LIBOPENARENA_CM_TRACE_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cmd.c
LIBOPENARENA_CMD_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/common.c
LIBOPENARENA_COMMON_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/cvar.c
LIBOPENARENA_CVAR_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/files.c
LIBOPENARENA_FILES_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/md4.c
LIBOPENARENA_MD4_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/msg.c
LIBOPENARENA_MSG_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/net_chan.c
LIBOPENARENA_NET_CHAN_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/net_ip.c
LIBOPENARENA_NET_IP_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/huffman.c
LIBOPENARENA_HUFFMAN_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/q_math.c
LIBOPENARENA_Q_MATH_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/q_shared.c
LIBOPENARENA_Q_SHARED_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/unzip.c
LIBOPENARENA_UNZIP_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/ioapi.c
LIBOPENARENA_IOAPI_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/vm.c
LIBOPENARENA_VM_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/vm_interpreted.c
LIBOPENARENA_VM_INTERPRETED_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_bspq3.c
LIBOPENARENA_BE_AAS_BSPQ3_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_cluster.c
LIBOPENARENA_BE_AAS_CLUSTER_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_debug.c
LIBOPENARENA_BE_AAS_DEBUG_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_entity.c
LIBOPENARENA_BE_AAS_ENTITY_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_file.c
LIBOPENARENA_BE_AAS_FILE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_main.c
LIBOPENARENA_BE_AAS_MAIN_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_move.c
LIBOPENARENA_BE_AAS_MOVE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_optimize.c
LIBOPENARENA_BE_AAS_OPTIMIZE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_reach.c
LIBOPENARENA_BE_AAS_REACH_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_route.c
LIBOPENARENA_BE_AAS_ROUTE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_routealt.c
LIBOPENARENA_BE_AAS_ROUTEALT_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_aas_sample.c
LIBOPENARENA_BE_AAS_SAMPLE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_char.c
LIBOPENARENA_BE_AI_CHAR_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_chat.c
LIBOPENARENA_BE_AI_CHAT_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_gen.c
LIBOPENARENA_BE_AI_GEN_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_goal.c
LIBOPENARENA_BE_AI_GOAL_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_move.c
LIBOPENARENA_BE_AI_MOVE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_weap.c
LIBOPENARENA_BE_AI_WEAP_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ai_weight.c
LIBOPENARENA_BE_AI_WEIGHT_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_ea.c
LIBOPENARENA_BE_EA_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/be_interface.c
LIBOPENARENA_BE_INTERFACE_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_crc.c
LIBOPENARENA_L_CRC_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_libvar.c
LIBOPENARENA_L_LIBVAR_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_log.c
LIBOPENARENA_L_LOG_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_memory.c
LIBOPENARENA_L_MEMORY_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_precomp.c
LIBOPENARENA_L_PRECOMP_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_script.c
LIBOPENARENA_L_SCRIPT_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(LIBOPENARENA_SRC)/botlib/l_struct.c
LIBOPENARENA_L_STRUCT_FLAGS-$(CONFIG_LIBOPENARENA_BOTLIB) += $(CFLAGS_OA) $(OPTIMIZE_OA) -DBOTLIB

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_NULL) += $(LIBOPENARENA_SRC)/null/null_client.c
LIBOPENARENA_NULL_CLIENT_FLAGS-$(CONFIG_LIBOPENARENA_NULL) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_NULL) += $(LIBOPENARENA_SRC)/null/null_input.c
LIBOPENARENA_NULL_INPUT_FLAGS-$(CONFIG_LIBOPENARENA_NULL) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_NULL) += $(LIBOPENARENA_SRC)/null/null_snddma.c
LIBOPENARENA_NULL_SNDDMA_FLAGS-$(CONFIG_LIBOPENARENA_NULL) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SYS) += $(LIBOPENARENA_SRC)/sys/con_log.c
LIBOPENARENA_CON_LOG_FLAGS-$(CONFIG_LIBOPENARENA_SYS) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SYS) += $(LIBOPENARENA_SRC)/sys/sys_main.c
LIBOPENARENA_SYS_MAIN_FLAGS-$(CONFIG_LIBOPENARENA_SYS) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_ASM) += $(LIBOPENARENA_SRC)/asm/snapvector.c
LIBOPENARENA_SNAPVECTOR_FLAGS-$(CONFIG_LIBOPENARENA_ASM) += $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_ASM) += $(LIBOPENARENA_SRC)/asm/ftola.c
LIBOPENARENA_FTOLA_FLAGS-$(CONFIG_LIBOPENARENA_ASM) += $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_QCOMMON) += $(LIBOPENARENA_SRC)/qcommon/vm_x86.c
LIBOPENARENA_VM_X86_FLAGS-$(CONFIG_LIBOPENARENA_QCOMMON) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SYS) += $(LIBOPENARENA_SRC)/sys/sys_unix.c
LIBOPENARENA_SYS_UNIX_FLAGS-$(CONFIG_LIBOPENARENA_SYS) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)

LIBOPENARENA_SRCS-$(CONFIG_LIBOPENARENA_SYS) += $(LIBOPENARENA_SRC)/sys/con_tty.c
LIBOPENARENA_CON_TTY_FLAGS-$(CONFIG_LIBOPENARENA_SYS) += -DDEDICATED $(CFLAGS_OA) $(SERVER_CFLAGS_OA) $(OPTIMIZE_OA)
47 changes: 45 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,45 @@
# lib-openarena
OpenArena Engine
# OpenArena for Unikraft
This is the port of OpenArena for Unikraft as external library.

## Build
OpenArena depends on the following extern libraries, that need to
be added to `Makefile`:

* `libc`, e.g. `musl`
* compression library, e.g. `libzlib`
* network stack, e.g. `lwip`

Before you proceed to writing your own application, you can use the `main()`
function provided in the Nginx glue code by enabling it in its configuration
menu.

## Root filesystem
### Creating the filesystem
OpenArena needs a filesystem which should contain its configuration files for the server, along with textures files. Therefore, the filesystem needs to be created before
running the VM. You can find an example in the `catalog-core` entry dedicated to OpenArena.

### Using the filesystem
Mounting the filesystem is a transparent operation. All you have to do
is to provide the right Qemu parameters in order for Unikraft to mount
the filesystem. We will use the cpio support for filesystems and for
this you will need to use the following parameters:

```bash
-initrd initrd.cpio \
-append "vfs.fstab=[\"initrd0:/:extract::ramfs=1:\"]"
```

To enable cpio, you'll need to select the following `Config.uk` entries:

```bash
select LIBUKCPIO
select LIBDEVFS
select LIBDEVFS_AUTOMOUNT
select LIBDEVFS_DEVSTDOUT
select LIBVFSCORE
select LIBVFSCORE_AUTOMOUNT_UP
```

## Further information
Please refer to the `README.md` as well as the documentation in the `docs/`
subdirectory of the main unikraft repository.
7 changes: 7 additions & 0 deletions main.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
extern int openarena_main(int argc, char* argv[]);

int main(int argc, char *argv[])
{
return openarena_main(argc, argv);
}