# $OpenBSD: Makefile.template,v 1.78 2018/07/09 15:00:06 jca Exp $

COMMENT-main =		transport simulator with rail, road, ship, and air
COMMENT-makeobj =	tool to make pak objects for Simutrans

# Need -DREVISION="svn revision number" for multiplayer.  Get number
# from https://forum.simutrans.com/index.php/board,3.0.html
DISTNAME =		simutrans-src-120-4-1
PAKNAME =		simupak64-120-4-1
CXXFLAGS +=		-DREVISION=8588
PKGNAME =		simutrans-120.4.1
PKGNAME-main =		${PKGNAME}
PKGNAME-makeobj =	simutrans-makeobj-120.4.1
CATEGORIES =		games

HOMEPAGE =		https://www.simutrans.com/

MAINTAINER =		George Koehler <kernigh@gmail.com>

# simutrans: Artistic, MIT, mplus-fonts
# pak64: Artistic, GPLv3 only, see
#   https://sourceforge.net/p/simutrans/code/HEAD/tree/pak64/licence.txt
PERMIT_PACKAGE_CDROM =	Yes

MULTI_PACKAGES =	-main -makeobj
WANTLIB =		${COMPILER_LIBCXX} bz2 c m z
WANTLIB-main =		${WANTLIB} SDL2 SDL2_mixer freetype miniupnpc
WANTLIB-makeobj =	${WANTLIB} png

MASTER_SITES =		${MASTER_SITE_SOURCEFORGE:=simutrans/}
DISTFILES =		${DISTNAME}.zip ${PAKNAME}.zip
EXTRACT_ONLY =

COMPILER =		base-clang ports-gcc base-gcc
BUILD_DEPENDS =		archivers/unzip
RUN_DEPENDS-main =	audio/timidity
# ports-gcc will add gcc-libs to LIB_DEPENDS,
# so we must add LIB_DEPENDS to each subpackage.
LIB_DEPENDS =		archivers/bzip2
LIB_DEPENDS-main =	${LIB_DEPENDS} \
			devel/sdl2 \
			devel/sdl2-mixer \
			net/miniupnp/miniupnpc
LIB_DEPENDS-makeobj =	${LIB_DEPENDS} \
			graphics/png

# This .include must be after MULTI_PACKAGES!
.include <bsd.port.arch.mk>
.if ${PROPERTIES:Mbe}
CXXFLAGS +=		-DSIM_BIG_ENDIAN
.endif

# simutrans combines CFLAGS and CXXFLAGS but makeobj uses CXXFLAGS
# only.  Also, makeobj fails if CXXFLAGS is in MAKE_ENV.  We do unset
# CFLAGS in do-build, and don't add CXXFLAGS to MAKE_ENV.

# MULTI_THREAD=1 is not yet working on OpenBSD.
# OPTIMISE=0 clears an extra -O flag.
# Override default CXX=g++ from gmake.
MAKE_FLAGS =		BACKEND=mixer_sdl2 COLOUR_DEPTH=16 \
			OSTYPE=freebsd OPTIMISE=0 \
			USE_FREETYPE=1 USE_UPNP=1 VERBOSE=1 \
			CXX='${CXX}' FLAGS='${CXXFLAGS}'

USE_GMAKE =		Yes
NO_TEST =		Yes
ALL_TARGET =		all makeobj

post-extract:
# Extract to WRKSRC, not WRKDIR.
	unzip -q ${FULLDISTDIR}/${DISTNAME}.zip -d ${WRKSRC}
	unzip -q ${FULLDISTDIR}/${PAKNAME}.zip -d ${WRKSRC}
# Convert line endings before applying patches.
	cd ${WRKSRC} && perl -pi -e 's/\r$$//' \
	    descriptor/writer/image_writer.cc \
	    descriptor/writer/obj_node.cc \
	    display/simgraph16.cc \
	    gui/simwin.cc \
	    makeobj/Makefile \
	    network/pakset_info.cc \
	    simmain.cc \
	    simsys.cc
# Strip UTF-8 BOM to prevent errors from base-gcc:
# gui/loadfont_frame.cc:1: error: stray '\357' in program
	cd ${WRKSRC} && perl -pi -e 's/^\xef\xbb\xbf//' \
	    gui/loadfont_frame.cc

do-build:
	cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
	    sh -c 'unset CFLAGS && exec "$$0" "$$@"' \
	    gmake ${MAKE_FLAGS} ${ALL_TARGET}

do-install:
	${INSTALL_PROGRAM} ${WRKSRC}/build/default/sim \
	    ${PREFIX}/bin/simutrans
# bin/makeobj would conflict with x11/kde4/dev-scripts
	${INSTALL_PROGRAM_DIR} ${PREFIX}/libexec/simutrans
	${INSTALL_PROGRAM} ${WRKSRC}/build/default/makeobj/makeobj \
	    ${PREFIX}/libexec/simutrans/makeobj
	cp -R ${WRKSRC}/simutrans ${PREFIX}/share/
# get_pak.sh has unsafe use of /tmp
	rm ${PREFIX}/share/simutrans/get_pak.sh

.include <bsd.port.mk>
