----------------->  GNU Sather - compiler configuration file  <----------------
-- Copyright (C) 199x by International Computer Science Institute            --
-- Copyright (C) 2000 by Univerity of Waikato                                --
-- This file is part of the GNU Sather library. It is free software; you may --
-- redistribute  and/or modify it under the terms of the GNU Library General --
-- Public  License (LGPL)  as published  by the  Free  Software  Foundation; --
-- either version 2 of the license, or (at your option) any later version.   --
-- This  library  is distributed  in the  hope that it will  be  useful, but --
-- WITHOUT ANY WARRANTY without even the implied warranty of MERCHANTABILITY --
-- or FITNESS FOR A PARTICULAR PURPOSE. See Doc/LGPL for more details.       --
-- The license text is also available from:  Free Software Foundation, Inc., --
-- 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA                     --
-------------->  Please email comments to <bug-sather@gnu.org>  <--------------

-- Configuration File for the Sather Compiler
-- some options for the compiler (see the runtime spec
-- for a detailed description of them).


PLATFORMS:		CONFIG_PLATFORMS;
DEFAULT_PLATFORM:	CONFIG_DEFAULT_PLATFORM;
DISTRIBUTED:		false;
THREADS:		false;
ZONES:			false;
TRACE:			false;
LIBRARY:		"SATHER_LIBRARY","lib/lib.module";
SYSTEM_HEADER:		"lib/Required/SatherRT/header.h";
FORBID_DEFINITIONS:	"system/FORBID";
VERSION:		CONFIG_VERSION;
C_COMPILER:		"gcc";
CC_OPTIONS:		"";
GC_LINK:		"-lgc";
LINK_OPTIONS:		"-lm";
MAKE_COMMAND:		"make";
OBJECT_EXT:		".o";
LIB_EXT:		".a";
C_EXT:			".c";
SHELL_SEP:		"; ";
EXEC_OPTION:		"-o ";
NULL_SEGFAULTS:		false;
SEPARATE_POINTERS:	false;
PSATHER_FLAG:		"","";
CC_DEBUG_FLAG:		"","-g";
--   CC_OPTIMIZE_FLAG:	"","-O2";    -- until gcc optimiser bug fixed!
CC_OPTIMIZE_FLAG:	"","-O";
CC_PROLIX_FLAG:		"",""; -- passed to the C compiler (prolix implies verbose)
MAKE_VERBOSE_FLAG:	"-s","-s"; -- passed to make

FORTRAN_APPEND_UNDERSCORE:	"false";
FORTRAN_PREFIX_UNDERSCORE:	"false";
FORTRAN_BIND_FUNC:		"true";

-- Define here all classes if their assignment is guaranteed to
-- be atomic (by the underlying Compiler/Hardware). Those classes may NOT
-- have a reference object as attribute, but the list is not restricted
-- to builtin classes. If you add a class here that is not atomic,
-- you will get very hard to trace bugs, and if you forget to add
-- some classes, your program runs slower. Note that you should not
-- try to add classes by trial and error, as an error may show up
-- only much too late.

ATOMIC_MAX_SIZE:		32;
SPECIAL_ATOMIC_CLASSES:		"BIT", "BOOL", "REFERENCE";

