This is a huge port. It probably should be split into several separate ports, but Modula-3's lack of popularity doesn't justify the large effort that would require yet. This port will download a "bootstrap" compiler which builds a fresh compiler and small set of core components. The fresh compiler will then build everything else. This includes, among other things: * CM3 Integrated Development Environment (IDE) * CM3 Code Generator based on gcc 4.3 * CM3 Middle- and back- ends * CVSup (CM3 is too new to build the CVSUP already in ports) * M3 GDB (GNU Debugger) * M3 GUI and networking support * M3 Quake * some demos * many examples * many CM3 tools * Oblique * Caltech Parser toolset * Full M3 library * Lots of documentation and man pages Intentionally left out for now: six (6) games, three (3) webdev progs, kate (gui), sgml+deepcopy (devlib), pp (m3devtool) This is the latest release of the Critical Mass Modula-3 (CM3) collection, version 5.8.6, and it was released in July 2010. Days were spent developing this port, but not so much time was developed to quality assurance. I added a "recent" patch from upstream for network concurrency and also modified the getaddrbyname implementation as the original one raised IPError exceptions due to my VM not having a fully qualified hostname and external IP address. My modification makes the exception look up hostent with 127.0.0.1 first, then raise a new exception on error. It seems to work, but like I said, it was not heavily tested. Most of the programs require a running X (Trestle), which I don't have at the moment, so they stop with an appropriate raised exception. I only assume they work, I'll have to check later. Right now only FreeBSD AMD64 is supported. I do not expect to attempt to support FreeBSD i386. I will probably make an attempt to cross-compile this on DragonFly x86-64 after appropriate patches are added. A few months ago I nearly succeeded in porting CM3 to DragonFly and I expect to succeed on the next attempt. If other platforms are desired, somebody else will have to create bootstraps and any necessary patches. This was built and poudriere-tested on FreeBSD 9.2. Only libc, libm, and libpthread are dynamically loaded so it should build fine on FreeBSD 8.4. I don't have access to my Redports repository ATM so I can't test FreeBSD 10+, but I will attempt to fix should it fail to build on those platforms. Hopefully someone will find this port useful. I was surprised that apparently the full Modula-3 compiler set has never been ported to FreeBSD, only the ezm3 version needed to build cvsup. Modula-3 is a nice language that probably deserved to be widely used outside of academia.
35 lines
1.7 KiB
Text
35 lines
1.7 KiB
Text
--- m3-sys/m3cc/gcc/configure.orig 2008-04-14 04:36:00.000000000 +0000
|
|
+++ m3-sys/m3cc/gcc/configure
|
|
@@ -2147,10 +2147,6 @@ case "${target}" in
|
|
;;
|
|
*-*-freebsd*)
|
|
noconfigdirs="$noconfigdirs target-newlib target-libgloss"
|
|
- if test "x$with_gmp" = x && test "x$with_gmp_dir" = x \
|
|
- && test -f /usr/local/include/gmp.h; then
|
|
- with_gmp=/usr/local
|
|
- fi
|
|
|
|
# Skip some stuff that's unsupported on some FreeBSD configurations.
|
|
case "${target}" in
|
|
@@ -4415,8 +4411,8 @@ if test "x$with_mpfr_lib" != x; then
|
|
gmplibs="-L$with_mpfr_lib $gmplibs"
|
|
fi
|
|
if test "x$with_mpfr$with_mpfr_include$with_mpfr_lib" = x && test -d ${srcdir}/mpfr; then
|
|
- gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/.libs -L$$r/$(HOST_SUBDIR)/mpfr/_libs '"$gmplibs"
|
|
- gmpinc='-I$$r/$(HOST_SUBDIR)/mpfr -I$$s/mpfr '"$gmpinc"
|
|
+ gmplibs='-L$$r/$(HOST_SUBDIR)/mpfr/.libs '"$gmplibs"
|
|
+ gmpinc='-I$$s/mpfr '"$gmpinc"
|
|
# Do not test the mpfr version. Assume that it is sufficient, since
|
|
# it is in the source tree, and the library has not been built yet
|
|
# but it would be included on the link line in the version check below
|
|
@@ -4467,8 +4463,8 @@ if test "x$with_gmp_lib" != x; then
|
|
gmplibs="-L$with_gmp_lib $gmplibs"
|
|
fi
|
|
if test "x$with_gmp$with_gmp_include$with_gmp_lib" = x && test -d ${srcdir}/gmp; then
|
|
- gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/.libs -L$$r/$(HOST_SUBDIR)/gmp/_libs '"$gmplibs"
|
|
- gmpinc='-I$$r/$(HOST_SUBDIR)/gmp -I$$s/gmp '"$gmpinc"
|
|
+ gmplibs='-L$$r/$(HOST_SUBDIR)/gmp/.libs '"$gmplibs"
|
|
+ gmpinc='-I$$r/$(HOST_SUBDIR)/gmp '"$gmpinc"
|
|
# Do not test the gmp version. Assume that it is sufficient, since
|
|
# it is in the source tree, and the library has not been built yet
|
|
# but it would be included on the link line in the version check below
|