svn commit: r411820 - in head/games: . trenchbroom trenchbroom/files

Alexey Dokuchaev danfe at FreeBSD.org
Fri Mar 25 06:47:18 UTC 2016


Author: danfe
Date: Fri Mar 25 06:47:15 2016
New Revision: 411820
URL: https://svnweb.freebsd.org/changeset/ports/411820

Log:
  Add a port of TrenchBroom, a cross-platform level editor for Quake-engine
  based games.  It's currently in beta (2.0.0 release is planned on June 22
  which is Quake's 20th anniversary).
  
  WWW: http://kristianduske.com/trenchbroom/

Added:
  head/games/trenchbroom/
  head/games/trenchbroom/Makefile   (contents, props changed)
  head/games/trenchbroom/distinfo   (contents, props changed)
  head/games/trenchbroom/files/
  head/games/trenchbroom/files/patch-CMakeLists.txt   (contents, props changed)
  head/games/trenchbroom/files/patch-cmake_GenerateVersion.cmake.in   (contents, props changed)
  head/games/trenchbroom/files/patch-cmake_TrenchBroomApp.cmake   (contents, props changed)
  head/games/trenchbroom/files/patch-cmake_wxWidgets.cmake   (contents, props changed)
  head/games/trenchbroom/files/patch-freebsd-support   (contents, props changed)
  head/games/trenchbroom/files/patch-git-0f4b6d2   (contents, props changed)
  head/games/trenchbroom/files/patch-shared_ptr   (contents, props changed)
  head/games/trenchbroom/pkg-descr   (contents, props changed)
  head/games/trenchbroom/pkg-plist   (contents, props changed)
Modified:
  head/games/Makefile

Modified: head/games/Makefile
==============================================================================
--- head/games/Makefile	Fri Mar 25 06:38:23 2016	(r411819)
+++ head/games/Makefile	Fri Mar 25 06:47:15 2016	(r411820)
@@ -986,6 +986,7 @@
     SUBDIR += traindirector
     SUBDIR += traingame
     SUBDIR += tremulous
+    SUBDIR += trenchbroom
     SUBDIR += trigger-data
     SUBDIR += trigger-rally
     SUBDIR += trimines

Added: head/games/trenchbroom/Makefile
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/Makefile	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,46 @@
+# Created by: Alexey Dokuchaev <danfe at FreeBSD.org>
+# $FreeBSD$
+
+PORTNAME=	trenchbroom
+PORTVERSION=	2.0.0.b
+CATEGORIES=	games
+
+MAINTAINER=	danfe at FreeBSD.org
+COMMENT=	Cross-platform level editor for Quake-engine based games
+
+LICENSE=	GPLv3
+
+LIB_DEPENDS=	libfreeimage.so:${PORTSDIR}/graphics/freeimage
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	kduske
+GH_PROJECT=	TrenchBroom
+GH_TAGNAME=	ed46601
+
+USES=		cmake compiler:c++11-lib pkgconfig
+USE_GL=		glew
+USE_WX=		3.0+
+CMAKE_ARGS=	-DAPP_BUILD_CHANNEL:STRING="for ${OPSYS}/${ARCH}"
+
+PORTDOCS=	README.md
+
+OPTIONS_DEFINE=	DOCS
+
+post-patch:
+	@${GREP} -Rl --null std::tr1:: ${WRKSRC}/common/src | ${XARGS} -0 \
+		${REINPLACE_CMD} -e 's,std::tr1::,std::,g'
+	@${REINPLACE_CMD} -e 's,Build ,&Type: ,' \
+		${WRKSRC}/common/src/View/AppInfoPanel.cpp
+	@${REINPLACE_CMD} -e 's,%%DATADIR%%,${DATADIR},' \
+		${WRKSRC}/common/src/IO/SystemPaths.cpp
+
+do-install:
+	${INSTALL_PROGRAM} ${WRKSRC}/TrenchBroom ${STAGEDIR}${PREFIX}/bin
+	@${RMDIR} ${WRKSRC}/Resources/help || :
+	cd ${WRKSRC}/Resources && ${COPYTREE_SHARE} . ${STAGEDIR}${DATADIR}
+
+do-install-DOCS-on:
+	@${MKDIR} ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${WRKSRC}/README.md ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.mk>

Added: head/games/trenchbroom/distinfo
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/distinfo	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,2 @@
+SHA256 (kduske-TrenchBroom-2.0.0.b-ed46601_GH0.tar.gz) = d0bac990d9b19f4d7f7aba392a561d1ee87ca396af2fce42a4989021d8466312
+SIZE (kduske-TrenchBroom-2.0.0.b-ed46601_GH0.tar.gz) = 20513562

