diff --git a/src/arith/native.c b/src/arith/native.c index 1283f57..7b4f4b0 100644 --- a/src/arith/native.c +++ b/src/arith/native.c @@ -1226,12 +1226,14 @@ ar_log (ar_data *result, const AR_TYPE *resulttype, *(double_t *) result = (log) (*(double_t *) opnd); return AR_status((AR_DATA*)result, resulttype); } +#ifndef __FreeBSD__ #ifdef complex_t if (*resulttype == native_complex) { *(complex_t *) result = (clog) (*(complex_t *) opnd); return AR_status((AR_DATA*)result, resulttype); } #endif +#endif /* The operation is not a native library operation. * Convert, approximate with native arithmetic, and convert back. @@ -1276,10 +1278,14 @@ ar_exp (ar_data *result, const AR_TYPE *resulttype, return AR_status((AR_DATA*)result, resulttype); } #ifdef complex_t +#ifndef __FreeBSD__ if (*resulttype == native_complex) { *(complex_t *) result = (cexp) (*(complex_t *) opnd); return AR_status((AR_DATA*)result, resulttype); } +#else + return AR_STAT_INVALID_TYPE; +#endif #endif /* The operation is not a native library operation. @@ -1381,6 +1387,7 @@ ar_power(ar_data *result, const AR_TYPE *resulttype, static int loopchk = 0; #ifdef complex_t +#ifndef __FreeBSD__ if (*basetype == native_complex || *powertype == native_complex) { if (*resulttype != native_complex) return AR_STAT_INVALID_TYPE; @@ -1407,6 +1414,9 @@ ar_power(ar_data *result, const AR_TYPE *resulttype, return AR_status((AR_DATA*)result, resulttype); } +#else + return AR_STAT_INVALID_TYPE; +#endif #endif if (*basetype == native_double || diff --git a/src/crayf90/fe90/fecif.c b/src/crayf90/fe90/fecif.c index dfdb47b..890bd3b 100644 --- a/src/crayf90/fe90/fecif.c +++ b/src/crayf90/fe90/fecif.c @@ -79,7 +79,9 @@ static char USMID[] = "\n@(#)5.0_pl/sources/fecif.c 5.9 10/14/99 12:53:57\n"; # include "fecif.h" # if defined(_HOST_OS_LINUX) +#if 0 # include +#endif # elif defined(_HOST_OS_SOLARIS) || defined(_HOST_OS_IRIX) # include # elif defined(_HOST_OS_DARWIN) diff --git a/src/crayf90/fe90/i_cvrt.c b/src/crayf90/fe90/i_cvrt.c index b31ee5e..e6ec293 100644 --- a/src/crayf90/fe90/i_cvrt.c +++ b/src/crayf90/fe90/i_cvrt.c @@ -594,7 +594,7 @@ void cvrt_to_pdg (char *compiler_gen_date) PDG_DBG_PRINT_D("(2) one", 1); PDG_DBG_PRINT_END -# if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX) || defined(_TARGET_OS_DARWIN)) +# if (defined(_TARGET_OS_IRIX) || defined(_TARGET_OS_LINUX) || defined(_TARGET_OS_DARWIN) || defined(__FreeBSD__)) cwh_add_to_used_files_table(GL_FILE_NAME_PTR(i), 1); # endif } diff --git a/src/crayf90/fe90/i_cvrt.h b/src/crayf90/fe90/i_cvrt.h index 8b70bc5..d5197d6 100644 --- a/src/crayf90/fe90/i_cvrt.h +++ b/src/crayf90/fe90/i_cvrt.h @@ -793,7 +793,7 @@ extern INTPTR fei_pattern_con ( TYPE type, INT64 bitsize ); extern INTPTR fei_smt_parameter ( char *name_string, TYPE type, - INT32 con_idx, + INTPTR con_idx, INT32 Class, INT32 line_num ); extern void fei_entry_pt ( INTPTR st_idx ); diff --git a/src/crayf90/sgi/cwh_stab.cxx b/src/crayf90/sgi/cwh_stab.cxx index 37c8262..bdf042c 100644 --- a/src/crayf90/sgi/cwh_stab.cxx +++ b/src/crayf90/sgi/cwh_stab.cxx @@ -3194,7 +3194,7 @@ cwh_stab_mk_pu(TY_IDX pty, SYMTAB_IDX level) INTPTR fei_smt_parameter(char * name_string, TYPE type, - INT32 con_idx, + INTPTR con_idx, INT32 Class, INT32 lineno) diff --git a/src/libU77/externals.h b/src/libU77/externals.h index cc2e2c6..8af49d5 100644 --- a/src/libU77/externals.h +++ b/src/libU77/externals.h @@ -74,7 +74,7 @@ extern void _cleanup (void); /* unknown */ extern int f77argc; /* from libF77/main.c */ extern char **f77argv; # endif -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) extern int f__xargc; extern char **f__xargv; #endif @@ -97,7 +97,7 @@ extern void _cleanup (void); /* unknown */ #define ARGC f77argc #define ARGV f77argv #endif -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) #define ARGC f__xargc #define ARGV f__xargv #endif diff --git a/src/libU77/getenv_.c b/src/libU77/getenv_.c index d7b5e6a..6d13f5e 100644 --- a/src/libU77/getenv_.c +++ b/src/libU77/getenv_.c @@ -63,7 +63,7 @@ getenv_ (char *fname, char *value, int flen, int vlen) #endif /* KEY Bug 1683 */ { /* fixed bug 9931 */ -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) extern char **environ; register char **env = environ; #else diff --git a/src/libf/fio/flush.c b/src/libf/fio/flush.c index bb1b480..c04a28f 100644 --- a/src/libf/fio/flush.c +++ b/src/libf/fio/flush.c @@ -183,7 +183,7 @@ flush_( case FS_TEXT: #ifdef KEY { -# if defined(BUILD_OS_DARWIN) +# if defined(BUILD_OS_DARWIN) || defined (__FreeBSD__) int writeable = cup->ufp.std->_flags & (__SWR | __SRW); # elif defined(__sun) int writeable = TRUE; // FIXME diff --git a/src/libf/fio/fopn.c b/src/libf/fio/fopn.c index 4862eaa..8fbdf97 100644 --- a/src/libf/fio/fopn.c +++ b/src/libf/fio/fopn.c @@ -1138,7 +1138,7 @@ int catcherr) * for tty files. In both cases, stdio picks appropriate * buffer sizes. */ -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) if (cup->ufp.std->_bf._base == NULL && fileno(cup->ufp.std) != STDERR_FILENO && ! isatty(fileno(cup->ufp.std))) diff --git a/src/libf/fio/open.c b/src/libf/fio/open.c index a0b24f1..8c7a22e 100644 --- a/src/libf/fio/open.c +++ b/src/libf/fio/open.c @@ -507,7 +507,7 @@ _f_open( if (stdfn) { FILE *stdf; -#if defined(BUILD_OS_DARWIN) || defined(__sun) +#if defined(BUILD_OS_DARWIN) || defined(__sun) || defined(__FreeBSD__) switch(stdfnum) { case(STDIN_FILENO): stdf = stdin; diff --git a/src/libf/fio/rdfmt.c b/src/libf/fio/rdfmt.c index 2903f11..1baa272 100644 --- a/src/libf/fio/rdfmt.c +++ b/src/libf/fio/rdfmt.c @@ -829,7 +829,7 @@ done: #if defined(BUILD_OS_DARWIN) #elif defined(__mips) || (defined(_LITTLE_ENDIAN) && defined(__sv2)) #include -#elif defined(_LITTLE_ENDIAN) && !(__sv2) && !defined(__sun) +#elif defined(_LITTLE_ENDIAN) && !(__sv2) && !defined(__sun) && !defined(__FreeBSD__) #include #endif /* diff --git a/src/libf/pxf/ipxfargc.c b/src/libf/pxf/ipxfargc.c index 6d4cf1f..8a8a12b 100644 --- a/src/libf/pxf/ipxfargc.c +++ b/src/libf/pxf/ipxfargc.c @@ -52,7 +52,7 @@ ipxfargc_() { return((_f_int) (__Argc - 1) ); } -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) extern int f__xargc; /* Number of argv fields */ _f_int diff --git a/src/libf/pxf/pxfclearenv.c b/src/libf/pxf/pxfclearenv.c index 3359e4e..ef1559f 100644 --- a/src/libf/pxf/pxfclearenv.c +++ b/src/libf/pxf/pxfclearenv.c @@ -35,7 +35,7 @@ #include #endif -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) extern char **environ; #else /* defined(BUILD_OS_DARWIN) */ extern char **_environ; @@ -71,7 +71,7 @@ _PXFCLEARENV( { int i; -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) for(i=0; environ[i] != NULL; i++) { environ[i] = NULL; } diff --git a/src/libf/pxf/pxfgetarg.c b/src/libf/pxf/pxfgetarg.c index a87ee77..7fd7f4a 100644 --- a/src/libf/pxf/pxfgetarg.c +++ b/src/libf/pxf/pxfgetarg.c @@ -49,7 +49,7 @@ extern int __Argc; /* Number of argv fields */ #pragma weak __Argc extern char **__Argv; /* Pointer to pointer to arguments */ #pragma weak __Argv -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) extern int f__xargc; /* Number of argv fields */ extern char **f__xargv; /* Pointer to pointer to arguments */ #elif defined(BUILD_OS_DARWIN) @@ -89,7 +89,7 @@ _PXFGETARG( if (argnum < 0 || argnum >= _argc) { #elif defined(__mips) if (argnum < 0 || argnum >= __Argc) { -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) if (argnum < 0 || argnum >= f__xargc) { #elif defined(BUILD_OS_DARWIN) if (argnum < 0 || argnum >= NXArgc) { @@ -105,7 +105,7 @@ _PXFGETARG( argstr = _argv[argnum]; #elif defined(__mips) argstr = __Argv[argnum]; -#elif defined(__linux) || defined(__sun) +#elif defined(__linux) || defined(__sun) || defined(__FreeBSD__) argstr = f__xargv[argnum]; #elif defined(BUILD_OS_DARWIN) argstr = NXArgv[argnum]; diff --git a/src/libf/pxf/pxfgetenv.c b/src/libf/pxf/pxfgetenv.c index eb20de1..ac29c44 100644 --- a/src/libf/pxf/pxfgetenv.c +++ b/src/libf/pxf/pxfgetenv.c @@ -80,7 +80,7 @@ extern char *_fc_acopy(_fcd f); #ifndef _UNICOS #include -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) extern char **environ; #else /* defined(BUILD_OS_DARWIN) */ extern char **_environ; @@ -90,7 +90,7 @@ char * _GETENV(char *name) { char *s1, *s2; -#if defined(BUILD_OS_DARWIN) +#if defined(BUILD_OS_DARWIN) || defined(__FreeBSD__) char **p = environ; #else /* defined(BUILD_OS_DARWIN) */ char **p = _environ; diff --git a/src/libfi/mathlb/ieee_module_support.c b/src/libfi/mathlb/ieee_module_support.c index 9c9f835..b7aa44c 100644 --- a/src/libfi/mathlb/ieee_module_support.c +++ b/src/libfi/mathlb/ieee_module_support.c @@ -178,6 +178,8 @@ static int __f90_fesetenv(const FENV_T *envp) { } } +#ifndef __FreeBSD__ + int feclearexcept(int excepts) { @@ -214,6 +216,7 @@ feclearexcept(int excepts) /* Success. */ return 0; } +#endif #else /* defined(TARG_whatever) */ /* Definitions for non-X86 architectures */ diff --git a/src/libpathfortran/segv.c b/src/libpathfortran/segv.c index 69e7e08..ad71dc2 100644 --- a/src/libpathfortran/segv.c +++ b/src/libpathfortran/segv.c @@ -32,9 +32,12 @@ typedef unsigned long ulong; #endif /* defined(BUILD_OS_DARWIN) */ +typedef unsigned long ulong; + extern void MAIN__(void); -static inline ulong distance(ulong a, ulong b) + +static inline unsigned long distance(ulong a, ulong b) { return a > b ? a - b: b - a; } diff --git a/src/libu/ffio/_ffopen.c b/src/libu/ffio/_ffopen.c index 7f47b1b..16d120a 100644 --- a/src/libu/ffio/_ffopen.c +++ b/src/libu/ffio/_ffopen.c @@ -108,7 +108,9 @@ _ffopen_t _ffopen(const char *name, int flags, mode_t mode, union spec_u *spek, return __ffopen(name, flags, mode, spek, stat, cbits, cblks, pa_fio, oinf); } # else /* defined(BUILD_OS_DARWIN) */ -_ffopen_t _ffopen() __attribute__ ((weak, alias ("__ffopen"))); +_ffopen_t _ffopen (const char *name, int flags, mode_t mode, + union spec_u *spek, struct ffsw *stat, long cbits, int cblks, + struct fdinfo *pa_fio, struct gl_o_inf *oinf) __attribute__ ((weak, alias ("__ffopen")));; # endif /* defined(BUILD_OS_DARWIN) */ #endif diff --git a/src/libu/numconv/mpp/qq_routines.h b/src/libu/numconv/mpp/qq_routines.h index b1f3c0c..4108e04 100644 --- a/src/libu/numconv/mpp/qq_routines.h +++ b/src/libu/numconv/mpp/qq_routines.h @@ -27,7 +27,7 @@ #if defined(_WORD32) || defined(__mips) || defined(_LITTLE_ENDIAN) /* Implementation's most efficient floating types */ /* These are defined in fp.h for CRAYIEEE systems */ -#if ! defined(BUILD_OS_DARWIN) && ! defined(__linux) && ! defined(__sun) +#if ! defined(BUILD_OS_DARWIN) && ! defined(__linux) && ! defined(__sun) && ! defined(__FreeBSD__) /* Darwin, we get these definitions for free from math.h, though they may * not be what we'd like (e.g. -march=i386 uses long double). */ typedef double float_t; /* >=24 bit real */ @@ -67,7 +67,7 @@ int ilogb(FLOAT64 x); FLOAT64 copysign(FLOAT64 x, FLOAT64 y); #endif -#if ! defined(BUILD_OS_DARWIN) +#if ! defined(BUILD_OS_DARWIN) && ! defined(__FreeBSD__) /* The following defines are in fp.h for PVP. */ /* number classifications */ #define FP_NAN 0 @@ -199,7 +199,7 @@ union _ieee_quad { : printf("%s %d: fpclassifyl() only supported for 128-bit\n", \ __FILE__, __LINE__)) -#ifndef __linux +#if !defined(__linux) && !defined(__FreeBSD__) static int __fpclassifyl(x) union _ieee_quad x; { diff --git a/src/libu/util/rtc.c b/src/libu/util/rtc.c index e908f15..d5a4d57 100644 --- a/src/libu/util/rtc.c +++ b/src/libu/util/rtc.c @@ -70,7 +70,7 @@ #include #include /* In Linux this is ifdef'ed out */ -#if defined(KEY) && ! defined(BUILD_OS_DARWIN) +#if defined(KEY) && ! defined(BUILD_OS_DARWIN) && ! defined(__FreeBSD__) struct timezone { int tz_minuteswest; /* Minutes west of GMT. */