commit | author | age
|
36090d
|
1 |
# |
S |
2 |
# This file and its contents are supplied under the terms of the |
|
3 |
# Common Development and Distribution License ("CDDL"). You may |
|
4 |
# only use this file in accordance with the terms of the CDDL. |
|
5 |
# |
|
6 |
# A full copy of the text of the CDDL should have accompanied this |
|
7 |
# source. A copy of the CDDL is also available via the Internet at |
|
8 |
# http://www.illumos.org/license/CDDL. |
|
9 |
# |
|
10 |
|
|
11 |
# |
29f3bb
|
12 |
# Copyright 2020, 2021, 2022, 2023, 2024 David Stes |
36090d
|
13 |
# |
S |
14 |
|
|
15 |
|
|
16 |
# |
6dfd01
|
17 |
# Package Makefile for the "OpenSmalltalk" Squeak Smalltalk system |
36090d
|
18 |
# See http://squeak.org and http://opensmalltalk.org |
S |
19 |
# |
|
20 |
|
|
21 |
# opensmalltalk-vm can be built both in 32 and 64bit |
bf326b
|
22 |
# since december 2023 version 5.0.3339 we only deliver ELF64 bit executables |
DS |
23 |
# because the required 32bit libraries are no longer available |
d4bb1e
|
24 |
# |
DS |
25 |
# we deliver our own script squeak.ips as driver script |
|
26 |
# |
|
27 |
# the driver script checks (with ckformat) the Smalltalk image |
bf326b
|
28 |
# image format 6521 or 7033 : start VM 32bit (not included any longer) |
0b0bff
|
29 |
# image format 68021 or 68533 : start VM 64bit |
bf326b
|
30 |
BUILD_BITS=64 |
5fb446
|
31 |
USE_COMMON_TEST_MASTER= no |
bf326b
|
32 |
|
DS |
33 |
# the SSL module is supporting 1.1 and 3.x but SUnit testframework is not |
|
34 |
USE_OPENSSL10=yes |
36090d
|
35 |
|
8ba160
|
36 |
include ../../../../make-rules/shared-macros.mk |
36090d
|
37 |
|
5d055b
|
38 |
# there is no official triplet version for opensmalltalk-vm |
DS |
39 |
# we use 5.0.<n> for VMMaker.oscog-eem.<n> |
|
40 |
# sometimes the Stack VM is generated from a different VMMaker as the Cog VM |
|
41 |
|
6dfd01
|
42 |
COMPONENT_NAME= stack-spur |
679795
|
43 |
COMPONENT_VERSION= 5.0.3356 |
DS |
44 |
GIT_TAG= sun-v5.0.63 |
|
45 |
PLUGIN_REV= 5.0-202403301849 |
6dfd01
|
46 |
COMPONENT_SUMMARY= The OpenSmalltalk Stack Spur Virtual Machine |
36090d
|
47 |
COMPONENT_PROJECT_URL= http://www.squeak.org |
6dfd01
|
48 |
COMPONENT_FMRI= runtime/smalltalk/stack-spur |
DS |
49 |
COMPONENT_CLASSIFICATION= Development/Smalltalk |
36090d
|
50 |
|
S |
51 |
# See http://wiki.squeak.org/squeak/933 |
|
52 |
# See http://wiki.squeak.org/squeak/159 |
|
53 |
# there's 2 license lines in the manifest, the MIT squeak.license and this one |
|
54 |
COMPONENT_LICENSE= Squeak5 |
|
55 |
COMPONENT_LICENSE_FILE= squeak5.license |
|
56 |
|
|
57 |
COMPONENT_SRC= opensmalltalk-vm-$(GIT_TAG) |
|
58 |
COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz |
679795
|
59 |
COMPONENT_ARCHIVE_HASH= sha256:417eeb23cf33fab0e670903f406308ac49f227f15cf9e377a655d3ce402fb281 |
36090d
|
60 |
COMPONENT_ARCHIVE_URL= https://codeload.github.com/cstes/opensmalltalk-vm/tar.gz/$(GIT_TAG) |
S |
61 |
|
5fb446
|
62 |
# run SUnit tests in the build directories on 32bit and 64bit Squeak images |
65da75
|
63 |
# currently two tests are skipped : AllocationTest and BitmapStreamTests |
DS |
64 |
# see comments on those classes in the Squeak image itself for more info |
5fb446
|
65 |
COMPONENT_TEST_CMD= $(COMPONENT_TEST_RESULTS_DIR)/testrunner.sh $(BITS) $(COMPONENT_DIR) $(BUILD_DIR_$(BITS)) |
36090d
|
66 |
|
S |
67 |
include $(WS_MAKE_RULES)/common.mk |
|
68 |
|
bbb627
|
69 |
# problem with OpenSmalltalk libtool and /bin/bash |
DS |
70 |
# since upgrade from libtool VERSION="2.4.6 Debian-2.4.6-2" |
|
71 |
# to VERSION="2.4.6 Debian-2.4.6-9" |
|
72 |
CONFIG_SHELL= /bin/sh |
|
73 |
|
36090d
|
74 |
PKG_OPTIONS += -D PLUGIN_REV="$(PLUGIN_REV)" |
824b06
|
75 |
PKG_OPTIONS += -DBRANCHID="$(BRANCHID)" |
36090d
|
76 |
|
S |
77 |
PATH=$(PATH.gnu) |
|
78 |
|
|
79 |
# opensmalltalk configure script checks for plugins files in builddir |
d4bb1e
|
80 |
COMPONENT_PRE_CONFIGURE_ACTION = ( \ |
DS |
81 |
$(MKDIR) $(BUILD_DIR_32); \ |
|
82 |
cp plugins.ext plugins.int $(BUILD_DIR_32); \ |
|
83 |
$(MKDIR) $(BUILD_DIR_64); \ |
|
84 |
cp plugins.ext plugins.int $(BUILD_DIR_64) \ |
|
85 |
) |
|
86 |
|
|
87 |
# the Squeak configure script detects the lfcompile flags |
|
88 |
# but unfortunately I think some files do not #include "config.h" |
|
89 |
# we have to make sure largefile support is enabled in the 32bit case |
|
90 |
CPPFLAGS += $(CPP_LARGEFILES) |
36090d
|
91 |
|
b8b281
|
92 |
# Spur memory management sometimes not compatible with traditional malloc |
DS |
93 |
LIBS = "-lmapmalloc" |
|
94 |
|
36090d
|
95 |
# the default CFLAGS.gcc will be -m64 -O3 but this does not work for us |
S |
96 |
# opensmalltalk code is not compatible with the gcc optimizer -O2 or higher |
8a2cb9
|
97 |
gcc_OPT= -DAIO_DEBUG -DNDEBUG -DDEBUGVM=0 |
36090d
|
98 |
|
S |
99 |
CONFIGURE_SCRIPT= $(SOURCE_DIR)/platforms/unix/config/configure |
|
100 |
CONFIGURE_OPTIONS += --with-vmversion=5.0 |
|
101 |
CONFIGURE_OPTIONS += --disable-dynamicopenssl |
|
102 |
CONFIGURE_OPTIONS += --without-libtls |
106c94
|
103 |
CONFIGURE_OPTIONS.32 += --with-src=src/spur32.stack |
DS |
104 |
CONFIGURE_OPTIONS.64 += --with-src=src/spur64.stack |
36090d
|
105 |
CONFIGURE_OPTIONS += --disable-cogit |
S |
106 |
CONFIGURE_OPTIONS += --without-vm-display-fbdev |
|
107 |
CONFIGURE_OPTIONS += --without-npsqueak |
|
108 |
|
e3b04b
|
109 |
# epoll(5) seems to work, so use epoll instead of select(3c) |
DS |
110 |
CONFIGURE_ENV += ax_cv_have_epoll=yes |
|
111 |
CONFIGURE_ENV += ax_cv_have_epoll_pwait=yes |
d4bb1e
|
112 |
CONFIGURE_ENV += CPPFLAGS="$(CPPFLAGS)" |
b8b281
|
113 |
CONFIGURE_ENV += LIBS="$(LIBS)" |
d4bb1e
|
114 |
CONFIGURE_ENV.32 += TARGET_ARCH="-m32" |
DS |
115 |
CONFIGURE_ENV.64 += TARGET_ARCH="-m64" |
36090d
|
116 |
|
eb4105
|
117 |
# for pkgsend generate (sample-manifest) |
DS |
118 |
# the actual manifest uses a mediator mediated hardlink for the squeak manpage |
|
119 |
PKG_HARDLINKS += usr/share/man/man1/squeak.1 |
|
120 |
|
36090d
|
121 |
# the opensmalltalk Makefile does not use DESTDIR |
S |
122 |
COMPONENT_INSTALL_ARGS= ROOT=$(PROTO_DIR) |
f858c2
|
123 |
COMPONENT_BUILD_TARGETS= getversion squeak plugins ckformat |
DS |
124 |
COMPONENT_INSTALL_TARGETS= install-squeak install-doc install-plugins \ |
|
125 |
install-ckformat |
36090d
|
126 |
|
S |
127 |
# Makefile has no strip target |
|
128 |
COMPONENT_POST_INSTALL_ACTION = \ |
d4bb1e
|
129 |
( find $(PROTOUSRLIBDIR) -name 'squeak' -type f -exec strip {} \; ) |
36090d
|
130 |
|
70a497
|
131 |
# |
DS |
132 |
# target to update the manifests from sample-manifest |
|
133 |
# |
|
134 |
|
|
135 |
rebuild-manifests:: |
6dfd01
|
136 |
cp manifests/stack-spur.p5m stack-spur.p5m |
8a2cb9
|
137 |
cp manifests/stack-spur-ssl.p5m stack-spur-ssl.p5m |
1bf154
|
138 |
cp manifests/stack-spur-vep.p5m stack-spur-vep.p5m |
6dfd01
|
139 |
cp manifests/stack-spur-display-X11.p5m stack-spur-display-X11.p5m |
DS |
140 |
cp manifests/stack-spur-nodisplay.p5m stack-spur-nodisplay.p5m |
70a497
|
141 |
cp manifests/sample-manifest.p5m sample-manifest.p5m |
DS |
142 |
tools/pluginrev.sh $(PLUGIN_REV) <sample-manifest.p5m >sample.p5m |
|
143 |
tools/classify.pl <sample.p5m |
|
144 |
rm -f sample-manifest.p5m sample.p5m |
|
145 |
|
36090d
|
146 |
REQUIRED_PACKAGES += x11/library/mesa |
S |
147 |
REQUIRED_PACKAGES += system/library/dbus |
|
148 |
REQUIRED_PACKAGES += library/audio/gstreamer |
|
149 |
REQUIRED_PACKAGES += library/libffi |
|
150 |
REQUIRED_PACKAGES += system/library/freetype-2 |
|
151 |
|
|
152 |
# Auto-generated dependencies |
|
153 |
REQUIRED_PACKAGES += library/audio/pulseaudio |
|
154 |
REQUIRED_PACKAGES += library/desktop/cairo |
|
155 |
REQUIRED_PACKAGES += library/desktop/pango |
|
156 |
REQUIRED_PACKAGES += library/glib2 |
|
157 |
REQUIRED_PACKAGES += library/security/openssl |
08ca4a
|
158 |
REQUIRED_PACKAGES += shell/ksh93 |
36090d
|
159 |
REQUIRED_PACKAGES += system/library |
S |
160 |
REQUIRED_PACKAGES += system/library/math |
|
161 |
REQUIRED_PACKAGES += x11/library/libx11 |
08ca4a
|
162 |
REQUIRED_PACKAGES += x11/library/libxext |
36090d
|
163 |
REQUIRED_PACKAGES += x11/library/libxrender |