nuclide/build_editor.sh

294 lines
7.7 KiB
Bash
Executable File

#!/bin/sh
. ./build.cfg
mv_wsfile()
{
if [ -f "./build/$1" ]
then
cp -v "./build/$1" "../../bin/$1"
fi
}
mv_msysfile()
{
if [ -f "./build/$1" ]
then
cp -v "./build/$1" "../../bin/$1"
fi
}
if ! [ -x "$(command -v git)" ]
then
printf "'git' is not installed.\n"
exit
fi
set -e
WS_MAKEFILE=./src/worldspawn/Makefile
COMPILE_SYS=$(uname)
COMPILE_OS=$(uname -o)
# Check how many cores/processors we should use for building
if ! [ -x "$(command -v nproc)" ]
then
# check if we're on OpenBSD then
if ! [ -x "$(command -v sysctl)" ]
then
BUILD_PROC=1
else
BUILD_PROC=$(sysctl -n hw.ncpu)
fi
else
BUILD_PROC=$(nproc)
fi
if [ "$BUILD_DEBUG" -eq 1 ]
then
WS_CFLAGS="-g"
fi
# handle search directories and platform specific libraries
if [ "$COMPILE_SYS" = "OpenBSD" ]
then
WS_CFLAGS="$WS_CFLAGS -I/usr/local/include -I/usr/local/include/gtkglext-1.0 -I/usr/local/lib/gtkglext-1.0/include -I/usr/local/include/libxml2/"
WS_LDFLAGS="$WS_LDFLAGS -L/usr/local/lib"
WS_CC=cc
WS_CXX=c++
else
WS_CFLAGS="$WS_CFLAGS"
WS_LDFLAGS="$WS_LDFLAGS -ldl"
if [ "$BUILD_CLANG" = "1" ]; then
WS_CC=clang
WS_CXX=clang++
else
WS_CC=gcc
WS_CXX=g++
fi
fi
if [ "$COMPILE_OS" = "Msys" ]; then
WS_CC=cc
WS_CXX=c++
WS_CFLAGS="$CFLAGS -static-libgcc -static-libstdc++"
WS_LDFLAGS="$LDFLAGS -lws2_32"
WS_LIB_EXT=dll
fi
# GNU Make is _not_ make!...
if [ "$COMPILE_OS" = "Msys" ]; then
MAKE=make
PLATFORM=win64
else
if ! [ -x "$(command -v gmake)" ]
then
# only assume that Linux may not ship with a gmake... HACK!
if [ "$COMPILE_SYS" = "Linux" ]
then
MAKE=make
else
printf "You need to install GNU make.\n"
fi
else
MAKE=gmake
fi
fi
mkdir -p ./bin
if [ -f "$WS_MAKEFILE" ]
then
if [ "$BUILD_UPDATE" -eq 1 ]
then
printf "WorldSpawn is present, updating...\n"
cd ./src/worldspawn/
git pull
else
cd ./src/worldspawn/
fi
else
printf "WorldSpawn is NOT present, cloning...\n"
cd ./src/
git clone "https://vcs.vera-visions.com/tech/worldspawn" worldspawn
cd ./worldspawn
fi
if [ "$BUILD_CLEAN" -eq 1 ]
then
$MAKE clean
fi
$MAKE -j $BUILD_PROC CC=$WS_CC CXX=$WS_CXX CFLAGS="$WS_CFLAGS" LDFLAGS="$WS_LDFLAGS" LIB_EXT=$WS_LIB_EXT
mkdir -p ../../bin/bitmaps
mv_wsfile defaultkeys.ini
mv_wsfile bitmaps/black.xpm
mv_wsfile bitmaps/brush_flipx.xpm
mv_wsfile bitmaps/brush_flipy.xpm
mv_wsfile bitmaps/brush_flipz.xpm
mv_wsfile bitmaps/brush_rotatex.xpm
mv_wsfile bitmaps/brush_rotatey.xpm
mv_wsfile bitmaps/brush_rotatez.xpm
mv_wsfile bitmaps/cap_bevel.xpm
mv_wsfile bitmaps/cap_curve.xpm
mv_wsfile bitmaps/cap_cylinder.xpm
mv_wsfile bitmaps/cap_endcap.xpm
mv_wsfile bitmaps/cap_ibevel.xpm
mv_wsfile bitmaps/cap_iendcap.xpm
mv_wsfile bitmaps/console.xpm
mv_wsfile bitmaps/copy.xpm
mv_wsfile bitmaps/cut.xpm
mv_wsfile bitmaps/dontselectcurve.xpm
mv_wsfile bitmaps/dontselectmodel.xpm
mv_wsfile bitmaps/ellipsis.xpm
mv_wsfile bitmaps/entities.xpm
mv_wsfile bitmaps/file_new.xpm
mv_wsfile bitmaps/file_open.xpm
mv_wsfile bitmaps/file_save.xpm
mv_wsfile bitmaps/icon.xpm
mv_wsfile bitmaps/lightinspector.xpm
mv_wsfile bitmaps/logo.xpm
mv_wsfile bitmaps/modify_edges.xpm
mv_wsfile bitmaps/modify_faces.xpm
mv_wsfile bitmaps/modify_vertices.xpm
mv_wsfile bitmaps/noFalloff.xpm
mv_wsfile bitmaps/notex.tga
mv_wsfile bitmaps/paste.xpm
mv_wsfile bitmaps/patch_bend.xpm
mv_wsfile bitmaps/patch_drilldown.xpm
mv_wsfile bitmaps/patch_insdel.xpm
mv_wsfile bitmaps/patch_showboundingbox.xpm
mv_wsfile bitmaps/patch_weld.xpm
mv_wsfile bitmaps/patch_wireframe.xpm
mv_wsfile bitmaps/popup_selection.xpm
mv_wsfile bitmaps/redo.xpm
mv_wsfile bitmaps/refresh_models.xpm
mv_wsfile bitmaps/scalelockx.xpm
mv_wsfile bitmaps/scalelocky.xpm
mv_wsfile bitmaps/scalelockz.xpm
mv_wsfile bitmaps/select_additive.xpm
mv_wsfile bitmaps/select_autoexpand.xpm
mv_wsfile bitmaps/selection_csgmerge.xpm
mv_wsfile bitmaps/selection_csgsubtract.xpm
mv_wsfile bitmaps/selection_makehollow.xpm
mv_wsfile bitmaps/selection_makeroom.xpm
mv_wsfile bitmaps/selection_selectcompletetall.xpm
mv_wsfile bitmaps/selection_selectinside.xpm
mv_wsfile bitmaps/selection_selectpartialtall.xpm
mv_wsfile bitmaps/selection_selecttouching.xpm
mv_wsfile bitmaps/select_mouseresize.xpm
mv_wsfile bitmaps/select_mouserotate.xpm
mv_wsfile bitmaps/select_mousescale.xpm
mv_wsfile bitmaps/select_mousetranslate.xpm
mv_wsfile bitmaps/shadernotex.tga
mv_wsfile bitmaps/show_entities.xpm
mv_wsfile bitmaps/side_edges.xpm
mv_wsfile bitmaps/side_faces.xpm
mv_wsfile bitmaps/side_vertices.xpm
mv_wsfile bitmaps/side_brush.png
mv_wsfile bitmaps/side_cut.png
mv_wsfile bitmaps/side_entities.png
mv_wsfile bitmaps/side_entspec.png
mv_wsfile bitmaps/side_move.png
mv_wsfile bitmaps/side_patch.png
mv_wsfile bitmaps/side_patchspec.png
mv_wsfile bitmaps/side_rotate.png
mv_wsfile bitmaps/side_scale.png
mv_wsfile bitmaps/side_select.png
mv_wsfile bitmaps/side_surfspec.png
mv_wsfile bitmaps/side_tex.png
mv_wsfile bitmaps/side_resize.png
mv_wsfile bitmaps/side_selectface.png
mv_wsfile bitmaps/side_selectwhole.png
mv_wsfile bitmaps/splash.xcf
mv_wsfile bitmaps/splash.xpm
mv_wsfile bitmaps/texture_browser.xpm
mv_wsfile bitmaps/texture_lock.xpm
mv_wsfile bitmaps/textures_popup.xpm
mv_wsfile bitmaps/undo.xpm
mv_wsfile bitmaps/view_cameratoggle.xpm
mv_wsfile bitmaps/view_cameraupdate.xpm
mv_wsfile bitmaps/view_change.xpm
mv_wsfile bitmaps/view_clipper.xpm
mv_wsfile bitmaps/view_cubicclipping.xpm
mv_wsfile bitmaps/view_entity.xpm
mv_wsfile bitmaps/white.xpm
mv_wsfile bitmaps/window1.xpm
mv_wsfile bitmaps/window2.xpm
mv_wsfile bitmaps/window3.xpm
mv_wsfile bitmaps/window4.xpm
mkdir -p ../../bin/games
mv_wsfile games/platform.game
mv_wsfile games/goldsrc.game
mkdir -p ../../bin/gl
mv_wsfile gl/lighting_DBS_omni_fp.glp
mv_wsfile gl/lighting_DBS_omni_fp.glsl
mv_wsfile gl/lighting_DBS_omni_vp.glp
mv_wsfile gl/lighting_DBS_omni_vp.glsl
mv_wsfile gl/lighting_DBS_XY_Z_arbfp1.cg
mv_wsfile gl/lighting_DBS_XY_Z_arbvp1.cg
mv_wsfile gl/utils.cg
mv_wsfile gl/zfill_arbfp1.cg
mv_wsfile gl/zfill_arbvp1.cg
mv_wsfile gl/zfill_fp.glp
mv_wsfile gl/zfill_fp.glsl
mv_wsfile gl/zfill_vp.glp
mv_wsfile gl/zfill_vp.glsl
mkdir -p ../../bin/platform.game
mv_wsfile platform.game/default_build_menu.xml
mkdir -p ../../bin/platform.game/platform
mv_wsfile platform.game/platform/entities.def
mkdir -p ../../bin/goldsrc.game
mv_wsfile goldsrc.game/default_build_menu.xml
mkdir -p ../../bin/plugins
if [ "$COMPILE_OS" = "Msys" ]; then
mv_wsfile plugins/libarchivezip.dll
mv_wsfile plugins/libarchivepak.dll
mv_wsfile plugins/libarchivewad.dll
mv_wsfile plugins/libentity.dll
mv_wsfile plugins/libimage.dll
mv_wsfile plugins/libimagehl.dll
mv_wsfile plugins/libiqmmodel.dll
mv_wsfile plugins/libmapq3.dll
mv_wsfile plugins/libmodel.dll
mv_wsfile plugins/libshaders.dll
mv_wsfile plugins/libmatsys.dll
mv_wsfile plugins/libvfspk3.dll
mv_wsfile plugins/libbrushexport.dll
mv_wsfile plugins/libprtview.dll
mv_wsfile worldspawn.exe
mv_wsfile vmap.exe
cd ../../bin/
ldd worldspawn.exe | grep '\/mingw.*\.dll' -o | xargs -I{} cp -v "{}" .
ldd vmap.exe | grep '\/mingw.*\.dll' -o | xargs -I{} cp -v "{}" .
ldd plugins/* | grep '\/mingw.*\.dll' -o | xargs -I{} cp -v "{}" .
cp -r /c/msys64/mingw64/bin/zlib1.dll ./zlib1.dll
cp -r /c/msys64/mingw64/bin/libdatrie-1.dll ./libdatrie-1.dll
ldd *.dll | grep '\/mingw.*\.dll' -o | xargs -I{} cp -v "{}" .
cd ..
cp -r /c/msys64/mingw64/lib/gdk-pixbuf-2.0/ ./lib/
else
mv_wsfile plugins/libarchivezip.so
mv_wsfile plugins/libarchivepak.so
mv_wsfile plugins/libarchivewad.so
mv_wsfile plugins/libentity.so
mv_wsfile plugins/libimage.so
mv_wsfile plugins/libimagehl.so
mv_wsfile plugins/libiqmmodel.so
mv_wsfile plugins/libmapq3.so
mv_wsfile plugins/libmodel.so
mv_wsfile plugins/libshaders.so
mv_wsfile plugins/libmatsys.so
mv_wsfile plugins/libvfspk3.so
mv_wsfile plugins/libbrushexport.so
mv_wsfile plugins/libprtview.so
mv_wsfile worldspawn
mv_wsfile vmap
fi
printf "Built the editor successfully.\nInsert './worldspawn' to run.\n"