Skip to content
Merged
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
10 changes: 10 additions & 0 deletions .editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
root = true

[*]
end_of_line = lf
charset = utf-8
insert_final_newline = true
trim_trailing_whitespace = true

[*.{bat}]
end_of_line = crlf
13 changes: 13 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
* text=auto eol=lf
*.c text eol=lf
*.h text eol=lf
Makefile text eol=lf
*.bat text eol=crlf
*.png -text
*.jpg -text
*.jpeg -text
*.gif -text
*.pdf -text
*.zip -text
*.exe -text
*.dll -text
54 changes: 54 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,18 @@ jobs:
New-Item -ItemType Directory -Force package\epic | Out-Null
New-Item -ItemType Directory -Force package\xbox | Out-Null

$templateRoot = "package\mod-template"
$templateDirectories = @(
"$templateRoot\build"
"$templateRoot\docs"
"$templateRoot\include"
"$templateRoot\vendor\kb"
"$templateRoot\vendor\minhook\include"
"$templateRoot\vendor\nuklear\include"
"$templateRoot\vendor\stb"
)
New-Item -ItemType Directory -Force -Path $templateDirectories | Out-Null

Copy-Item build\overdub.dll package\steam\
Copy-Item bootstrap\XAPOFX1_5.dll package\steam\

Expand All @@ -68,6 +80,26 @@ jobs:
Copy-Item build\overdub.dll package\xbox\
Copy-Item bootstrap\dsound.dll package\xbox\

Copy-Item LICENSE "$templateRoot\"
Copy-Item build\overdub.lib "$templateRoot\build\"
Copy-Item docs\MOD_DEVELOPMENT.md "$templateRoot\docs\"
Copy-Item docs\mod-development "$templateRoot\docs\" -Recurse
Copy-Item docs\lua "$templateRoot\docs\" -Recurse
Copy-Item include\* "$templateRoot\include\" -Recurse
Copy-Item mod\main.c "$templateRoot\"
Copy-Item mod\Makefile "$templateRoot\"
Copy-Item mod\mod.vcxproj "$templateRoot\"
Copy-Item mod\mod.vcxproj.filters "$templateRoot\"
Copy-Item mod\README.md "$templateRoot\"
Copy-Item mod\compile_flags.txt "$templateRoot\"
Copy-Item vendor\kb\kb_text_shape.h "$templateRoot\vendor\kb\"
Copy-Item vendor\kb\LICENSE "$templateRoot\vendor\kb\"
Copy-Item vendor\minhook\include\MinHook.h "$templateRoot\vendor\minhook\include\"
Copy-Item vendor\nuklear\include\nuklear.h "$templateRoot\vendor\nuklear\include\"
Copy-Item vendor\nuklear\LICENSE "$templateRoot\vendor\nuklear\"
Copy-Item vendor\stb\stb_sprintf.h "$templateRoot\vendor\stb\"
Copy-Item vendor\stb\LICENSE "$templateRoot\vendor\stb\"

Compress-Archive `
-Path package\steam\* `
-DestinationPath "overdub-$env:VERSION.steam.zip"
Expand All @@ -80,6 +112,26 @@ jobs:
-Path package\xbox\* `
-DestinationPath "overdub-$env:VERSION.xbox.zip"

Compress-Archive `
-Path "$templateRoot\*" `
-DestinationPath "overdub-$env:VERSION.mod-template.zip"

- name: Validate mod template
shell: pwsh
run: |
$templateRoot = (Resolve-Path package\mod-template).Path
$validationRoot = Join-Path (Resolve-Path package).Path "mod-template-validation"

msbuild "$templateRoot\mod.vcxproj" `
/m `
/p:Configuration=Release `
/p:Platform=x64 `
/p:ModName=example `
"/p:OutDir=$validationRoot\out\" `
"/p:IntDir=$validationRoot\obj\" `
/p:TreatWarningAsError=true `
/warnAsError

- name: Upload release assets
shell: pwsh
env:
Expand All @@ -89,4 +141,6 @@ jobs:
"overdub-$env:VERSION.steam.zip" `
"overdub-$env:VERSION.epic.zip" `
"overdub-$env:VERSION.xbox.zip" `
"overdub-$env:VERSION.mod-template.zip" `
"build\overdub.lib" `
--clobber
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
.code
*.vscode*
*.kdev4*
*.code-workspace

