mirror of
https://git.planet-casio.com/Lephenixnoir/OpenLibm.git
synced 2024-12-29 13:03:42 +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
|
USEGCC = 1
|
||||||
USECLANG = 0
|
USECLANG = 0
|
||||||
|
|
||||||
ifeq ($(OS), Darwin)
|
ifneq (,$(findstring $(OS),Darwin FreeBSD OpenBSD))
|
||||||
USEGCC = 0
|
|
||||||
USECLANG = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
ifeq ($(OS), FreeBSD)
|
|
||||||
USEGCC = 0
|
USEGCC = 0
|
||||||
USECLANG = 1
|
USECLANG = 1
|
||||||
endif
|
endif
|
||||||
|
|
10
Makefile
10
Makefile
|
@ -83,19 +83,19 @@ openlibm.pc: openlibm.pc.in Make.inc Makefile
|
||||||
|
|
||||||
install-static: libopenlibm.a
|
install-static: libopenlibm.a
|
||||||
mkdir -p $(DESTDIR)$(libdir)
|
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)
|
install-shared: libopenlibm.$(OLM_MAJOR_MINOR_SHLIB_EXT)
|
||||||
mkdir -p $(DESTDIR)$(shlibdir)
|
mkdir -p $(DESTDIR)$(shlibdir)
|
||||||
cp -f -a libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
|
cp -RpP -f libopenlibm.*$(SHLIB_EXT)* $(DESTDIR)$(shlibdir)/
|
||||||
|
|
||||||
install-pkgconfig: openlibm.pc
|
install-pkgconfig: openlibm.pc
|
||||||
mkdir -p $(DESTDIR)$(pkgconfigdir)
|
mkdir -p $(DESTDIR)$(pkgconfigdir)
|
||||||
cp -f -a openlibm.pc $(DESTDIR)$(pkgconfigdir)/
|
cp -RpP -f openlibm.pc $(DESTDIR)$(pkgconfigdir)/
|
||||||
|
|
||||||
install-headers:
|
install-headers:
|
||||||
mkdir -p $(DESTDIR)$(includedir)/openlibm
|
mkdir -p $(DESTDIR)$(includedir)/openlibm
|
||||||
cp -f -a include/*.h $(DESTDIR)$(includedir)/openlibm
|
cp -RpP -f include/*.h $(DESTDIR)$(includedir)/openlibm
|
||||||
cp -f -a src/*.h $(DESTDIR)$(includedir)/openlibm
|
cp -RpP -f src/*.h $(DESTDIR)$(includedir)/openlibm
|
||||||
|
|
||||||
install: install-static install-shared install-pkgconfig install-headers
|
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.
|
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
|
It builds with both GCC and clang. Although largely tested and widely
|
||||||
used on x86 architectures, openlibm also supports ARM and
|
used on x86 architectures, OpenLibm also supports ARM and
|
||||||
powerPC.
|
PowerPC.
|
||||||
|
|
||||||
## Build instructions
|
## 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
|
2. Use `make USEGCC=1` to build with GCC. This is the default on
|
||||||
Linux and Windows.
|
Linux and Windows.
|
||||||
3. Use `make USECLANG=1` to build with clang. This is the default on OS X
|
3. Use `make USECLANG=1` to build with clang. This is the default on OS X, FreeBSD,
|
||||||
and FreeBSD.
|
and OpenBSD.
|
||||||
4. Architectures are auto-detected. Use `make ARCH=i386` to force a
|
4. Architectures are auto-detected. Use `make ARCH=i386` to force a
|
||||||
build for i386. Other supported architectures are i486, i586, and
|
build for i386. Other supported architectures are i486, i586, and
|
||||||
i686. GCC 4.8 is the minimum requirement for correct codegen on
|
i686. GCC 4.8 is the minimum requirement for correct codegen on
|
||||||
older 32-bit architectures.
|
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
|
## Acknowledgements
|
||||||
|
|
||||||
|
|
|
@ -78,12 +78,14 @@
|
||||||
/*
|
/*
|
||||||
* Macro to test if we're using a specific version of gcc or later.
|
* Macro to test if we're using a specific version of gcc or later.
|
||||||
*/
|
*/
|
||||||
|
#ifndef __GNUC_PREREQ__
|
||||||
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
#if defined(__GNUC__) && !defined(__INTEL_COMPILER)
|
||||||
#define __GNUC_PREREQ__(ma, mi) \
|
#define __GNUC_PREREQ__(ma, mi) \
|
||||||
(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
|
(__GNUC__ > (ma) || __GNUC__ == (ma) && __GNUC_MINOR__ >= (mi))
|
||||||
#else
|
#else
|
||||||
#define __GNUC_PREREQ__(ma, mi) 0
|
#define __GNUC_PREREQ__(ma, mi) 0
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* __GNUC_PREREQ__ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Compiler-dependent macro to help declare pure (no side effects) functions.
|
* Compiler-dependent macro to help declare pure (no side effects) functions.
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
#ifndef _CDEFS_COMPAT_H_
|
#ifndef _CDEFS_COMPAT_H_
|
||||||
#define _CDEFS_COMPAT_H_
|
#define _CDEFS_COMPAT_H_
|
||||||
|
|
||||||
|
#if !defined(__BEGIN_DECLS)
|
||||||
#if defined(__cplusplus)
|
#if defined(__cplusplus)
|
||||||
#define __BEGIN_DECLS extern "C" {
|
#define __BEGIN_DECLS extern "C" {
|
||||||
#define __END_DECLS }
|
#define __END_DECLS }
|
||||||
|
@ -8,6 +9,7 @@
|
||||||
#define __BEGIN_DECLS
|
#define __BEGIN_DECLS
|
||||||
#define __END_DECLS
|
#define __END_DECLS
|
||||||
#endif
|
#endif
|
||||||
|
#endif /* !defined(__BEGIN_DECLS) */
|
||||||
|
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
#ifndef __strong_reference
|
#ifndef __strong_reference
|
||||||
|
@ -25,18 +27,22 @@
|
||||||
#define __weak_reference(sym,alias) \
|
#define __weak_reference(sym,alias) \
|
||||||
__asm__(".weak " #alias); \
|
__asm__(".weak " #alias); \
|
||||||
__asm__(".equ " #alias ", " #sym)
|
__asm__(".equ " #alias ", " #sym)
|
||||||
|
#ifndef __warn_references
|
||||||
#define __warn_references(sym,msg) \
|
#define __warn_references(sym,msg) \
|
||||||
__asm__(".section .gnu.warning." #sym); \
|
__asm__(".section .gnu.warning." #sym); \
|
||||||
__asm__(".asciz \"" msg "\""); \
|
__asm__(".asciz \"" msg "\""); \
|
||||||
__asm__(".previous")
|
__asm__(".previous")
|
||||||
|
#endif /* __warn_references */
|
||||||
#else
|
#else
|
||||||
#define __weak_reference(sym,alias) \
|
#define __weak_reference(sym,alias) \
|
||||||
__asm__(".weak alias"); \
|
__asm__(".weak alias"); \
|
||||||
__asm__(".equ alias, sym")
|
__asm__(".equ alias, sym")
|
||||||
|
#ifndef __warn_references
|
||||||
#define __warn_references(sym,msg) \
|
#define __warn_references(sym,msg) \
|
||||||
__asm__(".section .gnu.warning.sym"); \
|
__asm__(".section .gnu.warning.sym"); \
|
||||||
__asm__(".asciz \"msg\""); \
|
__asm__(".asciz \"msg\""); \
|
||||||
__asm__(".previous")
|
__asm__(".previous")
|
||||||
|
#endif /* __warn_references */
|
||||||
#endif /* __STDC__ */
|
#endif /* __STDC__ */
|
||||||
#elif defined(__clang__) /* CLANG */
|
#elif defined(__clang__) /* CLANG */
|
||||||
#ifdef __STDC__
|
#ifdef __STDC__
|
||||||
|
@ -53,16 +59,20 @@
|
||||||
#define __weak_reference(sym,alias) \
|
#define __weak_reference(sym,alias) \
|
||||||
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
|
__asm__(".stabs \"_" #alias "\",11,0,0,0"); \
|
||||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||||
|
#ifndef __warn_references
|
||||||
#define __warn_references(sym,msg) \
|
#define __warn_references(sym,msg) \
|
||||||
__asm__(".stabs \"" msg "\",30,0,0,0"); \
|
__asm__(".stabs \"" msg "\",30,0,0,0"); \
|
||||||
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
__asm__(".stabs \"_" #sym "\",1,0,0,0")
|
||||||
|
#endif /* __warn_references */
|
||||||
#else
|
#else
|
||||||
#define __weak_reference(sym,alias) \
|
#define __weak_reference(sym,alias) \
|
||||||
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
|
__asm__(".stabs \"_/**/alias\",11,0,0,0"); \
|
||||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||||
|
#ifndef __warn_references
|
||||||
#define __warn_references(sym,msg) \
|
#define __warn_references(sym,msg) \
|
||||||
__asm__(".stabs msg,30,0,0,0"); \
|
__asm__(".stabs msg,30,0,0,0"); \
|
||||||
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
__asm__(".stabs \"_/**/sym\",1,0,0,0")
|
||||||
|
#endif /* __warn_references */
|
||||||
#endif /* __STDC__ */
|
#endif /* __STDC__ */
|
||||||
#endif /* __ELF__ */
|
#endif /* __ELF__ */
|
||||||
#endif /* __weak_reference */
|
#endif /* __weak_reference */
|
||||||
|
|
Loading…
Reference in a new issue