-- List here all classes whose layout is defined in runtime.h (or
-- some other header file)
BUILTIN_CLASSES:	"BIT", "CARD", "FIELD", "OCTET", "HEXTET", "QUADBITS",
			"REFERENCE", "OS_FILESYS", "OS_SYS", "SATHER_ENGINE",
			"ANGLE", "ANGLED",

			"$OB","INT","CHAR","BOOL","STR",
			"FLT","FLTD",
			"FLTX","FLTDX", "EXT_OB",
			"THREAD_ID","PREFETCH","LL_LOCK","SPINLOCK","SEMA",

			"F_INTEGER", "F_REAL", "F_CHARACTER", "F_LOGICAL",
			"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
			"F_STRING", "F_HANDLER",

			"F_ARRAY{F_INTEGER}", "F_ARRAY{F_REAL}",
			"F_ARRAY{F_CHARACTER}", "F_ARRAY{F_LOGICAL}",
			"F_ARRAY{F_DOUBLE}", "F_ARRAY{F_COMPLEX}",
			"F_ARRAY{F_DOUBLE_COMPLEX}",

			"F_ARRAY2{F_INTEGER}", "F_ARRAY2{F_REAL}",
			"F_ARRAY2{F_CHARACTER}", "F_ARRAY2{F_LOGICAL}",
			"F_ARRAY2{F_DOUBLE}", "F_ARRAY2{F_COMPLEX}",
			"F_ARRAY2{F_DOUBLE_COMPLEX}",

			"F_ARRAY3{F_INTEGER}", "F_ARRAY3{F_REAL}",
			"F_ARRAY3{F_CHARACTER}", "F_ARRAY3{F_LOGICAL}",
			"F_ARRAY3{F_DOUBLE}", "F_ARRAY3{F_COMPLEX}",
			"F_ARRAY3{F_DOUBLE_COMPLEX}",

			C_CHAR, C_UNSIGNED_CHAR, C_SIGNED_CHAR, C_SHORT,
			C_INT, C_LONG, C_UNSIGNED_SHORT, C_UNSIGNED_INT,
			C_UNSIGNED_LONG, C_FLOAT, C_DOUBLE, C_LONG_DOUBLE,
			C_PTR, C_CHAR_PTR, C_UNSIGNED_CHAR_PTR,
			C_SIGNED_CHAR_PTR, C_SHORT_PTR, C_INT_PTR, C_LONG_PTR,
			C_UNSIGNED_SHORT_PTR, C_UNSIGNED_INT_PTR,
			C_UNSIGNED_LONG_PTR, C_FLOAT_PTR, C_DOUBLE_PTR,
			C_LONG_DOUBLE_PTR, C_SIZE_T, C_PTRDIFF_T;


-- Here you should list all the builtin classes that are reference free,
-- that is, they do not have an attribute of an abstract or reference type
REFERENCE_FREE:		"BIT","CARD","FIELD",
			"OCTET", "HEXTET", "QUADBITS",
			"ANGLE","ANGLED",
			"FLTX","FLTDX",
			"INT","CHAR","BOOL","STR","FLT","FLTD",
			"F_INTEGER","F_REAL", "F_CHARACTER","F_LOGICAL",
			"F_DOUBLE", "F_COMPLEX", "F_DOUBLE_COMPLEX",
			"THREAD_ID","PREFETCH";

POLLING:		0;

-- (JN) parallel clases within the library that should not be included in dynamic
-- dispatch implmentations in the program being compiled is not a psather program
PARALLEL_CLASSES:	"$LOCK", "$ATTACH", "$ATTACH_SYNC", "LOCK_KINDS",
			"LOCK_INCL",

			"PREFETCH", "ATTACH_INCL",
			"ATTACH PAR_ATTACH PAR_ATTACH_NO_THREAD",

			"$BARRIER_LOCK", "DOOR_LOCK_HELPER", "DOOR_LOCK",
			"$COND_LOCK COND_LOCK", "CONDITIONAL_LOCK", "CONTAINER_LOCK",

			"FMUTEX FMUTEX_SPIN", "FUTURE", "GATE", "LL_LOCK",

			"$MUTEX", "MUTEX_STATES", "MUTEX_INCL", "QMUTEX",
			"MUTEX", "SMUTEX", "CMUTEX",

			"THREAD_ID",

			"RENDEZVOUS", "RENDEZVOUS_LOCK",
			"$READER_LOCK", "$WRITER_LOCK", "$RW_LOCK", "$RW_WRITER",
			"RW_READER", "FRW_WRITER", "FRW_LOCK", "FWR_LOCK",
			"WR_WRITER", "WR_LOCK", "RW_WRITER", "RW_LOCK",

			"SEMA",
			"SPINLOCK",
			"TIMING",
			"$REENTRANT", "VISTOR_MUTATOR",
			"ZONE", "ZONE_EXPR" ;

#include "../lib/Library.config"