build
tmp
Expand All @@ -12,6 +13,7 @@ tmp
*.dll
*.out
*.txt
!mod/compile_flags.txt
*.o
*.d
*.obj
Expand All @@ -20,4 +22,3 @@ tmp

tags
cscope.out

95 changes: 11 additions & 84 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
CC := x86_64-w64-mingw32-gcc
BUILD_DIR := build

OBJ_DIR_DEBUG := $(BUILD_DIR)/obj/debug
OBJ_DIR_RELEASE := $(BUILD_DIR)/obj/release
OBJ_DIR_TEST_UI := $(BUILD_DIR)/obj/test_ui
OBJ_DIR_TEST_LUA := $(BUILD_DIR)/obj/test_lua
OBJ_DIR_DEBUG := $(BUILD_DIR)/obj/debug
OBJ_DIR_RELEASE := $(BUILD_DIR)/obj/release

INC := -I. -Iinclude -Ivendor
CFLAGS_COMMON := -std=c11 -Wall -Wextra -Wno-unused-function -DWIN32_LEAN_AND_MEAN -DCOBJMACROS $(INC)
CFLAGS_COMMON := -std=c11 -Wall -Wextra -Wno-unused-function -mcx16 -DWIN32_LEAN_AND_MEAN -DCOBJMACROS $(INC)
LDFLAGS_COMMON := -shared
LIBS_DLL := -luser32 -lkernel32 -ladvapi32 -lshlwapi -ld3d12 -ld3d11 -ldxgi -ldxguid -luuid -ldbghelp
LIBS_TEST_UI := -luser32 -lkernel32 -ladvapi32 -lshlwapi -ld3d11 -ldxguid -ldbghelp

