summaryrefslogtreecommitdiff
blob: 02c3df8f53e60592866b376ba51eac8592c07217 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7

inherit cmake desktop xdg-utils flag-o-matic toolchain-funcs java-pkg-opt-2

PATCHSET_VER="0"

DESCRIPTION="Versatile implementation of the Prolog programming language"
HOMEPAGE="https://www.swi-prolog.org/"
SRC_URI="https://www.swi-prolog.org/download/devel/src/swipl-${PV}.tar.gz"

LICENSE="BSD-2"
SLOT="0"
KEYWORDS="~amd64 ~ppc ~x86 ~amd64-linux ~x86-linux ~ppc-macos"
IUSE="archive berkdb debug doc +gmp java +libedit minimal odbc pcre qt5 readline ssl test +uuid X yaml"
RESTRICT="!test? ( test )"

RDEPEND="sys-libs/ncurses:=
	sys-libs/zlib
	virtual/libcrypt:=
	archive? ( app-arch/libarchive:= )
	berkdb? ( >=sys-libs/db-4:= )
	odbc? ( dev-db/unixODBC )
	pcre? ( dev-libs/libpcre )
	readline? ( sys-libs/readline:= )
	libedit? ( dev-libs/libedit )
	gmp? ( dev-libs/gmp:0= )
	ssl? ( dev-libs/openssl:0= )
	java? ( >=virtual/jdk-1.8:* )
	uuid? ( dev-libs/ossp-uuid )
	qt5? (
		dev-qt/qtwidgets:5
		dev-qt/qtgui:5
	)
	X? (
		media-libs/libjpeg-turbo:=
		x11-libs/libX11
		x11-libs/libXft
		x11-libs/libXinerama
		x11-libs/libXpm
		x11-libs/libXt
		x11-libs/libICE
		x11-libs/libSM )
	yaml? ( dev-libs/libyaml )"

DEPEND="${RDEPEND}
	X? ( x11-base/xorg-proto )
	java? ( test? ( =dev-java/junit-3.8* ) )"

BDEPEND="virtual/pkgconfig"

S="${WORKDIR}/swipl-${PV}"

pkg_setup() {
	java-pkg-opt-2_pkg_setup
}

src_prepare() {
	if [[ -d "${WORKDIR}"/${PV} ]] ; then
		eapply "${WORKDIR}"/${PV}
	fi

	sed -e "s|\(SWIPL_INSTALL_PREFIX\)   lib/.*)|\1   $(get_libdir)/swipl)|" \
		-e "s|\(SWIPL_INSTALL_CMAKE_CONFIG_DIR\) lib/|\1   $(get_libdir)/|" \
		-i CMakeLists.txt || die

	local ncurses_lib_flags=$($(tc-getPKG_CONFIG) --libs ncurses)
	sed -i "/project(SWI-Prolog)/a set(CMAKE_REQUIRED_LIBRARIES \${CMAKE_REQUIRED_LIBRARIES} ${ncurses_lib_flags})" CMakeLists.txt || die
	sed -i "s:\${CURSES_LIBRARIES}:${ncurses_lib_flags}:" src/CMakeLists.txt || die

	cmake_src_prepare
}

src_configure() {
	append-flags -fno-strict-aliasing
	use debug && append-flags -DO_DEBUG

	local mycmakeargs=(
		-DSWIPL_INSTALL_PREFIX=$(get_libdir)/swipl
		-DUSE_GMP=$(usex gmp)
		-DINSTALL_DOCUMENTATION=$(use doc && usex archive)
		-DSWIPL_PACKAGES_BASIC=$(usex !minimal)
		-DSWIPL_PACKAGES_ARCHIVE=$(usex archive)
		-DSWIPL_PACKAGES_ODBC=$(usex odbc)
		-DSWIPL_PACKAGES_BDB=$(usex berkdb)
		-DSWIPL_PACKAGES_PCRE=$(usex pcre)
		-DSWIPL_PACKAGES_YAML=$(usex yaml)
		-DSWIPL_PACKAGES_SSL=$(usex ssl)
		-DSWIPL_PACKAGES_JAVA=$(usex java)
		-DSWIPL_PACKAGES_QT=$(usex qt5)
		-DSWIPL_PACKAGES_X=$(usex X)
		-DSWIPL_PACKAGES_TERM=$(if use libedit || use readline; then echo yes; else echo no; fi)
	)

	cmake_src_configure
}

src_compile() {
	XDG_CONFIG_DIRS="${HOME}" \
	XDG_DATA_DIRS="${HOME}" \
		cmake_src_compile
}

src_test() {
	USE_PUBLIC_NETWORK_TESTS=false \
	USE_ODBC_TESTS=false \
		cmake_src_test -V
}

src_install() {
	cmake_src_install

	if use qt5; then
		doicon "${S}"/snap/gui/swipl.png
		make_desktop_entry swipl-win "SWI-Prolog" swipl "Development"
	fi
}

pkg_postinst() {
	if use qt5; then
		xdg_icon_cache_update
		xdg_desktop_database_update
	fi
}

pkg_postrm() {
	if use qt5; then
		xdg_icon_cache_update
		xdg_desktop_database_update
	fi
}