David Stes
2024-03-31 679795231669674a8d2d54ff79a3d4f42d6ab343
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