summaryrefslogtreecommitdiffstats
path: root/build
blob: a1cd256ec5ea9e71f9b3e48e3ae24a9a2d4ff1f8 (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
#!/usr/bin/make -f

include ../source.mk

V = $${OPK_SOURCE\#tcl}

nop:
	@:

configure:
	TCL_PACKAGE_PATH='$${TCL_LIBRARY}' \
	TCL_SHLIB_LD_EXTRAS='-Wl,-soname,$${TCL_LIB_FILE}' \
		oh-autoconfigure -s src/unix -B src/unix -- \
		--includedir=/usr/include/$(OPK_SOURCE) \
		--enable-shared \
		--enable-threads \
		--enable-dll-unloading \
		--disable-rpath \
		--enable-man-symlinks
	touch $@

build: configure
	oh-autobuild -s src/unix -B src/unix -- \
		TCL_LIBRARY='/usr/share/tcltk/$(OPK_SOURCE)'
	touch $@

install: build
	oh-autoinstall -s src/unix -B src/unix -- \
		TCL_LIBRARY='/usr/share/tcltk/$(OPK_SOURCE)' \
		MANN_INSTALL_DIR='$$(MAN_INSTALL_DIR)/man3'
	# TODO: Temporary hack for bootstrapping on Debian with tcl8.6 <
	# 8.6.0-2.  Fixes this error:
	#     /usr/bin/expect: error while loading shared libraries:
	#     libtcl8.6.so.0: cannot open shared object file: No such file or
	#     directory
	ln -sf libtcl$(V).so dest/usr/lib/$(OPK_HOST_ARCH)/libtcl$(V).so.0
	# Remove static library.
	rm dest/usr/lib/$(OPK_HOST_ARCH)/libtcl$(V).a
	# Move tcl*Config.sh.
	mkdir -p dest/usr/lib/$(OPK_HOST_ARCH)/$(OPK_SOURCE)
	mv dest/usr/lib/$(OPK_HOST_ARCH)/tcl*Config.sh \
		dest/usr/lib/$(OPK_HOST_ARCH)/$(OPK_SOURCE)
	# Move bundled modules.
	mv dest/usr/share/tcltk/tcl8/*/* dest/usr/share/tcltk/$(OPK_SOURCE)
	rmdir dest/usr/share/tcltk/tcl8/* dest/usr/share/tcltk/tcl8
	# Rename tcl.pc.
	mv dest/usr/lib/$(OPK_HOST_ARCH)/pkgconfig/tcl.pc \
		dest/usr/lib/$(OPK_HOST_ARCH)/pkgconfig/$(OPK_SOURCE).pc
	# Install tcl.m4.
	mkdir -p dest/usr/share/aclocal
	cp src/unix/tcl.m4 dest/usr/share/aclocal/$(OPK_SOURCE).m4
	# Install private headers.
	for dir in generic unix compat libtommath; do \
		mkdir -p dest/usr/include/$(OPK_SOURCE)/tcl-private/$${dir}; \
		cp src/$${dir}/*.h \
			dest/usr/include/$(OPK_SOURCE)/tcl-private/$${dir}; \
	done
	# Rename tclsh.1.
	mv dest/usr/share/man/man1/tclsh.1 dest/usr/share/man/man1/tclsh$(V).1
	# TODO: Rename ".3" and ".n" manual pages to have a ".3tcl" extension.
	# This requires some thought about handling links.
	# Also change the .TH macros and cross references in the manual pages.
	oh-fixperms
	oh-strip
	oh-installfiles
	oh-shlibdeps