mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-11 13:26:08 +03:00
Applied the FreeBSD patch from Ralith, closes ticket #95 , slightly changed but basically the same. Thanx Ralith :)
This commit is contained in:
parent
e77e235307
commit
d0c5df393c
7 changed files with 33 additions and 10 deletions
|
@ -487,6 +487,9 @@ Expression *Mod(Type *type, Expression *e1, Expression *e2)
|
||||||
c = fmodl(e1->toReal(), r2) + fmodl(e1->toImaginary(), r2) * I;
|
c = fmodl(e1->toReal(), r2) + fmodl(e1->toImaginary(), r2) * I;
|
||||||
#elif defined(IN_GCC)
|
#elif defined(IN_GCC)
|
||||||
c = complex_t(e1->toReal() % r2, e1->toImaginary() % r2);
|
c = complex_t(e1->toReal() % r2, e1->toImaginary() % r2);
|
||||||
|
#elif defined(__FreeBSD__) && __FreeBSD_version < 800000
|
||||||
|
// freebsd is kinda messed up. the STABLE branch doesn't support C99's fmodl !?!
|
||||||
|
c = complex_t(fmod(e1->toReal(), r2), fmod(e1->toImaginary(), r2));
|
||||||
#else
|
#else
|
||||||
c = complex_t(fmodl(e1->toReal(), r2), fmodl(e1->toImaginary(), r2));
|
c = complex_t(fmodl(e1->toReal(), r2), fmodl(e1->toImaginary(), r2));
|
||||||
#endif
|
#endif
|
||||||
|
@ -498,6 +501,9 @@ Expression *Mod(Type *type, Expression *e1, Expression *e2)
|
||||||
c = fmodl(e1->toReal(), i2) + fmodl(e1->toImaginary(), i2) * I;
|
c = fmodl(e1->toReal(), i2) + fmodl(e1->toImaginary(), i2) * I;
|
||||||
#elif defined(IN_GCC)
|
#elif defined(IN_GCC)
|
||||||
c = complex_t(e1->toReal() % i2, e1->toImaginary() % i2);
|
c = complex_t(e1->toReal() % i2, e1->toImaginary() % i2);
|
||||||
|
#elif defined(__FreeBSD__) && __FreeBSD_version < 800000
|
||||||
|
// freebsd is kinda messed up. the STABLE branch doesn't support C99's fmodl !?!
|
||||||
|
c = complex_t(fmod(e1->toReal(), i2), fmod(e1->toImaginary(), i2));
|
||||||
#else
|
#else
|
||||||
c = complex_t(fmodl(e1->toReal(), i2), fmodl(e1->toImaginary(), i2));
|
c = complex_t(fmodl(e1->toReal(), i2), fmodl(e1->toImaginary(), i2));
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -330,8 +330,10 @@ int main(int argc, char *argv[])
|
||||||
global.params.os = OSLinux;
|
global.params.os = OSLinux;
|
||||||
#elif __APPLE__
|
#elif __APPLE__
|
||||||
global.params.os = OSMacOSX;
|
global.params.os = OSMacOSX;
|
||||||
|
#elif __FreeBSD__
|
||||||
|
global.params.os = OSFreeBSD;
|
||||||
#else
|
#else
|
||||||
#error
|
#error Unsupported OS
|
||||||
#endif /* linux */
|
#endif /* linux */
|
||||||
|
|
||||||
assert(global.params.os != OSinvalid);
|
assert(global.params.os != OSinvalid);
|
||||||
|
@ -843,6 +845,11 @@ int main(int argc, char *argv[])
|
||||||
global.params.tt_os = "-pc-darwin-gnu";
|
global.params.tt_os = "-pc-darwin-gnu";
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OSFreeBSD:
|
||||||
|
VersionCondition::addPredefinedGlobalIdent("freebsd");
|
||||||
|
VersionCondition::addPredefinedGlobalIdent("Posix");
|
||||||
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
assert(false && "Target OS not supported");
|
assert(false && "Target OS not supported");
|
||||||
}
|
}
|
||||||
|
|
|
@ -52,7 +52,8 @@ enum OS
|
||||||
OSinvalid,
|
OSinvalid,
|
||||||
OSLinux,
|
OSLinux,
|
||||||
OSWindows,
|
OSWindows,
|
||||||
OSMacOSX
|
OSMacOSX,
|
||||||
|
OSFreeBSD
|
||||||
};
|
};
|
||||||
|
|
||||||
// Put command line switches in here
|
// Put command line switches in here
|
||||||
|
|
|
@ -151,15 +151,18 @@ int linkExecutable(const char* argv0)
|
||||||
}
|
}
|
||||||
|
|
||||||
// default libs
|
// default libs
|
||||||
if(global.params.os == OSLinux || global.params.os == OSMacOSX)
|
switch(global.params.os) {
|
||||||
{
|
case OSLinux:
|
||||||
args.push_back("-lpthread");
|
case OSMacOSX:
|
||||||
args.push_back("-ldl");
|
args.push_back("-ldl");
|
||||||
|
case OSFreeBSD:
|
||||||
|
args.push_back("-lpthread");
|
||||||
args.push_back("-lm");
|
args.push_back("-lm");
|
||||||
}
|
break;
|
||||||
else if (global.params.os == OSWindows)
|
|
||||||
{
|
case OSWindows:
|
||||||
// FIXME: I'd assume kernel32 etc
|
// FIXME: I'd assume kernel32 etc
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// object files
|
// object files
|
||||||
|
|
|
@ -704,6 +704,12 @@ const LLStructType* DtoMutexType()
|
||||||
return LLStructType::get(types);
|
return LLStructType::get(types);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FreeBSD
|
||||||
|
else if (global.params.os == OSFreeBSD) {
|
||||||
|
// Just a pointer
|
||||||
|
return LLStructType::get(DtoSize_t(), 0);
|
||||||
|
}
|
||||||
|
|
||||||
// pthread_fastlock
|
// pthread_fastlock
|
||||||
std::vector<const LLType*> types2;
|
std::vector<const LLType*> types2;
|
||||||
types2.push_back(DtoSize_t());
|
types2.push_back(DtoSize_t());
|
||||||
|
|
|
@ -75,7 +75,7 @@ void _STD_critical_term()
|
||||||
|
|
||||||
/* ================================= linux ============================ */
|
/* ================================= linux ============================ */
|
||||||
|
|
||||||
#if linux || __APPLE__
|
#if linux || __APPLE__ || __FreeBSD__
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
|
|
||||||
# check for command line arguments
|
# check for command line arguments
|
||||||
if [ -z "$1" ] ; then
|
if [ -z "$1" ] ; then
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue