Fix protobuf-cpp and gamenetworkingsockets (#258)

* Add steam's GameNetworkingSockets

* Update xmake.lua

* Update xmake.lua

* Update xmake.lua

* Fix static compile on windows

* Add fPIC for linux

* Add missing defines

* Update xmake.lua

* Use add_headerfiles

* Linux...

* fix protobuf-cpp and gamenetworkingsockets

Co-authored-by: yamashi <yamashi@live.com>
pull/260/head
ruki 4 years ago committed by GitHub
parent 02153f05c9
commit 13a0a6f1cf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 89
      packages/g/gamenetworkingsockets/port/xmake.lua
  2. 57
      packages/g/gamenetworkingsockets/xmake.lua
  3. 21
      packages/p/protobuf-cpp/xmake.lua

@ -0,0 +1,89 @@
set_xmakever("2.5.1")
set_languages("cxx11")
add_rules("mode.debug", "mode.release")
add_requires("protobuf-cpp")
if is_plat("windows") then
add_requires("libsodium")
else
add_requires("openssl")
end
target("gns") -- we need limit path length
set_kind("$(kind)")
add_vectorexts("sse2")
add_packages("protobuf-cpp")
set_basename("gamenetworkingsockets")
if is_plat("windows") then
add_packages("libsodium")
add_syslinks("ws2_32")
add_defines("WIN32", "_WINDOWS", "STEAMNETWORKINGSOCKETS_CRYPTO_LIBSODIUM", "STEAMNETWORKINGSOCKETS_CRYPTO_25519_LIBSODIUM")
add_files( "src/common/crypto_libsodium.cpp",
"src/common/crypto_25519_libsodium.cpp")
else
add_packages("openssl")
add_syslinks("pthread")
add_defines("STEAMNETWORKINGSOCKETS_CRYPTO_25519_OPENSSL", "STEAMNETWORKINGSOCKETS_CRYPTO_VALVEOPENSSL", "OPENSSL_HAS_25519_RAW")
add_defines("POSIX", "LINUX", "GNUC", "GNU_COMPILER")
add_files( "src/common/crypto_openssl.cpp",
"src/common/crypto_25519_openssl.cpp",
"src/common/opensslwrapper.cpp")
end
if is_kind("shared") then
add_defines("STEAMNETWORKINGSOCKETS_FOREXPORT")
else
add_defines("STEAMNETWORKINGSOCKETS_STATIC_LINK")
end
add_defines("VALVE_CRYPTO_ENABLE_25519",
"GOOGLE_PROTOBUF_NO_RTTI",
"CRYPTO_DISABLE_ENCRYPT_WITH_PASSWORD",
"ENABLE_OPENSSLCONNECTION")
add_includedirs("include",
"src",
"src/common",
"src/tier0",
"src/tier1",
"src/vstdlib",
"src/steamnetworkingsockets",
"src/steamnetworkingsockets/clientlib",
"src/public")
add_headerfiles("include/(steam/*.h)")
add_headerfiles("include/(minbase/*.h)")
add_headerfiles("src/public/(*/*.h)")
add_files( "src/common/steamnetworkingsockets_messages_certs.proto",
"src/common/steamnetworkingsockets_messages.proto",
"src/common/steamnetworkingsockets_messages_udp.proto", {rules = "protobuf.cpp"})
add_files( "src/common/crypto.cpp",
"src/common/crypto_textencode.cpp",
"src/common/keypair.cpp",
"src/common/steamid.cpp",
"src/vstdlib/strtools.cpp",
"src/tier0/dbg.cpp",
"src/tier0/platformtime.cpp",
"src/tier1/bitstring.cpp",
"src/tier1/ipv6text.c",
"src/tier1/netadr.cpp",
"src/tier1/utlbuffer.cpp",
"src/tier1/utlmemory.cpp",
"src/steamnetworkingsockets/steamnetworkingsockets_certs.cpp",
"src/steamnetworkingsockets/steamnetworkingsockets_thinker.cpp",
"src/steamnetworkingsockets/steamnetworkingsockets_certstore.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_connections.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_flat.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_lowlevel.cpp",
"src/steamnetworkingsockets/steamnetworkingsockets_shared.cpp",
"src/steamnetworkingsockets/steamnetworkingsockets_stats.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_snp.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_udp.cpp",
"src/steamnetworkingsockets/clientlib/csteamnetworkingmessages.cpp",
"src/steamnetworkingsockets/clientlib/csteamnetworkingsockets.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p.cpp",
"src/steamnetworkingsockets/clientlib/steamnetworkingsockets_p2p_ice.cpp")

@ -0,0 +1,57 @@
package("gamenetworkingsockets")
set_homepage("https://github.com/ValveSoftware/GameNetworkingSockets")
set_description("Reliable & unreliable messages over UDP. Robust message fragmentation & reassembly. P2P networking / NAT traversal. Encryption. ")
set_license("BSD-3-Clause")
set_urls("https://github.com/ValveSoftware/GameNetworkingSockets/archive/$(version).tar.gz",
"https://github.com/ValveSoftware/GameNetworkingSockets.git")
add_versions("v1.2.0", "768a7cec2491e34c824204c4858351af2866618ceb13a024336dc1df8076bef3")
if is_plat("windows") then
add_syslinks("ws2_32")
add_defines("_WINDOWS", "WIN32")
else
add_defines("POSIX", "LINUX")
add_syslinks("pthread")
end
on_load("windows", "linux", function(package)
if not package:config("shared") then
package:add("defines", "STEAMNETWORKINGSOCKETS_STATIC_LINK")
if is_plat("windows") then
package:add("deps", "libsodium", "protobuf-cpp")
else
package:add("deps", "openssl", "protobuf-cpp")
end
end
end)
on_install("windows", "linux", function (package)
-- We need copy source codes to the working directory with short path on windows
--
-- Because the target name and source file path of this project are too long,
-- it's absolute path exceeds the windows path length limit.
--
local oldir
if is_host("windows") then
local sourcedir = os.tmpdir() .. ".dir"
os.tryrm(sourcedir)
os.cp(os.curdir(), sourcedir)
oldir = os.cd(sourcedir)
end
local configs = {}
if package:config("shared") then
configs.kind = "shared"
end
os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
import("package.tools.xmake").install(package, configs)
if oldir then
os.cd(oldir)
end
end)
on_test(function (package)
assert(package:has_cxxfuncs("GameNetworkingSockets_Kill()", {includes = "steam/steamnetworkingsockets.h"}))
end)

@ -25,12 +25,29 @@ package("protobuf-cpp")
on_install("windows", function (package)
os.cd("cmake")
import("package.tools.cmake").install(package, {"-Dprotobuf_BUILD_PROTOC_BINARIES=ON"})
local configs = {"-Dprotobuf_BUILD_TESTS=OFF", "-Dprotobuf_BUILD_PROTOC_BINARIES=ON"}
table.insert(configs, "-DBUILD_SHARED_LIBS=" .. (package:config("shared") and "ON" or "OFF"))
table.insert(configs, "-Dprotobuf_MSVC_STATIC_RUNTIME=" .. (package:config("vs_runtime"):startswith("MT") and "ON" or "OFF"))
if package:config("shared") then
package:add("defines", "PROTOBUF_USE_DLLS")
end
import("package.tools.cmake").install(package, configs)
os.cp("build_*/Release/protoc.exe", package:installdir("bin"))
end)
on_install("linux", "macosx", function (package)
import("package.tools.autoconf").install(package, {"--enable-shared=no"})
local configs = {}
if package:config("pic") ~= false then
table.insert(configs, "--with-pic")
end
if package:config("shared") then
table.insert(configs, "--enable-shared=yes")
table.insert(configs, "--enable-static=no")
else
table.insert(configs, "--enable-static=yes")
table.insert(configs, "--enable-shared=no")
end
import("package.tools.autoconf").install(package, configs)
end)
on_test(function (package)

Loading…
Cancel
Save