Added: head/games/trenchbroom/files/patch-CMakeLists.txt
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-CMakeLists.txt	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,40 @@
+--- CMakeLists.txt.orig	2016-03-09 20:19:17 UTC
++++ CMakeLists.txt
+@@ -18,12 +18,12 @@ SET(LIB_INCLUDE_DIR "${LIB_DIR}/include"
+ SET(LIB_SOURCE_DIR "${LIB_DIR}/src")
+ 
+ INCLUDE(cmake/wxWidgets.cmake)
+-INCLUDE(cmake/FreeType.cmake)
++#INCLUDE(cmake/FreeType.cmake)
+ INCLUDE(cmake/FreeImage.cmake)
+ 
+-INCLUDE(cmake/GTest.cmake)
+-INCLUDE(cmake/GMock.cmake)
+-INCLUDE(cmake/Glew.cmake)
++#INCLUDE(cmake/GTest.cmake)
++#INCLUDE(cmake/GMock.cmake)
++#INCLUDE(cmake/Glew.cmake)
+ INCLUDE(cmake/Common.cmake)
+ 
+ # Include directories
+@@ -45,12 +45,10 @@ ENDIF()
+ # Compiler configuration
+ IF(COMPILER_IS_CLANG)
+     MESSAGE(STATUS "Compiler is Clang")
+-    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
+-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything -pedantic -Wno-format -Wno-variadic-macros -Wno-c++11-long-long -Wno-c99-extensions -Wno-padded -Wno-unused-parameter -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables -Wno-weak-template-vtables -Wno-float-equal -Wno-used-but-marked-unused -Wno-format-nonliteral -Wno-missing-noreturn -Wno-unused-local-typedef -stdlib=libstdc++")
++    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Weverything -pedantic -Wno-format -Wno-variadic-macros -Wno-c++11-long-long -Wno-c99-extensions -Wno-padded -Wno-unused-parameter -Wno-global-constructors -Wno-exit-time-destructors -Wno-weak-vtables -Wno-weak-template-vtables -Wno-float-equal -Wno-used-but-marked-unused -Wno-format-nonliteral -Wno-missing-noreturn -Wno-unused-local-typedef")
+ ELSEIF(COMPILER_IS_GNU)
+     MESSAGE(STATUS "Compiler is GNU")
+-    SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3")
+-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wno-format -Wno-variadic-macros -Wno-padded -Wno-unused-parameter -Wno-float-equal -Wno-format-nonliteral -Wno-missing-noreturn")
++    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x -Wall -Wextra -pedantic -Wno-format -Wno-variadic-macros -Wno-padded -Wno-unused-parameter -Wno-float-equal -Wno-format-nonliteral -Wno-missing-noreturn")
+ ELSEIF(COMPILER_IS_MSVC)
+     MESSAGE(STATUS "Compiler is MSVC")
+     SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ox")
+@@ -77,4 +75,4 @@ IF(CMAKE_BUILD_TYPE MATCHES "Debug")
+ ENDIF()
+ 
+ INCLUDE(cmake/TrenchBroomApp.cmake)
+-INCLUDE(cmake/TrenchBroomTest.cmake)
++#INCLUDE(cmake/TrenchBroomTest.cmake)

Added: head/games/trenchbroom/files/patch-cmake_GenerateVersion.cmake.in
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-cmake_GenerateVersion.cmake.in	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,12 @@
+--- cmake/GenerateVersion.cmake.in.orig	2016-03-09 20:19:17 UTC
++++ cmake/GenerateVersion.cmake.in
+@@ -2,7 +2,7 @@ INCLUDE("@CMAKE_SOURCE_DIR@/cmake/Utils.
+ GET_APP_VERSION(@APP_DIR@ APP_VERSION_MAJOR APP_VERSION_MINOR APP_VERSION_MAINTENANCE)
+ GET_BUILD_ID("@GIT_EXECUTABLE@" "@CMAKE_SOURCE_DIR@" APP_BUILD_ID)
+ 
+-SET(APP_BUILD_CHANNEL @APP_BUILD_CHANNEL@)
+-SET(APP_BUILD_TYPE @CMAKE_BUILD_TYPE@)
++SET(APP_BUILD_CHANNEL "@APP_BUILD_CHANNEL@")
++SET(APP_BUILD_TYPE "@CMAKE_BUILD_TYPE@")
+ STRING(SUBSTRING @CMAKE_BUILD_TYPE@ 0 1 APP_BUILD_TYPE_SHORT)
+ CONFIGURE_FILE("@APP_SOURCE_DIR@/Version.h.in" "@CMAKE_CURRENT_BINARY_DIR@/Version.h" @ONLY)

Added: head/games/trenchbroom/files/patch-cmake_TrenchBroomApp.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-cmake_TrenchBroomApp.cmake	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,47 @@
+--- cmake/TrenchBroomApp.cmake.orig	2016-03-09 20:19:17 UTC
++++ cmake/TrenchBroomApp.cmake
+@@ -1,4 +1,4 @@
+-INCLUDE(cmake/GenerateHelp.cmake)
++#INCLUDE(cmake/GenerateHelp.cmake)
+ 
+ SET(APP_DIR "${CMAKE_SOURCE_DIR}/app")
+ SET(APP_SOURCE_DIR "${APP_DIR}/src")
+@@ -84,8 +84,8 @@ ENDIF()
+ 
+ ADD_EXECUTABLE(TrenchBroom WIN32 MACOSX_BUNDLE ${APP_SOURCE} $<TARGET_OBJECTS:common>)
+ 
+-TARGET_LINK_LIBRARIES(TrenchBroom glew ${wxWidgets_LIBRARIES} ${FREETYPE_LIBRARIES} ${FREEIMAGE_LIBRARIES})
+-SET_TARGET_PROPERTIES(TrenchBroom PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC")
++TARGET_LINK_LIBRARIES(TrenchBroom GLEW freetype ${wxWidgets_LIBRARIES} ${FREETYPE_LIBRARIES} ${FREEIMAGE_LIBRARIES})
++#SET_TARGET_PROPERTIES(TrenchBroom PROPERTIES COMPILE_DEFINITIONS "GLEW_STATIC")
+ 
+ GET_APP_VERSION("${APP_DIR}" CPACK_PACKAGE_VERSION_MAJOR CPACK_PACKAGE_VERSION_MINOR CPACK_PACKAGE_VERSION_PATCH)
+ GET_BUILD_ID("${GIT_EXECUTABLE}" "${CMAKE_SOURCE_DIR}" APP_BUILD_ID)
+@@ -102,7 +102,7 @@ ADD_CUSTOM_TARGET(GenerateVersion 
+     ${CMAKE_COMMAND} -P "${CMAKE_CURRENT_BINARY_DIR}/GenerateVersion.cmake")
+ ADD_DEPENDENCIES(TrenchBroom GenerateVersion)
+ 
+-ADD_DEPENDENCIES(TrenchBroom GenerateHelp)
++#ADD_DEPENDENCIES(TrenchBroom GenerateHelp)
+ 
+ IF(APPLE)
+     # Configure variables that are substituted into the plist
+@@ -136,14 +136,15 @@ IF(WIN32)
+ 	)
+ ENDIF()
+ 
+-# Properly link to OpenGL libraries on Linux
+-IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux")
++# Properly link to OpenGL libraries on Unix-like systems
++IF(${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD")
+     FIND_PACKAGE(OpenGL)
++    INCLUDE_DIRECTORIES(SYSTEM ${OPENGL_INCLUDE_DIR})
+     TARGET_LINK_LIBRARIES(TrenchBroom ${OPENGL_LIBRARIES})
+ ENDIF()
+ 
+ # Set up the resources and DLLs for the executable
+-IF(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux")
++IF(WIN32 OR ${CMAKE_SYSTEM_NAME} MATCHES "Linux|FreeBSD")
+ 	# Copy button images to resources directory
+ 	ADD_CUSTOM_COMMAND(TARGET TrenchBroom POST_BUILD
+         COMMAND ${CMAKE_COMMAND} -E copy_directory "${APP_DIR}/resources/graphics/images" "$<TARGET_FILE_DIR:TrenchBroom>/Resources/images"

Added: head/games/trenchbroom/files/patch-cmake_wxWidgets.cmake
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-cmake_wxWidgets.cmake	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,31 @@
+--- cmake/wxWidgets.cmake.orig	2016-03-09 20:19:17 UTC
++++ cmake/wxWidgets.cmake
+@@ -15,21 +15,16 @@ IF(WIN32)
+ ELSE()
+     SET(wxWidgets_USE_UNICODE ON)
+     SET(wxWidgets_USE_UNIVERSAL ON)
+-    IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
+-        SET(wxWidgets_USE_DEBUG ON)
+-        SET(wxWidgets_USE_STATIC OFF)
+-        MESSAGE(STATUS "Using debug version of wxWidgets")
+-    ELSE()
+-        SET(wxWidgets_USE_DEBUG OFF)
+-        SET(wxWidgets_USE_STATIC ON)
+-        MESSAGE(STATUS "Using static wxWidgets library")
+-    ENDIF()
++    SET(wxWidgets_USE_DEBUG OFF)
++    SET(wxWidgets_USE_STATIC OFF)
++    MESSAGE(STATUS "Using dynamic wxWidgets library")
+ ENDIF()
+ 
+-SET(wxWidgets_FIND_COMPONENTS gl core base adv)
++#SET(wxWidgets_FIND_COMPONENTS gl core base adv)
++FIND_PACKAGE(wxWidgets 3.0 COMPONENTS gl core base adv)
+ 
+-SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
+-FIND_PACKAGE(wxWidgetsTB REQUIRED)
++#SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/")
++#FIND_PACKAGE(wxWidgetsTB REQUIRED)
+ INCLUDE("${wxWidgets_USE_FILE}")
+ 
+ # Remove QuickTime framework on OS X; it's not needed and produces a linker warning

Added: head/games/trenchbroom/files/patch-freebsd-support
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-freebsd-support	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,66 @@
+--- common/src/IO/SystemPaths.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/SystemPaths.cpp
+@@ -28,6 +28,9 @@
+ #include <Windows.h>
+ #elif defined __linux__
+ #include <unistd.h>
++#elif defined __FreeBSD__
++#include <sys/types.h>
++#include <sys/sysctl.h>
+ #endif
+ 
+ namespace TrenchBroom {
+@@ -74,6 +77,19 @@ namespace TrenchBroom {
+                 const Path appPath(appPathStr);
+                 return appPath.deleteLastComponent();
+             }
++#elif defined __FreeBSD__
++            Path appDirectory() {
++                char buf[1024];
++                const int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PATHNAME, -1 };
++                size_t len = sizeof(buf);
++
++                const int result = sysctl(mib, 4, buf, &len, 0x0, 0);
++                assert(result == 0);
++
++                const String appPathStr(buf);
++                const Path appPath(appPathStr);
++                return appPath.deleteLastComponent();
++            }
+ #endif
+             
+ #if defined __APPLE__
+@@ -99,9 +115,9 @@ namespace TrenchBroom {
+             Path resourceDirectory() {
+                 return appDirectory() + Path("Resources");
+             }
+-#elif defined __linux__
++#elif defined __linux__ || defined __FreeBSD__
+             Path resourceDirectory() {
+-                return appDirectory() + Path("Resources");
++                return Path("%%DATADIR%%");
+             }
+ #endif
+             
+--- common/src/View/KeyboardShortcut.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/KeyboardShortcut.cpp
+@@ -74,7 +74,7 @@ namespace TrenchBroom {
+         }
+         
+         bool KeyboardShortcut::isShortcutValid(const int key, const int modifier1, const int modifier2, const int modifier3) {
+-#ifdef __linux__
++#if defined __linux__ || defined __FreeBSD__
+             // TAB and Escape are never allowed on GTK2:
+             if (key == WXK_TAB || key == WXK_ESCAPE)
+                 return false;
+--- common/src/View/ViewConstants.h.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/ViewConstants.h
+@@ -63,7 +63,7 @@ namespace TrenchBroom {
+             static const int TextBoxInnerMargin                 = 0;
+             static const int TabBarBarLeftMargin                = 10;
+             static const int ToggleButtonStyle                  = 0x08000000; // wxBORDER_SUNKEN
+-#elif defined __linux__
++#elif defined __linux__ || defined __FreeBSD__
+             static const int DialogOuterMargin                  = 10;
+             static const int DialogButtonTopMargin              = 10;
+             static const int DialogButtonSideMargin             = 0;

Added: head/games/trenchbroom/files/patch-git-0f4b6d2
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-git-0f4b6d2	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,116 @@
+--- common/src/IO/ConfigParser.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/ConfigParser.cpp
+@@ -61,10 +61,10 @@ namespace TrenchBroom {
+                     case '\t':
+                     case '\n':
+                     case '\r':
+-                        discardWhile(Whitespace);
++                        discardWhile(Whitespace());
+                         break;
+                     default: {
+-                        const char* e = readString(Whitespace + "=");
++                        const char* e = readString(Whitespace() + "=");
+                         if (e == NULL)
+                             throw ParserException(startLine, startColumn, "Unexpected character: " + String(c, 1));
+                         return Token(ConfigToken::Identifier, c, e, offset(c), startLine, startColumn);
+--- common/src/IO/FgdParser.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/FgdParser.cpp
+@@ -79,7 +79,7 @@ namespace TrenchBroom {
+                     case '\t':
+                     case '\n':
+                     case '\r':
+-                        discardWhile(Whitespace);
++                        discardWhile(Whitespace());
+                         break;
+                     default: {
+                         const char* e = readInteger(WordDelims);
+--- common/src/IO/StandardMapParser.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/StandardMapParser.cpp
+@@ -25,7 +25,10 @@
+ 
+ namespace TrenchBroom {
+     namespace IO {
+-        const String QuakeMapTokenizer::NumberDelim = Whitespace + ")";
++        const String& QuakeMapTokenizer::NumberDelim() {
++            static const String numberDelim(Whitespace() + ")");
++            return numberDelim;
++        }
+ 
+         QuakeMapTokenizer::QuakeMapTokenizer(const char* begin, const char* end) :
+         Tokenizer(begin, end),
+@@ -88,18 +91,18 @@ namespace TrenchBroom {
+                     case '\r':
+                     case ' ':
+                     case '\t':
+-                        discardWhile(Whitespace);
++                        discardWhile(Whitespace());
+                         break;
+                     default: { // whitespace, integer, decimal or word
+-                        const char* e = readInteger(NumberDelim);
++                        const char* e = readInteger(NumberDelim());
+                         if (e != NULL)
+                             return Token(QuakeMapToken::Integer, c, e, offset(c), startLine, startColumn);
+                         
+-                        e = readDecimal(NumberDelim);
++                        e = readDecimal(NumberDelim());
+                         if (e != NULL)
+                             return Token(QuakeMapToken::Decimal, c, e, offset(c), startLine, startColumn);
+                         
+-                        e = readString(Whitespace);
++                        e = readString(Whitespace());
+                         if (e == NULL)
+                             throw ParserException(startLine, startColumn, "Unexpected character: " + String(c, 1));
+                         return Token(QuakeMapToken::String, c, e, offset(c), startLine, startColumn);
+@@ -356,7 +359,7 @@ namespace TrenchBroom {
+             }
+             
+             // texture names can contain braces etc, so we just read everything until the next opening bracket or number
+-            String textureName = m_tokenizer.readAnyString(QuakeMapTokenizer::Whitespace);
++            String textureName = m_tokenizer.readAnyString(QuakeMapTokenizer::Whitespace());
+             if (textureName == Model::BrushFace::NoTextureName)
+                 textureName = "";
+             
+--- common/src/IO/StandardMapParser.h.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/StandardMapParser.h
+@@ -50,7 +50,7 @@ namespace TrenchBroom {
+         
+         class QuakeMapTokenizer : public Tokenizer<QuakeMapToken::Type> {
+         private:
+-            static const String NumberDelim;
++            static const String& NumberDelim();
+             bool m_skipEol;
+         public:
+             QuakeMapTokenizer(const char* begin, const char* end);
+--- common/src/IO/Tokenizer.h.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/Tokenizer.h
+@@ -54,7 +54,10 @@ namespace TrenchBroom {
+             
+             TokenStack m_tokenStack;
+         public:
+-            static const String Whitespace;
++            static const String& Whitespace() {
++                static const String whitespace(" \t\n\r");
++                return whitespace;
++            }
+         public:
+             Tokenizer(const char* begin, const char* end) :
+             m_begin(begin),
+@@ -205,7 +208,7 @@ namespace TrenchBroom {
+             }
+             
+             bool isWhitespace(const char c) const {
+-                return isAnyOf(c, Whitespace);
++                return isAnyOf(c, Whitespace());
+             }
+ 
+             const char* readInteger(const String& delims) {
+@@ -297,9 +300,6 @@ namespace TrenchBroom {
+             
+             virtual Token emitToken() = 0;
+         };
+-        
+-        template <typename TokenType>
+-        const String Tokenizer<TokenType>::Whitespace = " \t\n\r";
+     }
+ }
+ #endif

Added: head/games/trenchbroom/files/patch-shared_ptr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/files/patch-shared_ptr	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,229 @@
+--- common/src/IO/GameConfigParser.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/GameConfigParser.cpp
+@@ -36,7 +36,7 @@ namespace TrenchBroom {
+             using Model::GameConfig;
+ 
+             const ConfigEntry::Ptr root = m_parser.parse();
+-            if (root == NULL)
++            if (root.get() == NULL)
+                 throw ParserException("Empty game config");
+             
+             expectEntry(ConfigEntry::Type_Table, *root);
+--- common/src/IO/GameFileSystem.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/GameFileSystem.cpp
+@@ -44,7 +44,7 @@ namespace TrenchBroom {
+                     Path::List::const_iterator it, end;
+                     for (it = paks.begin(), end = paks.end(); it != end; ++it) {
+                         MappedFile::Ptr file = diskFS->openFile(*it);
+-                        assert(file != NULL);
++                        assert(file.get() != NULL);
+                         m_fileSystems.push_back(FSPtr(new PakFileSystem(path, file)));
+                     }
+                 } else {
+@@ -95,7 +95,7 @@ namespace TrenchBroom {
+                 const FSPtr fileSystem = *it;
+                 if (fileSystem->fileExists(path)) {
+                     const MappedFile::Ptr file = fileSystem->openFile(path);
+-                    if (file != NULL)
++                    if (file.get() != NULL)
+                         return file;
+                 }
+             }
+--- common/src/IO/Wad.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/IO/Wad.cpp
+@@ -83,7 +83,7 @@ namespace TrenchBroom {
+ 
+         Wad::Wad(const Path& path) :
+         m_file(Disk::openFile(path)) {
+-            if (m_file == NULL)
++            if (m_file.get() == NULL)
+                 throw AssetException("Cannot open wad file " + path.asString());
+             loadEntries();
+         }
+--- common/src/Model/BrushContentType.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/Model/BrushContentType.cpp
+@@ -32,7 +32,7 @@ namespace TrenchBroom {
+         m_transparent(transparent),
+         m_flagValue(flagValue),
+         m_evaluator(evaluator) {
+-            assert(m_evaluator != NULL);
++            assert(m_evaluator.get() != NULL);
+         }
+         
+         const String& BrushContentType::name() const {
+--- common/src/Model/GameImpl.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/Model/GameImpl.cpp
+@@ -258,7 +258,7 @@ namespace TrenchBroom {
+         Assets::EntityModel* GameImpl::doLoadEntityModel(const IO::Path& path) const {
+             try {
+                 const IO::MappedFile::Ptr file = m_fs.openFile(path);
+-                assert(file != NULL);
++                assert(file.get() != NULL);
+                 
+                 const String modelName = path.lastComponent().asString();
+                 const String extension = StringUtils::toLower(path.extension());
+--- common/src/Model/PickResult.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/Model/PickResult.cpp
+@@ -54,7 +54,7 @@ namespace TrenchBroom {
+         }
+         
+         void PickResult::addHit(const Hit& hit) {
+-            assert(m_compare != NULL);
++            assert(m_compare.get() != NULL);
+             Hit::List::iterator pos = std::upper_bound(m_hits.begin(), m_hits.end(), hit, CompareWrapper(m_compare.get()));
+             m_hits.insert(pos, hit);
+         }
+--- common/src/Renderer/IndexArray.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/Renderer/IndexArray.cpp
+@@ -45,11 +45,11 @@ namespace TrenchBroom {
+         }
+         
+         size_t IndexArray::sizeInBytes() const {
+-            return m_holder == NULL ? 0 : m_holder->sizeInBytes();
++            return m_holder.get() == NULL ? 0 : m_holder->sizeInBytes();
+         }
+         
+         size_t IndexArray::indexCount() const {
+-            return m_holder == NULL ? 0 : m_holder->indexCount();
++            return m_holder.get() == NULL ? 0 : m_holder->indexCount();
+         }
+         
+         bool IndexArray::prepared() const {
+--- common/src/Renderer/VertexArray.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/Renderer/VertexArray.cpp
+@@ -46,11 +46,11 @@ namespace TrenchBroom {
+         }
+ 
+         size_t VertexArray::sizeInBytes() const {
+-            return m_holder == NULL ? 0 : m_holder->sizeInBytes();
++            return m_holder.get() == NULL ? 0 : m_holder->sizeInBytes();
+         }
+ 
+         size_t VertexArray::vertexCount() const {
+-            return m_holder == NULL ? 0 : m_holder->vertexCount();
++            return m_holder.get() == NULL ? 0 : m_holder->vertexCount();
+         }
+ 
+         bool VertexArray::prepared() const {
+--- common/src/TrenchBroomApp.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/TrenchBroomApp.cpp
+@@ -165,7 +165,7 @@ namespace TrenchBroom {
+ 
+             const Model::GameFactory& gameFactory = Model::GameFactory::instance();
+             Model::GamePtr game = gameFactory.createGame(gameName);
+-            assert(game != NULL);
++            assert(game.get() != NULL);
+ 
+             MapFrame* frame = m_frameManager->newFrame();
+             frame->newDocument(game, mapFormat);
+@@ -190,7 +190,7 @@ namespace TrenchBroom {
+                 }
+ 
+                 Model::GamePtr game = gameFactory.createGame(gameName);
+-                assert(game != NULL);
++                assert(game.get() != NULL);
+ 
+                 frame = m_frameManager->newFrame();
+                 frame->openDocument(game, mapFormat, path);
+--- common/src/View/ExecutableEvent.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/ExecutableEvent.cpp
+@@ -46,7 +46,7 @@ namespace TrenchBroom {
+         }
+ 
+         void ExecutableEvent::execute() {
+-            if (m_executable != NULL)
++            if (m_executable.get() != NULL)
+                 (*m_executable)();
+         }
+     }
+--- common/src/View/GLContextManager.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/GLContextManager.cpp
+@@ -42,7 +42,7 @@ namespace TrenchBroom {
+ 
+         GLContext::Ptr GLContextManager::createContext(wxGLCanvas* canvas) {
+             GLContext::Ptr context(new GLContext(canvas, this));
+-            if (m_mainContext == NULL)
++            if (m_mainContext.get() == NULL)
+                 m_mainContext = context;
+             return context;
+         }
+--- common/src/View/MapDocument.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/MapDocument.cpp
+@@ -154,7 +154,7 @@ namespace TrenchBroom {
+         }
+         
+         bool MapDocument::isGamePathPreference(const IO::Path& path) const {
+-            return m_game != NULL && m_game->isGamePathPreference(path);
++            return m_game.get() != NULL && m_game->isGamePathPreference(path);
+         }
+         
+         Model::Layer* MapDocument::currentLayer() const {
+@@ -257,7 +257,7 @@ namespace TrenchBroom {
+         }
+         
+         void MapDocument::saveDocumentTo(const IO::Path& path) {
+-            assert(m_game != NULL);
++            assert(m_game.get() != NULL);
+             assert(m_world != NULL);
+             m_game->writeMap(m_world, path);
+         }
+--- common/src/View/MapFrame.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/MapFrame.cpp
+@@ -86,7 +86,7 @@ namespace TrenchBroom {
+ 
+         void MapFrame::Create(FrameManager* frameManager, MapDocumentSPtr document) {
+             assert(frameManager != NULL);
+-            assert(document != NULL);
++            assert(document.get() != NULL);
+ 
+             m_frameManager = frameManager;
+             m_document = document;
+--- common/src/View/SmartAttributeEditorManager.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/SmartAttributeEditorManager.cpp
+@@ -123,7 +123,7 @@ namespace TrenchBroom {
+         }
+         
+         void SmartAttributeEditorManager::deactivateEditor() {
+-            if (m_activeEditor != NULL) {
++            if (m_activeEditor.get() != NULL) {
+                 m_activeEditor->deactivate();
+                 m_activeEditor = EditorPtr();
+                 m_name = "";
+@@ -131,7 +131,7 @@ namespace TrenchBroom {
+         }
+ 
+         void SmartAttributeEditorManager::updateEditor() {
+-            if (m_activeEditor != NULL) {
++            if (m_activeEditor.get() != NULL) {
+                 MapDocumentSPtr document = lock(m_document);
+                 m_activeEditor->update(document->allSelectedAttributableNodes());
+             }
+--- common/src/View/ViewEditor.cpp.orig	2016-03-09 20:19:17 UTC
++++ common/src/View/ViewEditor.cpp
+@@ -252,7 +252,7 @@ namespace TrenchBroom {
+             MapDocumentSPtr document = lock(m_document);
+             Model::GamePtr game = document->game();
+             
+-            if (game != NULL) {
++            if (game.get() != NULL) {
+                 Model::BrushContentType::FlagType hiddenFlags = 0;
+                 const Model::BrushContentType::List& contentTypes = game->brushContentTypes();
+                 
+@@ -452,7 +452,7 @@ namespace TrenchBroom {
+             
+             MapDocumentSPtr document = lock(m_document);
+             Model::GamePtr game = document->game();
+-            if (game == NULL) {
++            if (game.get() == NULL) {
+                 createEmptyBrushContentTypeFilter(parent);
+             } else {
+                 const Model::BrushContentType::List& contentTypes = game->brushContentTypes();
+@@ -574,7 +574,7 @@ namespace TrenchBroom {
+             const Model::BrushContentType::FlagType hiddenFlags = editorContext.hiddenBrushContentTypes();
+             
+             Model::GamePtr game = document->game();
+-            if (game != NULL) {
++            if (game.get() != NULL) {
+                 const Model::BrushContentType::List& contentTypes = game->brushContentTypes();
+                 for (size_t i = 0; i < contentTypes.size(); ++i) {
+                     const Model::BrushContentType& contentType = contentTypes[i];

Added: head/games/trenchbroom/pkg-descr
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/pkg-descr	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,22 @@
+TrenchBroom is a modern, cross platform level editor for Quake-engine based
+games.  It currently supports Quake, Quake 2, and Hexen 2, is easy to use,
+and provides many simple and advanced tools to make complex and interesting
+levels with ease.  Some of its features:
+
+  - True 3D editing, no 2D views required
+  - High performance renderer with support for huge maps
+  - Vertex editing with edge and face splitting that will not create
+    invalid brushes
+  - Manipulation of multiple vertices at once (great for trisoup editing)
+  - Move, rotate, and flip brushes and entities
+  - Precise texture lock for all operations
+  - Smart entity property editors
+  - Graphical entity browser with drag and drop support
+  - Comprehensive texture application and manipulation tools
+  - Search and filter functions
+  - Unlimited undo and redo
+  - Point file support
+  - Support for FGD and DEF entity definition files, mods, and multiple
+    WAD files
+
+WWW: http://kristianduske.com/trenchbroom/

Added: head/games/trenchbroom/pkg-plist
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/games/trenchbroom/pkg-plist	Fri Mar 25 06:47:15 2016	(r411820)
@@ -0,0 +1,95 @@
+bin/TrenchBroom
+%%DATADIR%%/fonts/SIL Open Font License.txt
+%%DATADIR%%/fonts/SourceSansPro-Regular.otf
+%%DATADIR%%/games/Halflife/HalfLife.fgd
+%%DATADIR%%/games/Hexen2.cfg
+%%DATADIR%%/games/Hexen2/Hexen2.fgd
+%%DATADIR%%/games/Hexen2/Icon.png
+%%DATADIR%%/games/Hexen2/palette.lmp
+%%DATADIR%%/games/Quake.cfg
+%%DATADIR%%/games/Quake/Icon.png
+%%DATADIR%%/games/Quake/palette.lmp
+%%DATADIR%%/games/Quake/Quake.fgd
+%%DATADIR%%/games/Quake/Quoth2.fgd
+%%DATADIR%%/games/Quake/Rubicon2.def
+%%DATADIR%%/games/Quake2.cfg
+%%DATADIR%%/games/Quake2/colormap.pcx
+%%DATADIR%%/games/Quake2/Icon.png
+%%DATADIR%%/games/Quake2/Quake2.fgd
+%%DATADIR%%/games/Quake3/Icon.png
+%%DATADIR%%/games/Quake4/Icon.png
+%%DATADIR%%/images/Add.png
+%%DATADIR%%/images/AppIcon.png
+%%DATADIR%%/images/BrushTool.png
+%%DATADIR%%/images/ClipTool.png
+%%DATADIR%%/images/Console.png
+%%DATADIR%%/images/ConsolePressed.png
+%%DATADIR%%/images/DefaultGameIcon.png
+%%DATADIR%%/images/DocIcon.png
+%%DATADIR%%/images/Down.png
+%%DATADIR%%/images/DuplicateObjects.png
+%%DATADIR%%/images/EditMods.png
+%%DATADIR%%/images/FlipHorizontally.png
+%%DATADIR%%/images/FlipTextureH.png
+%%DATADIR%%/images/FlipTextureV.png
+%%DATADIR%%/images/FlipVertically.png
+%%DATADIR%%/images/GeneralPreferences.png
+%%DATADIR%%/images/Grid.png
+%%DATADIR%%/images/Invisible_White.png
+%%DATADIR%%/images/Invisible.png
+%%DATADIR%%/images/IssueBrowser.png
+%%DATADIR%%/images/IssueBrowserPressed.png
+%%DATADIR%%/images/KeyboardPreferences.png
+%%DATADIR%%/images/Locked.png
+%%DATADIR%%/images/MousePreferences.png
+%%DATADIR%%/images/NoTool.png
+%%DATADIR%%/images/Position.png
+%%DATADIR%%/images/Refresh.png
+%%DATADIR%%/images/Remove.png
+%%DATADIR%%/images/ResetTexture.png
+%%DATADIR%%/images/RotateTextureCCW.png
+%%DATADIR%%/images/RotateTextureCW.png
+%%DATADIR%%/images/RotateTool.png
+%%DATADIR%%/images/TextureLockOff.png
+%%DATADIR%%/images/TextureLockOn.png
+%%DATADIR%%/images/Unlocked.png
+%%DATADIR%%/images/Up.png
+%%DATADIR%%/images/VertexTool.png
+%%DATADIR%%/images/Visible_White.png
+%%DATADIR%%/images/Visible.png
+%%DATADIR%%/shader/BrowserGroup.fragsh
+%%DATADIR%%/shader/BrowserGroup.vertsh
+%%DATADIR%%/shader/ClipHandle.vertsh
+%%DATADIR%%/shader/ColoredHandle.vertsh
+%%DATADIR%%/shader/ColoredText.vertsh
+%%DATADIR%%/shader/Compass.fragsh
+%%DATADIR%%/shader/Compass.vertsh
+%%DATADIR%%/shader/CompassOutline.vertsh
+%%DATADIR%%/shader/EntityLink.fragsh
+%%DATADIR%%/shader/EntityLink.vertsh
+%%DATADIR%%/shader/EntityModel.fragsh
+%%DATADIR%%/shader/EntityModel.vertsh
+%%DATADIR%%/shader/Face.fragsh
+%%DATADIR%%/shader/Face.vertsh
+%%DATADIR%%/shader/Grid.fragsh
+%%DATADIR%%/shader/Grid2D.fragsh
+%%DATADIR%%/shader/Grid2D.vertsh
+%%DATADIR%%/shader/Handle.fragsh
+%%DATADIR%%/shader/Handle.vertsh
+%%DATADIR%%/shader/MiniMapEdge.fragsh
+%%DATADIR%%/shader/MiniMapEdge.vertsh
+%%DATADIR%%/shader/Text.fragsh
+%%DATADIR%%/shader/Text.vertsh
+%%DATADIR%%/shader/TextBackground.fragsh
+%%DATADIR%%/shader/TextBackground.vertsh
+%%DATADIR%%/shader/TextureBrowser.fragsh
+%%DATADIR%%/shader/TextureBrowser.vertsh
+%%DATADIR%%/shader/TextureBrowserBorder.fragsh
+%%DATADIR%%/shader/TextureBrowserBorder.vertsh
+%%DATADIR%%/shader/Triangle.fragsh
+%%DATADIR%%/shader/Triangle.vertsh
+%%DATADIR%%/shader/UVView.fragsh
+%%DATADIR%%/shader/UVView.vertsh
+%%DATADIR%%/shader/VaryingPC.fragsh
+%%DATADIR%%/shader/VaryingPC.vertsh
+%%DATADIR%%/shader/VaryingPUniformC.vertsh


More information about the svn-ports-all mailing list