Add new port devel/rlvm

PR:		195964
Differential Revision:	https://reviews.freebsd.org/D1696
Reviewed by:	bapt
Approved by:	bapt (mentor)

rlvm is a Free Software reimplementation of VisualArt's KK's RealLive
interpreter, used in the games Kanon, Air, CLANNAD, Planetarian,
Tomoyo After and Little Busters, among many others.

WWW: http://www.elliotglaysher.org/rlvm/
This commit is contained in:
Jan Beich 2015-01-30 13:19:37 +00:00
parent 668edca5c3
commit 839fe7d15a
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=378150
13 changed files with 361 additions and 0 deletions

View file

@ -4265,6 +4265,7 @@
SUBDIR += replay
SUBDIR += rhtvision
SUBDIR += rlog
SUBDIR += rlvm
SUBDIR += rlwrap
SUBDIR += roboctl
SUBDIR += robodoc

108
devel/rlvm/Makefile Normal file
View file

@ -0,0 +1,108 @@
# $FreeBSD$
PORTNAME= rlvm
PORTVERSION= 0.14
CATEGORIES= devel games
MAINTAINER= jbeich@FreeBSD.org
COMMENT= RealLive virtual machine clone
LICENSE= GPLv2 GPLv3 MIT
LICENSE_COMB= multi
BUILD_DEPENDS= ${LOCALBASE}/include/utf8.h:${PORTSDIR}/devel/utf8cpp
LIB_DEPENDS= libvorbisfile.so:${PORTSDIR}/audio/libvorbis \
libboost_serialization.so:${PORTSDIR}/devel/boost-libs \
libguichan.so:${PORTSDIR}/devel/guichan \
libGLEW.so:${PORTSDIR}/graphics/glew \
libjpeg.so:${PORTSDIR}/graphics/jpeg \
libpng.so:${PORTSDIR}/graphics/png \
libsmpeg.so:${PORTSDIR}/multimedia/smpeg
RUN_DEPENDS= ${LOCALBASE}/lib/X11/fonts/dejavu/DejaVuSans.ttf:${PORTSDIR}/x11-fonts/dejavu
USE_GITHUB= yes
GH_ACCOUNT= eglaysher
GH_TAGNAME= release-${PORTVERSION}
GH_COMMIT= b88bfe0
USES= compiler:c++11-lib pkgconfig scons
USE_GL= yes
USE_GNOME= gtk20
USE_SDL= image mixer ttf
EXCLUDE= GLEW SDL_image SDL_mixer SDL_ttf gmock gtest guichan \
luabind utf8cpp # leaving only pygame, xclannad, *.cpp
EXTRACT_AFTER_ARGS=${EXCLUDE:S,^,--exclude vendor/,}
MAKE_ARGS= VERBOSE=1
INSTALLS_ICONS= yes
PORTDOCS= AUTHORS.TXT NEWS.TXT README.md STATUS.TXT notes
CFLAGS+= -D_GLIBCXX_USE_C99 # XXX ports/193528
LDFLAGS+= -Wl,--as-needed # avoid overlinking (gtk deps)
OPTIONS_DEFINE= DEBUG DOCS NLS TEST
OPTIONS_GROUP= JAPANESE_FONT
OPTIONS_GROUP_JAPANESE_FONT=KOCHI MONA SAZANAMI
OPTIONS_SUB= yes
JAPANESE_FONT_DESC=msgothic.ttc alternatives with verified metrics (unless --font)
KOCHI_DESC= kochi-gothic-subst.ttf from japanese/font-kochi
KOCHI_RUN_DEPENDS=${LOCALBASE}/lib/X11/fonts/TTF/kochi-gothic-subst.ttf:${PORTSDIR}/japanese/font-kochi
MONA_DESC= mona.ttf from japanese/monafonts-ttf
MONA_RUN_DEPENDS=${LOCALBASE}/lib/X11/fonts/TrueType/mona.ttf:${PORTSDIR}/japanese/monafonts-ttf
SAZANAMI_DESC= sazanami-gothic.ttf from japanese/font-sazanami
SAZANAMI_RUN_DEPENDS=${LOCALBASE}/lib/X11/fonts/TTF/sazanami-gothic.ttf:${PORTSDIR}/japanese/font-sazanami
DEBUG_MAKE_ARGS_OFF=--release
NLS_USES= gettext
NLS_EXTRA_PATCHES_OFF=${FILESDIR}/extra-patch-disable-nls
TEST_USES= lua:51
TEST_BUILD_DEPENDS=googletest>=1.7.0:${PORTSDIR}/devel/googletest \
googlemock>=1.7.0:${PORTSDIR}/devel/googlemock \
luabind>0:${PORTSDIR}/devel/luabind
TEST_EXTRA_PATCHES_OFF=${FILESDIR}/extra-patch-disable-test
.include <bsd.port.options.mk>
post-patch:
@${GREP} -Flr 'utf8cpp/' ${WRKSRC} | ${XARGS} ${REINPLACE_CMD} \
-i .bak.utf8cpp -e 's,utf8cpp/,,'
# Default to TTF/ subdir where japanese/ fonts are often installed
@${GREP} -Flr '/usr/share' ${WRKSRC} | ${XARGS} ${REINPLACE_CMD} \
-i .bak.paths \
-e 's,/usr/share,${PREFIX}/share,' \
-e 's,share/fonts,lib/X11/fonts,' \
-e 's,truetype/ttf-dejavu,dejavu,' \
-e 's,truetype/mona,TrueType,' \
-e 's,truetype/[^/"]*,TTF,'
pre-install:
.if ${PORT_OPTIONS:MTEST}
(cd ${WRKSRC} && build/${PORTNAME}_unittests)
.endif
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/build/${PORTNAME} \
${STAGEDIR}${PREFIX}/bin
${INSTALL_MAN} ${WRKSRC}/debian/${PORTNAME}.6 \
${STAGEDIR}${MAN6PREFIX}/man/man6
${INSTALL_DATA} ${WRKSRC}/src/platforms/gtk/${PORTNAME}.desktop \
${STAGEDIR}${DESKTOPDIR}
@(cd ${WRKSRC}/resources && for f in */${PORTNAME}.png; do \
${MKDIR} ${STAGEDIR}${PREFIX}/share/icons/hicolor/$${f%/*}x$${f%/*}/apps; \
${INSTALL_DATA} -v $$f \
${STAGEDIR}${PREFIX}/share/icons/hicolor/$${f%/*}x$${f%/*}/apps; \
done)
.if ${PORT_OPTIONS:MNLS}
(cd ${WRKSRC}/build/locale && ${COPYTREE_SHARE} \
. ${STAGEDIR}${PREFIX}/share/locale)
.endif
.if ${PORT_OPTIONS:MDOCS}
${MKDIR} ${STAGEDIR}${DOCSDIR}
. for f in ${PORTDOCS:Nnotes}
${INSTALL_DATA} ${WRKSRC}/${f} ${STAGEDIR}${DOCSDIR}
. endfor
(cd ${WRKSRC}/doc && ${COPYTREE_SHARE} \
notes ${STAGEDIR}${DOCSDIR})
.endif
.include <bsd.port.mk>

2
devel/rlvm/distinfo Normal file
View file

@ -0,0 +1,2 @@
SHA256 (rlvm-0.14.tar.gz) = a50a22016cbf87b0ed4d26a14e687c4540b01a2cf836a7f1471c0a9b50ebd8d5
SIZE (rlvm-0.14.tar.gz) = 1933830

View file

@ -0,0 +1,22 @@
--- SConstruct~
+++ SConstruct
@@ -38,9 +38,6 @@ env = Environment(
CPPDEFINES = [
"HAVE_CONFIG_H",
- # We use gettext for translations.
- "ENABLE_NLS",
-
# This prevents conflicts between SDL and GLEW. I shouldn't have to do
# this, but the SDL_opengl.h and glew.h differ in const correctness...
"NO_SDL_GLEXT"
@@ -410,9 +407,3 @@ if GetOption("coverage"):
variant_dir="$BUILD_DIR/",
duplicate=0,
exports='env')
-
-# In addition to all that, we also want to build the translation files.
-env.Command("build/locale/ja/LC_MESSAGES/rlvm.mo",
- "po/ja.po",
- ["mkdir -p build/locale/ja/LC_MESSAGES/",
- "msgfmt -o build/locale/ja/LC_MESSAGES/rlvm.mo po/ja.po"])

View file

@ -0,0 +1,27 @@
--- SConstruct~
+++ SConstruct
@@ -387,24 +387,6 @@ else:
duplicate=0,
exports='env')
-# Copy the platform independent SEEN.TXT files to output (we no longer depend
-# on rldev because I can no longer reliably compile it).
-env.SConscript("test/SConscript.rlc",
- variant_dir="build/test",
- duplicate=0,
- exports='env')
-
-# Build the rlvmTests binary that uses those SEEN.TXT files.
-env.SConscript("SConscript.test",
- variant_dir="$BUILD_DIR/",
- duplicate=0,
- exports='env')
-
-env.SConscript("SConscript.luarlvm",
- variant_dir="$BUILD_DIR/",
- duplicate=0,
- exports='env')
-
if GetOption("coverage"):
env.SConscript("SConscript.coverage",
variant_dir="$BUILD_DIR/",

View file

@ -0,0 +1,20 @@
--- SConscript.luarlvm~
+++ SConscript.luarlvm
@@ -31,7 +31,7 @@ config = test_env.Configure()
# Building the luaRlvm test harness requires having lua installed; if we do
# have lua installed, go ahead and use it, but don't really worry if this fails
# since end users don't use this binary.
-if config.CheckLibWithHeader('lua5.1', 'lua5.1/lua.h', 'cpp'):
+if config.CheckLibWithHeader('lua-5.1', 'lua51/lua.h', 'cpp'):
env['BUILD_LUA_TESTS'] = True
else:
print "Not building luaRlvm. (Don't worry, it's only a testing tool!)"
@@ -50,7 +50,7 @@ script_machine_files = [
]
if env['BUILD_LUA_TESTS'] == True:
- test_env.Append(CPPPATH = [ "/usr/include/lua5.1" ] )
+ test_env.Append(CPPPATH = [ env['ENV']['LUA_INCDIR'] ] )
# Build our included copy of luabind.
test_env.BuildSubcomponent("luabind")

View file

@ -0,0 +1,81 @@
--- SConstruct~
+++ SConstruct
@@ -19,7 +19,12 @@ AddOption('--fullstatic', action='store_
# Set libraries used by all configurations and all binaries in rlvm.
env = Environment(
+ ENV=os.environ,
tools = ["default", "rlvm"],
+ **dict((k, v.split()) for k, v in ARGUMENTS.iteritems())
+)
+
+env.Append(
LIBS = ["z"],
@@ -87,13 +91,6 @@ else:
if GetOption("fullstatic"):
env["FULL_STATIC_BUILD"] = True
-# Auto select the number of processors
-if os.path.exists('/proc'):
- cpus = len([l for l in open('/proc/cpuinfo') if l.startswith('processor\t')])
-else:
- cpus = 1
-env.SetOption('num_jobs', cpus + 1)
-
# Use timestamps change, followed by MD5 for speed
env.Decider('MD5-timestamp')
@@ -277,11 +274,15 @@ if not config.CheckGuichan():
print "(Using included copy of guichan)"
subcomponents.append("guichan")
+# Get the configuration from sdl and freetype
+env.ParseConfig("sdl-config --cflags")
+env.ParseConfig("freetype-config --cflags --libs")
+
# Really optional libraries that jagarl's file loaders take advantage of if on
# the system.
config.CheckLibWithHeader('png', 'png.h', "cpp")
-config.CheckLibWithHeader('jpeg', 'jpeglib.h', "cpp")
-config.CheckLibWithHeader('mad', 'mad.h', "cpp")
+config.CheckLibWithHeader('jpeg', 'jconfig.h', "cpp")
+config.CheckLibWithHeader('smpeg', 'smpeg/smpeg.h', "cpp")
env = config.Finish()
@@ -291,10 +292,6 @@ env = config.Finish()
if env['PLATFORM'] == 'darwin':
env.Append(LIBS=["SDL", "intl", "iconv"])
-# Get the configuration from sdl and freetype
-env.ParseConfig("sdl-config --cflags")
-env.ParseConfig("freetype-config --cflags --libs")
-
#########################################################################
## Building subcomponent functions
#########################################################################
@@ -314,7 +311,6 @@ if GetOption('release'):
# Now add release optimizations to the environment
env.Append(
CPPFLAGS = [
- "-Os",
"-DNDEBUG",
"-DBOOST_DISABLE_ASSERTS"
]
@@ -360,13 +356,7 @@ elif GetOption('pprof'):
"profiler"]
)
else:
- # Add debugging flags to all binaries here
- env.Append(
- CPPFLAGS = [
- "-g",
- "-O0"
- ]
- )
+ pass
# Cross platform core of rlvm. Produces librlvm.a and libsystem_sdl.a
env.SConscript("SConscript",

View file

@ -0,0 +1,20 @@
--- src/systems/sdl/sdl_graphics_system.cc~
+++ src/systems/sdl/sdl_graphics_system.cc
@@ -32,7 +32,7 @@
#include <SDL/SDL.h>
#include <SDL/SDL_opengl.h>
-#if defined(__linux__)
+#if !defined(__APPLE__)
#include <SDL/SDL_image.h>
#endif
@@ -244,7 +244,7 @@ SDLGraphicsSystem::SDLGraphicsSystem(Sys
SetWindowTitle();
-#if defined(__linux__)
+#if !defined(__APPLE__)
// We only set the icon on linux because OSX will use the icns file
// automatically and this doesn't look too awesome.
SDL_Surface* icon = IMG_Load("/usr/share/icons/hicolor/48x48/apps/rlvm.png");

View file

@ -0,0 +1,24 @@
--- SConscript.luarlvm~
+++ SConscript.luarlvm
@@ -52,8 +52,7 @@ script_machine_files = [
if env['BUILD_LUA_TESTS'] == True:
test_env.Append(CPPPATH = [ env['ENV']['LUA_INCDIR'] ] )
- # Build our included copy of luabind.
- test_env.BuildSubcomponent("luabind")
+ test_env.Append(LIBS = ["luabind"])
test_env.RlvmProgram("lua_rlvm", ['test/lua_rlvm.cc', script_machine_files],
use_lib_set = ["SDL", "LUA"],
--- SConscript.test~
+++ SConscript.test
@@ -23,8 +23,7 @@ test_env.Append(CPPPATH = ["#/test"])
# We need to build gtest/gmock always. Downstream distributors: if you comment
# this out and add a ParseConfig, make sure to do it here in |test_env| instead
# of one of the environments that could link gtest into the main rlvm binary.
-test_env.BuildSubcomponent("gtest")
-test_env.BuildSubcomponent("gmock")
+test_env.Append(LIBS = ["gtest", "gmock"])
test_case_files = [
"test/test_system/test_machine.cc",

View file

@ -0,0 +1,19 @@
To workaround the following error
unknown file: Failure
C++ exception with description "ExpressionPiece::GetStringValue() invalid on this object" thrown in the test body.
[ FAILED ] MediumObjectPoromotion/PromotionTest.BgLayerPromotion/49, where GetParam() = ("recMulti", 1, (3, "\"file\"$\xFF\0\0\0\0$\xFF\xFF\0\0\0"), true) (1 ms)
--- test/medium_object_promotion.cc~
+++ test/medium_object_promotion.cc
@@ -246,10 +246,6 @@ std::vector<PromotionData> data = {
0,
TestMachine::Arg("file", 0),
SHOULD_PROMOTE_BG),
- std::make_tuple("recMulti",
- 1,
- TestMachine::Arg("file", 0, 255),
- SHOULD_PROMOTE_BG),
std::make_tuple("grpOpen",
0,
TestMachine::Arg("file", 0),

View file

@ -0,0 +1,22 @@
--- vendor/xclannad/wavfile.cc~
+++ vendor/xclannad/wavfile.cc
@@ -23,6 +23,10 @@
*
*/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
@@ -738,7 +742,7 @@ void MP3FILE::Seek(int count) {
} while(pimpl->status != MP3FILE_impl::DONE && pimpl->write_pointer < pimpl->write_data_len);
return;
}
-#elif USE_SMPEG
+#elif HAVE_LIBSMPEG
#include<smpeg/smpeg.h>
struct MP3FILE_impl {

5
devel/rlvm/pkg-descr Normal file
View file

@ -0,0 +1,5 @@
rlvm is a Free Software reimplementation of VisualArt's KK's RealLive
interpreter, used in the games Kanon, Air, CLANNAD, Planetarian,
Tomoyo After and Little Busters, among many others.
WWW: http://www.elliotglaysher.org/rlvm/

10
devel/rlvm/pkg-plist Normal file
View file

@ -0,0 +1,10 @@
bin/rlvm
man/man6/rlvm.6.gz
share/applications/rlvm.desktop
share/icons/hicolor/128x128/apps/rlvm.png
share/icons/hicolor/16x16/apps/rlvm.png
share/icons/hicolor/24x24/apps/rlvm.png
share/icons/hicolor/256x256/apps/rlvm.png
share/icons/hicolor/32x32/apps/rlvm.png
share/icons/hicolor/48x48/apps/rlvm.png
%%NLS%%share/locale/ja/LC_MESSAGES/rlvm.mo