CFLAGS_DEBUG := -g3 -O0
LDFLAGS_DEBUG :=
Expand All @@ -21,108 +18,38 @@ LDFLAGS_RELEASE := -Wl,--gc-sections -flto
LUA_SRCS := $(filter-out vendor/lua/src/lua.c vendor/lua/src/luac.c,$(wildcard vendor/lua/src/*.c))
SRCS := $(shell find src -name '*.c') $(LUA_SRCS)

SRCS_TEST_UI := \
src/arena.c \
src/file.c \
src/debug.c \
src/globals.c \
src/ini.c \
src/input.c \
src/log.c \
src/misc.c \
src/mod_host.c \
src/mod_manager.c \
src/nk_kb_text_shape.c \
src/nk_font_runtime.c \
src/path.c \
src/profiler.c \
src/scratch.c \
src/sigscan.c \
src/str_utf.c \
src/str.c \
src/string_pool.c \
src/ui_console.c \
src/ui_keybind_capture.c \
src/ui_manager.c \
src/ui_mod_manager.c \
src/ui_nuklear.c \
src/unreal.c \
src/vendor.c \
src/vendor_kb.c \
src/builtin/cache.c \
src/builtin/common.c \
src/builtin/details_panel.c \
src/builtin/kismet_disassembler.c \
src/builtin/search.c \
src/builtin/uobject_search.c \
src/builtin/ufunction_call.c \
src/builtin/ufunction_tracer.c \
src/builtin/tweaks.c \
test/test_ui_overview.c \
test/test_ui_style_configurator.c
OBJS_DEBUG := $(SRCS:%.c=$(OBJ_DIR_DEBUG)/%.o)
OBJS_RELEASE := $(SRCS:%.c=$(OBJ_DIR_RELEASE)/%.o)

SRCS_TEST_UI += $(LUA_SRCS)
SRCS_TEST_LUA := src/lua_runtime.c test/test_lua_runtime.c $(LUA_SRCS)

OBJS_DEBUG := $(SRCS:%.c=$(OBJ_DIR_DEBUG)/%.o)
OBJS_RELEASE := $(SRCS:%.c=$(OBJ_DIR_RELEASE)/%.o)
OBJS_TEST_UI := $(SRCS_TEST_UI:%.c=$(OBJ_DIR_TEST_UI)/%.o)
OBJS_TEST_LUA := $(SRCS_TEST_LUA:%.c=$(OBJ_DIR_TEST_LUA)/%.o)

.PHONY: all debug release test_ui test_lua clean
.PHONY: all debug release clean

all: debug

debug: $(OBJS_DEBUG) | $(BUILD_DIR)
@printf "LINK\t$(BUILD_DIR)/overdub.dll\n"
@$(CC) -o $(BUILD_DIR)/overdub.dll $(OBJS_DEBUG) $(LDFLAGS_COMMON) $(LDFLAGS_DEBUG) $(LIBS_DLL)
@$(CC) -o $(BUILD_DIR)/overdub.dll $(OBJS_DEBUG) $(LDFLAGS_COMMON) $(LDFLAGS_DEBUG) -Wl,--out-implib,$(BUILD_DIR)/overdub.lib $(LIBS_DLL)

release: $(OBJS_RELEASE) | $(BUILD_DIR)
@printf "LINK\t$(BUILD_DIR)/overdub.dll\n"
@$(CC) -o $(BUILD_DIR)/overdub.dll $(OBJS_RELEASE) $(LDFLAGS_COMMON) $(LDFLAGS_RELEASE) $(LIBS_DLL)

test_ui: test/test_ui.c $(OBJS_TEST_UI) | $(BUILD_DIR)
@printf "LINK\t$(BUILD_DIR)/overdub_test_ui.exe\n"
@$(CC) $(CFLAGS_COMMON) -Wno-missing-braces -g3 -O0 -DBUILD_TEST_UI -o $(BUILD_DIR)/overdub_test_ui.exe test/test_ui.c $(OBJS_TEST_UI) $(LIBS_TEST_UI)
@printf "RUN\t$(BUILD_DIR)/overdub_test_ui.exe\n"
@wine $(BUILD_DIR)/overdub_test_ui.exe
@$(CC) -o $(BUILD_DIR)/overdub.dll $(OBJS_RELEASE) $(LDFLAGS_COMMON) $(LDFLAGS_RELEASE) -Wl,--out-implib,$(BUILD_DIR)/overdub.lib $(LIBS_DLL)

test_lua: $(OBJS_TEST_LUA) | $(BUILD_DIR)
@printf "LINK\t$(BUILD_DIR)/overdub_test_lua.exe\n"
@$(CC) $(CFLAGS_COMMON) -g3 -O0 -DBUILD_TEST_LUA -o $(BUILD_DIR)/overdub_test_lua.exe $(OBJS_TEST_LUA)
@printf "RUN\t$(BUILD_DIR)/overdub_test_lua.exe\n"
@wine $(BUILD_DIR)/overdub_test_lua.exe

$(BUILD_DIR) $(OBJ_DIR_DEBUG) $(OBJ_DIR_RELEASE) $(OBJ_DIR_TEST) $(OBJ_DIR_TEST_UI) $(OBJ_DIR_TEST_LUA):
$(BUILD_DIR) $(OBJ_DIR_DEBUG) $(OBJ_DIR_RELEASE):
@printf "MKDIR\t$@\n"
@mkdir -p $@

$(OBJ_DIR_DEBUG)/%.o: %.c
@mkdir -p $(dir $@)
@printf "CC\t$@\n"
@$(CC) $(CFLAGS_COMMON) $(CFLAGS_DEBUG) -DBUILD_DEBUG -MMD -MP -c $< -o $@
@$(CC) $(CFLAGS_COMMON) $(CFLAGS_DEBUG) -DBUILD_DEBUG -DOVERDUB_BUILD_DLL -MMD -MP -c $< -o $@

$(OBJ_DIR_RELEASE)/%.o: %.c
@mkdir -p $(dir $@)
@printf "CC\t$@\n"
@$(CC) $(CFLAGS_COMMON) $(CFLAGS_RELEASE) -DBUILD_RELEASE -MMD -MP -c $< -o $@

$(OBJ_DIR_TEST_UI)/%.o: %.c
@mkdir -p $(dir $@)
@printf "CC\t$@\n"
@$(CC) $(CFLAGS_COMMON) -g3 -O0 -DBUILD_TEST_UI -MMD -MP -c $< -o $@

$(OBJ_DIR_TEST_LUA)/%.o: %.c
@mkdir -p $(dir $@)
@printf "CC\t$@\n"
@$(CC) $(CFLAGS_COMMON) -g3 -O0 -DBUILD_TEST_LUA -MMD -MP -c $< -o $@
@$(CC) $(CFLAGS_COMMON) $(CFLAGS_RELEASE) -DBUILD_RELEASE -DOVERDUB_BUILD_DLL -MMD -MP -c $< -o $@

clean:
@printf "RM\t$(BUILD_DIR)\n"
@rm -rf $(BUILD_DIR)

-include $(OBJS_DEBUG:.o=.d)
-include $(OBJS_RELEASE:.o=.d)
-include $(OBJS_TEST_UI:.o=.d)
-include $(OBJS_TEST_LUA:.o=.d)

Loading
Loading