[+] Protobuf support
This commit is contained in:
parent
ad3a926476
commit
224618d26d
6
.gitignore
vendored
6
.gitignore
vendored
@ -1,3 +1,9 @@
|
||||
# Compilers/platform specific binaries
|
||||
|
||||
Win32/*
|
||||
bin/*
|
||||
|
||||
|
||||
# Aurora's general purpose JS/TS/C/C++/Go vs/vscode/intellij/codelite gitignore reference
|
||||
# Almost usable for Java and Qt
|
||||
|
||||
|
@ -124,7 +124,9 @@ local addBuildCommand = function(when, scriptType, path, cwdRelToProject, args)
|
||||
sRelWd = Aurora.Settings.sRelWd,
|
||||
sRelSymbols = Aurora.Settings.sRelSymbols,
|
||||
sRelLinkLibs = Aurora.Settings.sRelLinkLibs,
|
||||
sRelCompilerWd = Aurora.Settings.sRelCompilerWd
|
||||
sRelCompilerWd = Aurora.Settings.sRelCompilerWd,
|
||||
sRelWin32 = Aurora.Settings.sRelWin32,
|
||||
sRelUnixBins = Aurora.Settings.sRelUnixBins,
|
||||
}
|
||||
command = command .. " --settings=" .. base64.encode(json.encode(settings))
|
||||
|
||||
|
@ -9,6 +9,7 @@ end
|
||||
|
||||
local function escapeBinaryPath(bin)
|
||||
bin = path.translate(bin, path.getDefaultSeparator())
|
||||
bin = os.realpath(bin)
|
||||
|
||||
if (os.host() == "windows") then
|
||||
return "\"" .. bin .. "\""
|
||||
|
@ -307,6 +307,10 @@ local function auBlockProjectKeyResourceScript(processor, value, map, tasks)
|
||||
end, processor)
|
||||
end
|
||||
|
||||
local function auBlockProjectKeyProtobuf(processor, value)
|
||||
__pushFilter(value, "value", auProtobufFiles, processor, true)
|
||||
end
|
||||
|
||||
local function auBlockProjectKeySoftDepends(processor, value)
|
||||
__pushFilter(value, "value", function(obj)
|
||||
handleDepends(processor, obj, true)
|
||||
@ -384,7 +388,8 @@ auProjectBlockHandlers =
|
||||
events = auBlockProjectKeyBuildEvent,
|
||||
actions = auBlockProjectKeyBuildAction,
|
||||
features = auBlockKeyFeature,
|
||||
resourceScript = auBlockProjectKeyResourceScript
|
||||
resourceScript = auBlockProjectKeyResourceScript,
|
||||
protobuf = auBlockProjectKeyProtobuf
|
||||
}
|
||||
|
||||
auProjectBlockHandlers["soft-depends"] = auBlockProjectKeySoftDepends
|
||||
@ -413,7 +418,7 @@ auProjectRefHandlers["depends"] = auBlockProjectRefKeyDepends
|
||||
"impInclude", "implInclude", "impIncludes", "implIncludes", "clangIgnore",
|
||||
"msvcIgnore", "excludes", "depends", "require",
|
||||
"eval", "lua", "events", "actions", "staticImpDefines", "features",
|
||||
"links", "soft-depends", "resourceScript"
|
||||
"links", "soft-depends", "resourceScript", "protobuf"
|
||||
}
|
||||
|
||||
local kReferenceTasks = {"eval", "includes", "include", "includes"} --, "features"}
|
||||
|
@ -0,0 +1,34 @@
|
||||
local function addProtobufFiles(files)
|
||||
local projName = auGetCurrentProject()
|
||||
local proj = auGetCurrentProjectMeta()
|
||||
|
||||
local basePath = Aurora.Settings.sAbsRoot
|
||||
|
||||
if (proj and proj.path) then
|
||||
basePath = proj.path
|
||||
end
|
||||
|
||||
local baseProto = path.join(Aurora.Settings.sAbsCompilerWd, "ProtobufTemp")
|
||||
|
||||
local targetBase = nil
|
||||
if (projName) then
|
||||
targetBase = path.join(Aurora.Settings.sAbsCompilerWd, "ProtobufTemp", projName)
|
||||
else
|
||||
targetBase = path.join(Aurora.Settings.sAbsCompilerWd, "ProtobufTemp")
|
||||
end
|
||||
|
||||
os.mkdir(baseProto)
|
||||
os.mkdir(targetBase)
|
||||
|
||||
local compiledFiles = auMap(files, function(file)
|
||||
local rel = path.getrelative(basePath, file)
|
||||
return path.join(targetBase, rel:sub(1, #rel - 6)) .. ".pb.cc"
|
||||
end)
|
||||
|
||||
includedirs(targetBase)
|
||||
_G.files(compiledFiles)
|
||||
|
||||
auAddResource(files, {targetBase = targetBase, basePath = basePath}, path.join(Aurora.Settings.sAbsScripts, "Core", "Protobuf", "run.lua"))
|
||||
end
|
||||
|
||||
return addProtobufFiles
|
38
Core/Protobuf/run.lua
Normal file
38
Core/Protobuf/run.lua
Normal file
@ -0,0 +1,38 @@
|
||||
print("Compiling protobuf files...")
|
||||
print("Changed: ", json.encode_pretty(auResourceCompiler.changedFiles))
|
||||
print("Unchanged: ", json.encode_pretty(auResourceCompiler.unchangedFiles))
|
||||
|
||||
if (#auResourceCompiler.changedFiles == 0) then return end
|
||||
|
||||
local function escapeBinaryPath(bin)
|
||||
bin = path.translate(bin, path.getDefaultSeparator())
|
||||
bin = os.realpath(bin)
|
||||
|
||||
if (os.host() == "windows") then
|
||||
return "\"" .. bin .. "\""
|
||||
end
|
||||
|
||||
return bin:gsub(" ", "\\ ")
|
||||
end
|
||||
|
||||
local compiler = nil
|
||||
|
||||
if (os.host() == "windows") then
|
||||
compiler = path.join(Aurora.Settings.sAbsWin32, "protoc.exe")
|
||||
elseif (os.isfile("protoc")) then
|
||||
compiler = "protoc"
|
||||
else
|
||||
compiler = path.join(Aurora.Settings.sRelUnixBins, "protoc")
|
||||
end
|
||||
|
||||
compiler = escapeBinaryPath(compiler)
|
||||
|
||||
local cmd = compiler
|
||||
cmd = cmd .. " --cpp_out=\"" .. auResourceCompiler.arguments.targetBase .. "\""
|
||||
cmd = cmd .. " --proto_path=\"" .. auResourceCompiler.arguments.basePath .. "\""
|
||||
|
||||
auForEach(auResourceCompiler.changedFiles, function(file)
|
||||
cmd = cmd .. " \"" .. file .. "\""
|
||||
end)
|
||||
|
||||
resourceRunAndExit(cmd)
|
@ -36,4 +36,20 @@ auResourceCompiler = {
|
||||
arguments = auBuild.args.ext
|
||||
}
|
||||
|
||||
function resourceExit(exitCode)
|
||||
if (not exitCode) then
|
||||
os.remove(cachePath)
|
||||
end
|
||||
|
||||
os.exit(exitCode)
|
||||
end
|
||||
|
||||
function resourceRunAndExit(cmd)
|
||||
if (os.host() == "windows") then
|
||||
resourceExit(os.execute("call " .. cmd))
|
||||
else
|
||||
resourceExit(os.execute(cmd))
|
||||
end
|
||||
end
|
||||
|
||||
auRequireAbs(auBuild.args.script)
|
@ -3,6 +3,7 @@ local buildAction = auRequire("Core/Actions")
|
||||
local target = auRequire("Core/Target")
|
||||
local main = auRequire("Core/Main")
|
||||
local resourceCompiler = auRequire("Core/ResourceCompiler")
|
||||
local protobuf = auRequire("Core/Protobuf")
|
||||
|
||||
-- executes inline under iprocessor::process
|
||||
function auAddBuildAction(...)
|
||||
@ -154,4 +155,8 @@ end
|
||||
|
||||
function auAddResource(...)
|
||||
resourceCompiler(...)
|
||||
end
|
||||
|
||||
function auProtobufFiles(files)
|
||||
protobuf(files)
|
||||
end
|
@ -18,4 +18,12 @@ function table.copy(t)
|
||||
for k, v in pairs(t) do u[k] = v end
|
||||
--setmetatable(u, getmetatable(t))
|
||||
return u
|
||||
end
|
||||
|
||||
function auMap(array, func)
|
||||
local tbl = {}
|
||||
auForEach(array, function(value)
|
||||
table.insert(tbl, func(value))
|
||||
end)
|
||||
return tbl
|
||||
end
|
218
aurora.gitignore
Normal file
218
aurora.gitignore
Normal file
@ -0,0 +1,218 @@
|
||||
# Aurora's general purpose JS/TS/C/C++/Go vs/vscode/intellij/codelite gitignore reference
|
||||
# Almost usable for Java and Qt
|
||||
|
||||
# Aurora build configuration
|
||||
Build_CompilerWorkingDirectory/*
|
||||
Build_Developers/*
|
||||
Build_Ship/*
|
||||
Build_Internal/*
|
||||
Build_Develop/*
|
||||
Build_Stage/*
|
||||
Build_Ship/*
|
||||
Build_Workspace/*
|
||||
Build_Symbols/*
|
||||
Build_Link/*
|
||||
Build/Developers/*
|
||||
Build/Ship/*
|
||||
Build/Develop/*
|
||||
Build/Stage/*
|
||||
Build/Ship/*
|
||||
Build/Workspace/*
|
||||
Build/Symbols/*
|
||||
Build/Link/*
|
||||
|
||||
# License Headers VS extension
|
||||
*.licenseheader
|
||||
|
||||
# Binaries / object files
|
||||
*.dll
|
||||
*.exe
|
||||
*.obj
|
||||
*.so
|
||||
*.so.*
|
||||
*.la
|
||||
*.lai
|
||||
*.pdb
|
||||
*.idb
|
||||
*.exe~
|
||||
*.obj
|
||||
*.dynlib
|
||||
*.dylib
|
||||
*.lib
|
||||
*.d
|
||||
*.o
|
||||
*.a
|
||||
*.la
|
||||
*.slo
|
||||
*.lo
|
||||
*.out
|
||||
# go unit test
|
||||
*.test
|
||||
|
||||
# Autogenerated project files
|
||||
compile_flags.txt
|
||||
*.mk
|
||||
*.project
|
||||
*cmake
|
||||
Makefile
|
||||
*.vcxproj
|
||||
*.xcodeproj
|
||||
|
||||
# IDE trash
|
||||
.vscode
|
||||
.vs
|
||||
/*.gcno
|
||||
.intellij
|
||||
.clion
|
||||
*.vcxproj.filters
|
||||
*.vcxproj.user
|
||||
*.tlog
|
||||
|
||||
# OSX
|
||||
.DS_Store
|
||||
.AppleDouble
|
||||
.LSOverride
|
||||
xcuserdata/
|
||||
|
||||
# Win32
|
||||
Thumbs.db
|
||||
Thumbs.db:encryptable
|
||||
ehthumbs.db
|
||||
ehthumbs_vista.db
|
||||
*.lnk
|
||||
|
||||
# Linux is trash and cant hotswap like NT
|
||||
.nfs*
|
||||
.fuse_hidden*
|
||||
|
||||
# Ninja
|
||||
.ninja_deps
|
||||
.ninja_log
|
||||
|
||||
# PID locks
|
||||
*.pid
|
||||
*.pid.lock
|
||||
|
||||
# Crashlytics plugin (for Android Studio and IntelliJ)
|
||||
com_crashlytics_export_strings.xml
|
||||
crashlytics.properties
|
||||
crashlytics-build.properties
|
||||
fabric.properties
|
||||
|
||||
# JetBrains
|
||||
# User-specific stuff
|
||||
.idea/**/workspace.xml
|
||||
.idea/**/tasks.xml
|
||||
.idea/**/usage.statistics.xml
|
||||
.idea/**/dictionaries
|
||||
.idea/**/shelf
|
||||
|
||||
# AWS User-specific
|
||||
.idea/**/aws.xml
|
||||
|
||||
# Generated files
|
||||
.idea/**/contentModel.xml
|
||||
|
||||
# Sensitive or high-churn files
|
||||
.idea/**/dataSources/
|
||||
.idea/**/dataSources.ids
|
||||
.idea/**/dataSources.local.xml
|
||||
.idea/**/sqlDataSources.xml
|
||||
.idea/**/dynamic.xml
|
||||
.idea/**/uiDesigner.xml
|
||||
.idea/**/dbnavigator.xml
|
||||
|
||||
# Gradle
|
||||
.idea/**/gradle.xml
|
||||
.idea/**/libraries
|
||||
|
||||
# CMake
|
||||
cmake-build-*/
|
||||
|
||||
# Android Studio
|
||||
.idea/caches/build_file_checksums.ser
|
||||
|
||||
# why would we ever ship this dir?
|
||||
.idea/caches/*
|
||||
|
||||
# NodeJS
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
lerna-debug.log*
|
||||
.pnpm-debug.log*
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Dependency directories
|
||||
node_modules/
|
||||
jspm_packages/
|
||||
|
||||
# Snowpack dependency directory (https://snowpack.dev/)
|
||||
web_modules/
|
||||
|
||||
# TypeScript cache
|
||||
*.tsbuildinfo
|
||||
|
||||
# Optional npm cache directory
|
||||
.npm
|
||||
|
||||
# Optional eslint cache
|
||||
.eslintcache
|
||||
|
||||
# yarn v2
|
||||
.yarn/cache
|
||||
.yarn/unplugged
|
||||
.yarn/build-state.yml
|
||||
.yarn/install-state.gz
|
||||
.pnp.*
|
||||
|
||||
# VS Code Extensions
|
||||
.vscode-test
|
||||
|
||||
# Qt unit tests
|
||||
target_wrapper.*
|
||||
|
||||
# QtCreator
|
||||
*.autosave
|
||||
|
||||
# QtCreator Qml
|
||||
*.qmlproject.user
|
||||
*.qmlproject.user.*
|
||||
|
||||
# QtCreator CMake
|
||||
CMakeLists.txt.user*
|
||||
|
||||
# QtCreator 4.8< compilation database
|
||||
compile_commands.json
|
||||
|
||||
# QtCreator local machine specific files for imported projects
|
||||
*creator.user*
|
||||
|
||||
*_qmlcache.qrc
|
||||
|
||||
# QT cache and user files
|
||||
/.qmake.cache
|
||||
/.qmake.stash
|
||||
*.pro.user
|
||||
*.pro.user.*
|
||||
*.qbs.user
|
||||
*.qbs.user.*
|
||||
*.moc
|
||||
|
||||
# Java trash
|
||||
hs_err_pid*
|
||||
.gradle
|
||||
gradle-app.setting
|
||||
!gradle-wrapper.jar
|
||||
.gradletasknamecache
|
||||
pom.xml.tag
|
||||
pom.xml.releaseBackup
|
||||
pom.xml.versionsBackup
|
||||
pom.xml.next
|
||||
release.properties
|
||||
dependency-reduced-pom.xml
|
||||
buildNumber.properties
|
||||
.mvn/timing.properties
|
||||
.mvn/wrapper/maven-wrapper.jar
|
Loading…
Reference in New Issue
Block a user