mirror of
https://git.planet-casio.com/Lephenixnoir/OpenLibm.git
synced 2024-12-28 04:23:41 +01:00
Merge pull request #176 from JuliaLang/aa/openbsd
Fixes for building on OpenBSD
This commit is contained in:
commit
a844d584d3
5 changed files with 23 additions and 20 deletions
7
Make.inc
7
Make.inc
|
@ -24,12 +24,7 @@ endif
|
|||
USEGCC = 1
|
||||
USECLANG = 0
|
||||
|
||||
ifeq ($(OS), Darwin)
|
||||
USEGCC = 0
|
||||
USECLANG = 1
|
||||
endif
|
||||
|
||||
ifeq ($(OS), FreeBSD)
|
||||
ifneq (,$(findstring $(OS),Darwin FreeBSD OpenBSD))
|
||||
USEGCC = 0
|
||||
USECLANG = 1
|
||||
endif
|
||||
|
|
10
Makefile
10
Makefile
|
@ -83,19 +83,19 @@ openlibm.pc: openlibm.pc.in Make.inc Makefile
|
|||
|
||||
install-static: libopenlibm.a
|
||||
mkdir -p $(DESTDIR)$(libdir)
|
||||
cp -f -a libopenlibm.a $(DESTDIR)$(libdir)/
|
||||
cp -RpP -f libopenlibm.a $(DESTDIR)$(libdir)/
|
||||
|
||||
install-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
||||
mkdir -p $(DESTDIR)$(shlibdir)
|
||||
cp -f -a libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
|
||||
cp -RpP -f libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
|
||||
|
||||
install-pkgconfig: openlibm.pc
|
||||
mkdir -p $(DESTDIR)$(pkgconfigdir)
|
||||
cp -f -a openlibm.pc $(DESTDIR)$(pkgconfigdir)/
|
||||
cp -RpP -f openlibm.pc $(DESTDIR)$(pkgconfigdir)/
|
||||
|
||||
install-headers:
|
||||
mkdir -p $(DESTDIR)$(includedir)/openlibm
|
||||
cp -f -a include/*.h $(DESTDIR)$(includedir)/openlibm
|
||||
cp -f -a src/*.h $(DESTDIR)$(includedir)/openlibm
|
||||
cp -RpP -f include/*.h $(DESTDIR)$(includedir)/openlibm
|
||||
cp -RpP -f src/*.h $(DESTDIR)$(includedir)/openlibm
|
||||
|
||||
install: install-static install-shared install-pkgconfig install-headers
|
||||
|
|
14
README.md
14
README.md
|
@ -16,24 +16,20 @@ consistently across compilers and operating systems, and in 32-bit and
|
|||
|
||||
OpenLibm builds on Linux, Mac OS X, Windows, FreeBSD, OpenBSD, and DragonFly BSD.
|
||||
It builds with both GCC and clang. Although largely tested and widely
|
||||
used on x86 architectures, openlibm also supports ARM and
|
||||
powerPC.
|
||||
used on x86 architectures, OpenLibm also supports ARM and
|
||||
PowerPC.
|
||||
|
||||
## Build instructions
|
||||
|
||||
1. Use `make` to build OpenLibm.
|
||||
1. Use GNU Make to build OpenLibm. This is `make` on most systems, but `gmake` on BSDs.
|
||||
2. Use `make USEGCC=1` to build with GCC. This is the default on
|
||||
Linux and Windows.
|
||||
3. Use `make USECLANG=1` to build with clang. This is the default on OS X
|
||||
and FreeBSD.
|
||||
3. Use `make USECLANG=1` to build with clang. This is the default on OS X, FreeBSD,
|
||||
and OpenBSD.
|
||||
4. Architectures are auto-detected. Use `make ARCH=i386` to force a
|
||||
build for i386. Other supported architectures are i486, i586, and
|
||||
i686. GCC 4.8 is the minimum requirement for correct codegen on
|
||||
older 32-bit architectures.
|
||||
5. On OpenBSD, you need to install GNU Make (port name: `gmake`) and a recent
|
||||
version of `gcc` (tested: 4.9.2), as the default version provided by OpenBSD
|
||||
is too old (4.2.1). If you use OpenBSD's port system for this (port name:
|
||||
`gcc`), run `make CC=egcc` to force Make to use the newer `gcc`.
|
||||
|
||||
## Acknowledgements
|
||||
|
||||
|
|
|
@ -78,12 +78,14 @@
|
|||
/*
|
||||
* Macro to test if we're using a specific version of gcc or later.
|
||||
*/
|
||||
#ifndef __GNUC_PREREQ__
|
||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||
#define __GNUC_PREREQ__(ma, mi) \
|
||||
(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
|
||||
#else
|
||||
#define __GNUC_PREREQ__(ma, mi) 0
|
||||
#endif
|
||||
#endif /* __GNUC_PREREQ__ */
|
||||
|
||||
/*
|
||||
* Compiler-dependent macro to help declare pure (no side effects) functions.
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
#ifndef _CDEFS_COMPAT_H_
|
||||
#define _CDEFS_COMPAT_H_
|
||||
|
||||
#if !defined(__BEGIN_DECLS)
|
||||
#if defined(__cplusplus)
|
||||
#define __BEGIN_DECLS extern "C" {
|
||||
#define __END_DECLS }
|
||||
|
@ -8,6 +9,7 @@
|
|||
#define __BEGIN_DECLS
|
||||
#define __END_DECLS
|
||||
#endif
|
||||
#endif /* !defined(__BEGIN_DECLS) */
|
||||
|
||||
#ifdef __GNUC__
|
||||
#ifndef __strong_reference
|
||||
|
@ -25,18 +27,22 @@
|
|||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak " #alias); \
|
||||
__asm__(".equ " #alias ", " #sym)
|
||||
#ifndef __warn_references
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning." #sym); \
|
||||
__asm__(".asciz \"" msg "\""); \
|
||||
__asm__(".previous")
|
||||
#endif /* __warn_references */
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".weak alias"); \
|
||||
__asm__(".equ alias, sym")
|
||||
#ifndef __warn_references
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".section .gnu.warning.sym"); \
|
||||
__asm__(".asciz \"msg\""); \
|
||||
__asm__(".previous")
|
||||
#endif /* __warn_references */
|
||||
#endif /* __STDC__ */
|
||||
#elif defined(__clang__) /* CLANG */
|
||||
#ifdef __STDC__
|
||||
|
@ -53,16 +59,20 @@
|
|||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#ifndef __warn_references
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs \"" msg "\",30,0,0,0"); \
|
||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||
#endif /* __warn_references */
|
||||
#else
|
||||
#define __weak_reference(sym,alias) \
|
||||
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#ifndef __warn_references
|
||||
#define __warn_references(sym,msg) \
|
||||
__asm__(".stabs msg,30,0,0,0"); \
|
||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||
#endif /* __warn_references */
|
||||
#endif /* __STDC__ */
|
||||
#endif /* __ELF__ */
|
||||
#endif /* __weak_reference */
|
||||
|
|
Loading…
Reference in a new issue