diff --git a/Config.uk b/Config.uk new file mode 100644 index 0000000..1a780ba --- /dev/null +++ b/Config.uk @@ -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 diff --git a/Library.uk b/Library.uk new file mode 100644 index 0000000..7e086f1 --- /dev/null +++ b/Library.uk @@ -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" diff --git a/Makefile.uk b/Makefile.uk new file mode 100644 index 0000000..e132eb9 --- /dev/null +++ b/Makefile.uk @@ -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) diff --git a/README.md b/README.md index 68c4896..442373d 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/main.c b/main.c new file mode 100644 index 0000000..6fc5545 --- /dev/null +++ b/main.c @@ -0,0 +1,7 @@ +extern int openarena_main(int argc, char* argv[]); + +int main(int argc, char *argv[]) +{ + return openarena_main(argc, argv); +} +