Commit 3954dd36 authored by nanahira's avatar nanahira

linux build

parent fb6c4de7
......@@ -6,4 +6,4 @@ set -o errexit
apt update && apt -y install tar git
git submodule update --init
mkdir dist replay
tar -zcf dist/ygopro-$CI_COMMIT_REF_NAME-linux-$TARGET_LOCALE.tar.gz --exclude='.git*' ygopro LICENSE README.md libIrrKlang.so lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay sound windbot bot bot.conf
tar -zcf dist/ygopro-$CI_COMMIT_REF_NAME-linux-$TARGET_LOCALE.tar.gz --exclude='.git*' ygopro LICENSE README.md lib lflist.conf strings.conf system.conf cards.cdb script textures deck single pics replay sound windbot bot bot.conf
......@@ -11,18 +11,27 @@ variables:
USE_IRRKLANG: "1"
mat_lua:
mat_common:
stage: prepare
tags:
- linux
script:
- apt update; apt -y install wget tar
# lua
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/lua-5.3.5.tar.gz | tar zfx -
- mv lua-5.3.5/src lua
- cp premake/lua/premake4.lua lua/;
# sqlite3
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/sqlite-autoconf-3360000.tar.gz | tar zfx -
- mv sqlite-autoconf-3360000 sqlite3
# freetype
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/freetype-2.10.4.tar.gz | tar zfx -
- mv freetype-2.10.4 freetype
# premake
- cp -rf premake/* .;
artifacts:
paths:
- lua
- freetype
- sqlite3
mat_irrklang:
stage: prepare
......@@ -47,10 +56,18 @@ mat_linux:
- apt update; apt -y install git wget tar
- git clone --depth=1 https://code.mycard.moe/mycard/irrlicht irrlicht_linux
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/premake-5.0.0-alpha14-linux.tar.gz | tar zfx -
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/libevent-2.0.22-stable.tar.gz | tar zfx -
- cd libevent-2.0.22-stable
- ./configure --prefix=$PWD/libevent-stable --disable-openssl
- make -j$(nproc)
- make install
- cd ..
- mv libevent-2.0.22-stable/libevent-stable .
artifacts:
paths:
- premake5
- irrlicht_linux
- libevent-stable
mat_macos:
stage: prepare
......@@ -82,13 +99,6 @@ mat_windows:
# event
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/libevent-2.0.22-stable.tar.gz | tar zfx -
- mv libevent-2.0.22-stable event ; cp -rf event/WIN32-Code/* event/include
# freetype
- wget -O - https://cdn01.moecube.com/ygopro-build-materials/freetype-2.10.1.tar.gz | tar zfx -
- mv freetype-2.10.1 freetype
# sqlite3
- wget https://cdn01.moecube.com/ygopro-build-materials/sqlite-amalgamation-3310100.zip
- 7z x -y sqlite-amalgamation-3310100.zip
- mv sqlite-amalgamation-3310100 sqlite3
# irrlicht
- wget https://cdn01.moecube.com/ygopro-build-materials/irrlicht-1.8.4.zip
- 7z x -y irrlicht-1.8.4.zip
......@@ -99,8 +109,6 @@ mat_windows:
paths:
- premake5.exe
- event
- freetype
- sqlite3
- irrlicht
exec_windows:
......@@ -108,7 +116,7 @@ exec_windows:
tags:
- vs
dependencies:
- mat_lua
- mat_common
- mat_irrklang
- mat_windows
variables:
......@@ -132,7 +140,12 @@ exec_linux:
stage: build
tags:
- linux
variables:
YGOPRO_BUILD_ALL: '1'
YGOPRO_LINUX_ALL_STATIC: '1'
YGOPRO_LINUX_ALL_STATIC_LIB_PATH: '/usr/lib/x86_64-linux-gnu/'
dependencies:
- mat_common
- mat_irrklang
- mat_linux
cache:
......@@ -140,19 +153,20 @@ exec_linux:
- bin/
- obj/
script:
- apt update; apt -y install git build-essential libfreetype6-dev libevent-dev libsqlite3-dev libgl1-mesa-dev libglu-dev liblua5.3-dev libxxf86vm-dev
- apt update; apt -y install git build-essential libgl1-mesa-dev libglu-dev libxxf86vm-dev
- git submodule update --init
- ./premake5 gmake
- mkdir lib
- cp -rf irrklang/bin/linux-gcc-64/libIrrKlang.so ./lib/
- YGOPRO_LINUX_ALL_STATIC_LIBEVENT_PATH=$PWD/libevent-stable ./premake5 gmake
- cd build
- make config=release -j$(nproc)
- cd ..
- mv bin/release/ygopro .
- strip ygopro
- cp -rf irrklang/bin/linux-gcc-64/libIrrKlang.so .
artifacts:
paths:
- ygopro
- libIrrKlang.so
- lib
exec_macos:
stage: build
......@@ -161,14 +175,14 @@ exec_macos:
dependencies:
- mat_irrklang
- mat_macos
- mat_lua
- mat_common
cache:
paths:
- bin/
- obj/
script:
- git submodule update --init
- brew install freetype libevent sqlite dylibbundler
- brew install libevent dylibbundler
- sudo cp -rf irrklang/bin/macosx-gcc/libirrklang.dylib /usr/local/lib/
#- sudo cp -rf irrklang/include /usr/local/include/irrklang
- ./premake5 gmake --cc=clang
......
......@@ -7,7 +7,10 @@ project "ygopro"
files { "**.cpp", "**.cc", "**.c", "**.h" }
excludes { "lzma/**", "spmemvfs/**" }
includedirs { "../ocgcore" }
links { "ocgcore", "clzma", "cspmemvfs", "Irrlicht", "freetype", "sqlite3", "event" }
links { "ocgcore", "clzma", "cspmemvfs", "Irrlicht", "sqlite3", "freetype" }
if not LINUX_ALL_STATIC then
links { "event" }
end
if USE_IRRKLANG then
defines { "YGOPRO_USE_IRRKLANG" }
links { "ikpmp3" }
......@@ -17,6 +20,10 @@ project "ygopro"
end
end
configuration "not linux"
if LINUX_ALL_STATIC then
links { "event" }
end
configuration "windows"
files "ygopro.rc"
excludes "CGUIButton.cpp"
......@@ -42,17 +49,40 @@ project "ygopro"
configuration "not vs*"
buildoptions { "-std=c++14", "-fno-rtti" }
configuration "not windows"
includedirs { "/usr/include/irrlicht", "/usr/include/freetype2" }
excludes { "COSOperator.*" }
links { "event_pthreads", "dl", "pthread" }
links { "dl", "pthread" }
if not LINUX_ALL_STATIC then
links { "event_pthreads" }
end
if BUILD_SQLITE then
includedirs { "../sqlite3" }
end
if BUILD_FREETYPE then
includedirs {"../freetype/include" }
else
includedirs { "/usr/include/freetype2" }
end
configuration { "not windows", "not macosx" }
links "GL"
configuration "linux"
linkoptions { "-static-libstdc++", "-static-libgcc", "-Wl,-rpath=./lib/" }
includedirs { "../irrlicht_linux/include" }
links { "X11", "Xxf86vm", "lua5.3-c++" }
if BUILD_LUA then
links { "lua" }
else
links { "lua5.3-c++" }
end
links { "X11", "Xxf86vm" }
if LINUX_ALL_STATIC then
local libeventRootPrefix=LIB_ROOT
if LIBEVENT_ROOT then
includedirs { LIBEVENT_ROOT.."/include" }
libeventRootPrefix=LIBEVENT_ROOT.."/lib/"
end
linkoptions { libeventRootPrefix.."libevent.a", libeventRootPrefix.."libevent_pthreads.a" }
end
if USE_IRRKLANG then
links { "IrrKlang" }
linkoptions{ "-Wl,-rpath=./" }
libdirs { "../irrklang/bin/linux-gcc-64" }
end
configuration "macosx"
......
......@@ -4,16 +4,46 @@ project "freetype"
includedirs { "include" }
defines { "FT2_BUILD_LIBRARY" }
files { "src/autofit/autofit.c", "src/bdf/bdf.c", "src/cff/cff.c", "src/base/ftbase.c",
"src/base/ftbitmap.c", "src/cache/ftcache.c", "src/base/ftfstype.c", "src/base/ftgasp.c",
"src/base/ftglyph.c", "src/gzip/ftgzip.c", "src/base/ftinit.c", "src/lzw/ftlzw.c",
"src/base/ftstroke.c", "src/base/ftsystem.c", "src/smooth/smooth.c", "src/base/ftbbox.c",
"src/base/ftfntfmt.c", "src/base/ftmm.c", "src/base/ftpfr.c", "src/base/ftsynth.c",
"src/base/fttype1.c", "src/base/ftwinfnt.c", "src/base/ftlcdfil.c", "src/base/ftgxval.c",
"src/base/ftotval.c", "src/base/ftpatent.c", "src/pcf/pcf.c", "src/pfr/pfr.c",
"src/psaux/psaux.c", "src/pshinter/pshinter.c", "src/psnames/psmodule.c",
"src/raster/raster.c", "src/sfnt/sfnt.c", "src/truetype/truetype.c",
"src/type1/type1.c", "src/cid/type1cid.c", "src/type42/type42.c", "src/winfonts/winfnt.c" }
files { "src/autofit/autofit.c",
"src/base/ftbase.c",
"src/base/ftbbox.c",
"src/base/ftbdf.c",
"src/base/ftbitmap.c",
"src/base/ftcid.c",
"src/base/ftfstype.c",
"src/base/ftgasp.c",
"src/base/ftglyph.c",
"src/base/ftgxval.c",
"src/base/ftinit.c",
"src/base/ftmm.c",
"src/base/ftotval.c",
"src/base/ftpatent.c",
"src/base/ftpfr.c",
"src/base/ftstroke.c",
"src/base/ftsynth.c",
"src/base/ftsystem.c",
"src/base/fttype1.c",
"src/base/ftwinfnt.c",
"src/bdf/bdf.c",
"src/cache/ftcache.c",
"src/cff/cff.c",
"src/cid/type1cid.c",
"src/gzip/ftgzip.c",
"src/lzw/ftlzw.c",
"src/pcf/pcf.c",
"src/pfr/pfr.c",
"src/psaux/psaux.c",
"src/pshinter/pshinter.c",
"src/psnames/psmodule.c",
"src/raster/raster.c",
"src/sfnt/sfnt.c",
"src/smooth/smooth.c",
"src/truetype/truetype.c",
"src/type1/type1.c",
"src/type42/type42.c",
"src/winfonts/winfnt.c" }
configuration "windows"
files { "builds/windows/ftdebug.c" }
configuration "not windows"
files { "src/base/ftdebug.c" }
......@@ -8,6 +8,31 @@ solution "ygo"
IRRKLANG_PRO = true
end
end
if not os.ishost("windows") then
if os.getenv("YGOPRO_BUILD_LUA") then
BUILD_LUA=true
end
if os.getenv("YGOPRO_BUILD_SQLITE") then
BUILD_SQLITE=true
end
if os.getenv("YGOPRO_BUILD_FREETYPE") then
BUILD_FREETYPE=true
end
if os.getenv("YGOPRO_BUILD_ALL") or os.ishost("macosx") then
BUILD_ALL=true
end
if os.ishost("linux") and os.getenv("YGOPRO_LINUX_ALL_STATIC") then
BUILD_ALL=true
LINUX_ALL_STATIC=true
LIB_ROOT=os.getenv("YGOPRO_LINUX_ALL_STATIC_LIB_PATH") or "/usr/lib/x86_64-linux-gnu/"
LIBEVENT_ROOT=os.getenv("YGOPRO_LINUX_ALL_STATIC_LIBEVENT_PATH")
end
if BUILD_ALL then
BUILD_LUA=true
BUILD_SQLITE=true
BUILD_FREETYPE=true
end
end
configurations { "Release", "Debug" }
configuration "windows"
......@@ -33,8 +58,8 @@ solution "ygo"
configuration "macosx"
defines { "LUA_USE_MACOSX", "DBL_MAX_10_EXP=+308", "DBL_MANT_DIG=53", "GL_SILENCE_DEPRECATION" }
includedirs { "/usr/local/include/event2", "/usr/local/include/freetype2", "/usr/local/opt/sqlite3/include" }
libdirs { "/usr/local/lib", "/usr/local/opt/sqlite3/lib" }
includedirs { "/usr/local/include/event2", }
libdirs { "/usr/local/lib" }
buildoptions { "-stdlib=libc++" }
links { "OpenGL.framework", "Cocoa.framework", "IOKit.framework" }
......@@ -76,15 +101,22 @@ solution "ygo"
include "ocgcore"
include "gframe"
if os.ishost("macosx") then
include "lua"
end
if os.ishost("windows") then
include "lua"
include "event"
include "freetype"
include "irrlicht"
include "sqlite3"
else
if BUILD_LUA then
include "lua"
end
if BUILD_SQLITE then
include "sqlite3/premake4.lua"
end
if BUILD_FREETYPE then
include "freetype"
end
end
if os.ishost("linux") then
include "irrlicht_linux"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment