diff options
author | Mike Frysinger <vapier@gentoo.org> | 2003-04-17 16:10:51 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2003-04-17 16:10:51 +0000 |
commit | 1ab86aa5e3c86f0b3a6dd14632baa934b733277b (patch) | |
tree | 2dfa74a623f950636161ed6970b559995f9440ab /dev-lang/cm3 | |
parent | Added hppa to KEYWORDS. (diff) | |
download | historical-1ab86aa5e3c86f0b3a6dd14632baa934b733277b.tar.gz historical-1ab86aa5e3c86f0b3a6dd14632baa934b733277b.tar.bz2 historical-1ab86aa5e3c86f0b3a6dd14632baa934b733277b.zip |
initial import
Diffstat (limited to 'dev-lang/cm3')
-rw-r--r-- | dev-lang/cm3/ChangeLog | 9 | ||||
-rw-r--r-- | dev-lang/cm3/cm3-5.2.4.ebuild | 71 | ||||
-rw-r--r-- | dev-lang/cm3/files/cm3.cfg | 351 | ||||
-rw-r--r-- | dev-lang/cm3/files/digest-cm3-5.2.4 | 2 |
4 files changed, 433 insertions, 0 deletions
diff --git a/dev-lang/cm3/ChangeLog b/dev-lang/cm3/ChangeLog new file mode 100644 index 000000000000..8ae5866ba1b3 --- /dev/null +++ b/dev-lang/cm3/ChangeLog @@ -0,0 +1,9 @@ +# ChangeLog for dev-lang/cm3 +# Copyright 2000-2003 Gentoo Technologies, Inc.; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/cm3/ChangeLog,v 1.1 2003/04/17 16:10:51 vapier Exp $ + +*cm3-5.2.4 (17 Apr 2003) + + 17 Apr 2003; Mike Frysinger <vapier@gentoo.org> : + Initial import. Ebuild submitted by me. + It is incomplete though ... i dont use m3, i cant really test it ;) diff --git a/dev-lang/cm3/cm3-5.2.4.ebuild b/dev-lang/cm3/cm3-5.2.4.ebuild new file mode 100644 index 000000000000..db65ad355723 --- /dev/null +++ b/dev-lang/cm3/cm3-5.2.4.ebuild @@ -0,0 +1,71 @@ +# Copyright 1999-2003 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/dev-lang/cm3/cm3-5.2.4.ebuild,v 1.1 2003/04/17 16:10:51 vapier Exp $ + +M3_TARGET="LINUXLIBC6" +MY_P="${PN}-src-all-${PV}" +DESCRIPTION="Modula-3 compiler" +HOMEPAGE="http://www.elegosoft.com/cm3/" +SRC_URI="http://www.elegosoft.com/cm3/${MY_P}.tgz + http://www.elegosoft.com/cm3/cm3-min-POSIX-${M3_TARGET}-${PV}.tgz" + +LICENSE="CMASS-M3 DEC-M3" +SLOT="0" +KEYWORDS="~x86" +IUSE="tcltk" + +DEPEND="tcltk? ( dev-lang/tcl ) + sys-devel/gcc" + +S=${WORKDIR} + +export cm3base=${T}/cm3base/ +export PATH="${PATH}:${cm3base}/bin" +export LD_LIBRARY_PATH="${LD_LIBRARY_PATH} ${cm3base}/lib" + +src_unpack() { + unpack ${A} + + mkdir ${cm3base} + tar -zxf system.tgz -C ${cm3base} || die + + [ -z "${EDITOR}" ] && export EDITOR=/usr/bin/nano + [ -z "${CC}" ] && export CC=gcc + [ -z "${CFLAGS}" ] && export CFLAGS="-O" + [ -z "${MAKE}" ] && export MAKE=make + sed -e "s:GENTOO_INITIAL_REACTOR_EDITOR:${EDITOR}:" \ + -e "s:GENTOO_INSTALL_ROOT:${cm3base}:" \ + -e "s:GENTOO_GNU_CC:${CC}:" \ + -e "s:GENTOO_GNU_CFLAGS:${CFLAGS}:" \ + -e "s:GENTOO_GNU_MAKE:${MAKE}:" \ + ${FILESDIR}/cm3.cfg > ${cm3base}/bin/cm3.cfg +} + +src_compile() { + # we have to set ROOT/P ... they mess up the build scripts + # if we dont :/ + export GCC_BACKEND="yes" + export M3GDB="no" + unset M3GC_SIMPLE + export HAVE_SERIAL="no" + use tcltk \ + && HAVE_TCL="yes" \ + || HAVE_TCL="no" + + export TMPDIR=${T} + cd scripts + for s in do-cm3-core boot-cm3-with-m3 do-cm3-base ; do + env -u P ROOT=${S} ./${s}.sh build || die "failed on ${s}" + env -u P ROOT=${S} ./${s}.sh ship || die "failed on ${s}" + done +} + +src_install() { + # i know this is wrong but hey, thats why this is in package.mask ;) + for d in ${cm3base}/pkg/* ; do + rm -rf ${d}/src/* + mv ${d}/${M3_TARGET}/* ${d}/ + done + dodir /usr/lib/cm3 + mv ${cm3base}/pkg ${D}/usr/lib/cm3/ +} diff --git a/dev-lang/cm3/files/cm3.cfg b/dev-lang/cm3/files/cm3.cfg new file mode 100644 index 000000000000..bbe323e51431 --- /dev/null +++ b/dev-lang/cm3/files/cm3.cfg @@ -0,0 +1,351 @@ +% Copyright 1996 Critical Mass, Inc. All rights reserved. +% +% Standard configuration file for LINUX with ELF object files +% + +%-------------------------------------------------- compilation environment --- + +%M3_PROFILING = TRUE % set by cm3 since 5.1.2 (option -profile) +%M3_PROFILING = FALSE + +readonly TARGET = "LINUXLIBC6" % code generation target +if M3_PROFILING + readonly BUILD_DIR = TARGET & "p" % code generation target +else + readonly BUILD_DIR = TARGET % directory for results +end +readonly OS_TYPE = "POSIX" % { "WIN32" or "POSIX" } +readonly WORD_SIZE = "32BITS" % { "32BITS" or "64BITS" } +readonly GNU_PLATFORM = "i486--linuxelf" % "cpu-vendor-os" string for GNU +%readonly INSTALL_KEY = BEGIN_CONFIG +% "What is your installation key?" +% 14 %-- user specified key +%END_CONFIG + +readonly NAMING_CONVENTIONS = "0" +% object files libraries +% 0=Unix => .o .io .mo libXX.a +% 1=Unix with a grumpy C compiler => .o _i.o _m.o libXX.a +% 2=Windows NT or Windows 95 => .obj .io .mo XX.lib +% + +%-------------------------------------------------- default compile options --- +% "set_config_options" is called before starting the compilation. It should +% be used to provide system-wide default options. + +proc set_config_options () is + m3_option ("-why") %-- produce a listing that explains what's happening and why + m3_debug (TRUE) %-- produce object code with debugging symbols + M3_OPTIONS += "-w1" %-- produce "level 1" warnings +end + +%--------------------------------------------------------- Reactor defaults --- +% The first time a user runs Reactor, it will configure itself to use +% the executables defined below. + +%INITIAL_REACTOR_BROWSER = BEGIN_CONFIG +% "What should be the default World-Wide Web browser for new Reactor users?" +% 0 "netscape" +% 6 "/usr/local/bin" "netscape" +% 6 "/usr/local/netscape/bin" "netscape" +% 6 "/usr/local/netscape/bin" "netscape-3" +% 6 "/usr/local/netscape/bin" "netscape-2" +% 6 "/usr/local/netscape" "netscape" +% 6 "/usr/local/mosaic" "mosaic" +% 6 "/usr/local/moasic" "Xmosaic" +%END_CONFIG +% A World-Wide Web browser. Reactor passes it an initial URL +% its first command-line argument. + +INITIAL_REACTOR_EDITOR = "GENTOO_INITIAL_REACTOR_EDITOR" +% A text editor. Reactor passes it "<file> +<line>" on the +% command-line when it wants to edit <file> initially positioned +% at <line>. + +%------------------------------------------------------------- export paths --- +% During the installation, destination directories that do not exists +% will be created. You need the necessary permissions to do so; otherwise, +% the installation will fail, but can be restarted after you have +% fixed the permissions. + +INSTALL_ROOT = "GENTOO_INSTALL_ROOT" + +BIN_INSTALL = INSTALL_ROOT & "/bin" % executables +if M3_PROFILING + LIB_INSTALL = INSTALL_ROOT & "/libp" % libraries +else + LIB_INSTALL = INSTALL_ROOT & "/lib" % libraries +end +PKG_INSTALL = INSTALL_ROOT & "/pkg" % packages +DOC_INSTALL = INSTALL_ROOT & "/doc" % documents +EMACS_INSTALL = INSTALL_ROOT & "/elisp" % emacs lisp code +MAN_INSTALL = INSTALL_ROOT & "/man" % man pages +HTML_INSTALL = INSTALL_ROOT & "/www" % public hypertext + +% On some systems (e.g. AFS) you must install public files in a different +% place from where you use them. If that is the case for your system, +% specify the "use" location here, otherwise leave them alone. +% +USE_ROOT = INSTALL_ROOT +BIN_USE = BIN_INSTALL % executables +LIB_USE = LIB_INSTALL % libraries +PKG_USE = PKG_INSTALL % packages + +readonly INSTALL_IMPLS = TRUE +% TRUE +% => save all source files during the install +% => makes debugging easier and browsing more fruitful +% FALSE +% => save only the exported interfaces and templates +% => makes the installed system slightly smaller. + +%------------------------------------------------ external system libraries --- +% SYSTEM_LIBS provides a mapping from Modula-3 names for the common +% external libraries to site-dependent information about how they +% are accessed. If SYSTEM_LIBS{x} is defined it should be a list +% of linker arguments that are used when linking against that library. +% If SYSTEM_LIBS{x} is not defined, the Modula-3 system will assume +% that the library is not available. + +SYSTEM_LIBS = { + "LIBC" : [ "-lm" ], +%-- not on most Linux platforms +% "LEX-YACC" : [ BEGIN_CONFIG +% "Where are the lex/yacc libraries?" +% 11 "libl.a" +% 12 "/usr/lib" +% 12 "/usr/local/lib" +% 12 "/usr/local/gnu/lib" +% 13 "/usr/lib" +% END_CONFIG, "-ll" ], + "FLEX-BISON" : [ "-L/usr/lib", "-lfl" ], +% "POSTGRES95" : [ BEGIN_CONFIG +% "OPENGL" : [ BEGIN_CONFIG +% "ODBC" : [ BEGIN_CONFIG +% "MOTIF" : [ BEGIN_CONFIG +% "X11" : [ BEGIN_CONFIG + "TCP" : [ ] +} + +% SYSTEM_LIBORDER defines the order in which SYSTEM_LIBS should be +% scanned by the linker. + +SYSTEM_LIBORDER = [ "OPENGL", "DECPEX", "MOTIF", "X11", "TCP", "ODBC", + "POSTGRES95", "FLEX-BISON", "LEX-YACC", "LIBC" ] + +%---------------------------------------------------------- system programs --- + +readonly SYSTEM_CC = "/usr/bin/gcc" % C compiler +readonly SYSTEM_AR = "/usr/bin/ar" % Archiver +readonly SYSTEM_ASM = "/usr/bin/as" % Assembler + +%--------------------------------------------------------- Modula-3 backend --- +% For platforms without an integrated backend, "m3_backend" is called to +% translate Modula-3 intermediate code to object code. + +readonly m3back = "@" & BIN_USE & "/cm3cg" + +proc m3_backend (source, object, optimize, debug) is + local args = [ "-quiet", source, "-o", object ] + if optimize args += "-O" end + if debug args += "-g" end + if M3_PROFILING args += "-p" end + return try_exec (m3back, args) +end + +M3_BACKEND_MODE = "3" +% -- defines how the frontend, backend, and assembler interact +% "0" -- don't call m3_backend, M3CG produces object code +% "1" -- don't call m3_backend, M3CG produces assembly code +% "2" -- call m3_backend, it produces object code +% "3" -- call m3_backend, it produces assembly code + +%--------------------------------------------------------------- C compiler --- +% "compile_c" is called to compile C source files. Note that this function +% is only called if your program or library explicitly includes C source +% code, the system distributed by Critical Mass does not. + +proc compile_c (source, object, options, optimize, debug) is + local args = [ "-fPIC", options ] + if optimize args += "-O" end + if debug args += "-g" end + if M3_PROFILING args += "-pg" end + return try_exec ("@" & SYSTEM_CC, args, "-c", source) +end + +%---------------------------------------------------------------- assembler --- +% "assemble" is called to assemble .s or .asm files. Note that this function +% is only called if your program or library explicitly includes assembly source +% code, the system distributed by Critical Mass does not. + +proc assemble (source, object) is + return try_exec ("@" & SYSTEM_ASM, source, "-o", object) +end + +%--------------------------------------------------------- library creation --- +% "make_lib" is called to combine a collection of object modules into +% a library. + +GCWRAPFLAGS = "-Wl,--wrap,adjtime,--wrap,getdirentries,--wrap,readv,--wrap,utimes,--wrap,wait3" + +proc make_lib (lib, options, objects, imported_libs, shared) is + local ret_code = 0 + local lib_a = format ("lib%s.a", lib) + local lib_so = format ("lib%s.so", lib) + local lib_sox = format ("lib%s.so.5", lib) + + % first, build the non-shared library + ret_code = try_exec ("@/usr/bin/ar", "crus", lib_a, objects) + if not equal (ret_code, 0) return ret_code end + + if shared + % build the shared library + if M3_PROFILING + ret_code = try_exec ("@" & SYSTEM_CC, "-pg -shared " & GCWRAPFLAGS & + "-Wl,-soname," & lib_sox, + "-o", lib_sox, objects) + else + ret_code = try_exec ("@" & SYSTEM_CC, "-shared " & GCWRAPFLAGS & + "-Wl,-soname," & lib_sox, + "-o", lib_sox, objects) + end + if not equal (ret_code, 0) return ret_code end + + % create the version aliases + link_file(lib_sox, lib_so) + + % finally, make sure the shared library stuff gets installed properly + install_derived (lib_sox) + install_derived_link (lib_sox, lib_so) + install_link_to_derived (lib_sox, LIB_INSTALL) + install_link_to_derived (lib_so, LIB_INSTALL) + else + delete_file (lib_so) + delete_file (lib_sox) + end + + return 0 +end + +%------------------------------------------------------------------- +% "skip_lib" is called when the compiler decides it doesn't need to +% call "make_lib", but it wants to discover the names of the derived +% files that should be deleted or shipped. + +proc skip_lib (lib, shared) is + local lib_so = format ("lib%s.so", lib) + local lib_sox = format ("lib%s.so.5", lib) + + if shared + % make sure the shared library stuff gets installed properly + install_derived (lib_sox) + install_derived (lib_so) + install_link_to_derived (lib_sox, LIB_INSTALL) + install_link_to_derived (lib_so, LIB_INSTALL) + else + delete_file (lib_so) + delete_file (lib_sox) + end + + return 0 +end + +%------------------------------------------------------------------- linker --- +% "m3_link" is called to produce a final executable. +%--- "-pdb:none" enables the use of windbg with the resulting executable. + +proc m3_link (prog, options, objects, imported_libs, shared) is + local args = [] + if M3_PROFILING args += "-pg" end + args += [ "-o", prog, options, objects, imported_libs ] + if shared + return try_exec ("@" & SYSTEM_CC, args, GCWRAPFLAGS) + else + return try_exec ("@" & SYSTEM_CC, "-static", args, GCWRAPFLAGS) + %%% -- see M3_NEED_STANDALONE_LINKS below + %%%return try_exec ("@" & SYSTEM_CC, args) + end +end + +%------------------------------------------------------------------- +% "skip_link" is called when the compiler decides it doesn't need to +% call "m3_link", but it wants to discover the names of the derived +% files that should be deleted or shipped. + +proc skip_link (prog, shared) is + return 0 +end + +%------------------------------------------------------------ misc. options --- +% Note, most of these options can be set from the command line. Otherwise, +% they can be set "permanently" here in the config file or in as needed +% in user's m3makefiles. + +M3_FRONT_FLAGS = [ ] +% --- internal configuration options passed directly to the Modula-3 front-end + +M3_OPTIONS = [ ] +% --- user options passed directly to the Modula-3 front-end + +% M3_KEEP_FILES = TRUE +% --- keep intermediate and temporary files + +M3_WINDOWS_GUI = FALSE +% --- generate a Windows GUI subsystem program instead of a console one. + +% M3_COVERAGE = TRUE +% --- compile & link with coverage options + +M3_COVERAGE_LIB = LIB_USE & "/report_coverage.o" +% --- library linked in programs compiled with "-Z" coverage option + +M3_SPLIT_LIBNAMES = TRUE +% --- split library names and pass -L/-l arguments to the linker + +M3_SHARED_LIB_ARG = "-Wl,-R" +% --- pass "-R" flags to the linker too... + +% M3_BOOTSTRAP = TRUE +% --- generate bootstrap code (assembly) instead of finaly object code + +% M3_COMPILE_ONCE = TRUE +% --- don't recompile code to improve opaque object references + +% SYS_HAS_LOADER = TRUE +% --- generate a loader info file with objects, libraries and timestamps + +% M3_SKIP_LINK = TRUE +% --- skip the final link for programs, presumably to use the loader instead + +% M3_MAIN_IN_C = TRUE +% --- generate the Modula-3 main program as C code + +% X11_WITH_SHARED_MEM = TRUE +% --- X11 libraries include the shared memory extensions (XShm...) + +%M3_NEED_STANDALONE_LINKS = TRUE +% --- linker is broken and we need to build a directory of symbolic +% links pointing to the non-shared libraries. + +%-------------------------------------------------------------------- emacs --- +% If you have emacs and want to compile ".el" files to ".elc" files, +% fill in the function below. Otherwise, comment out or delete the +% entire function. Note, the distributed code assumes gnuemacs version 19 +% or later. + +%readonly proc emacs_compile (el) is +% exec ("emacs -batch -f batch-byte-compile", el) +%end + +%------------------------------------------------------------- GNU variants --- +% The two large pieces of GNU software used by the Modula-3 system +% gcc(=m3cc) and gdb(=m3gdb) often require slightly different C compilers +% or flags. They are specified here. Note that they may be overridden +% from the m3build command line. +% +% To use the GNU defaults for CC and CFLAGS, specify "*". +% + +GNU_CC = "GENTOO_GNU_CC" +GNU_CFLAGS = "GENTOO_GNU_CFLAGS" +GNU_MAKE = "GENTOO_GNU_MAKE" diff --git a/dev-lang/cm3/files/digest-cm3-5.2.4 b/dev-lang/cm3/files/digest-cm3-5.2.4 new file mode 100644 index 000000000000..2f60b9208c4c --- /dev/null +++ b/dev-lang/cm3/files/digest-cm3-5.2.4 @@ -0,0 +1,2 @@ +MD5 d7ce529bc6bffc87ade367c7c0d79256 cm3-src-all-5.2.4.tgz 30315840 +MD5 baef2b13cba93f1f75bf9da18e2094aa cm3-min-POSIX-LINUXLIBC6-5.2.4.tgz 5526437 |