diff --git a/.gitattributes b/.gitattributes index 9cdfafb60e..7290e48c5f 100644 --- a/.gitattributes +++ b/.gitattributes @@ -2828,7 +2828,6 @@ packages/extra/numlib/tpnumlib.pas svneol=native#text/plain packages/extra/numlib/typ.pas svneol=native#text/plain packages/extra/opengl/Makefile svneol=native#text/plain packages/extra/opengl/Makefile.fpc svneol=native#text/plain -packages/extra/opengl/dllfuncs.pp svneol=native#text/plain packages/extra/opengl/examples/Makefile svneol=native#text/plain packages/extra/opengl/examples/Makefile.fpc svneol=native#text/plain packages/extra/opengl/examples/bounce.pp svneol=native#text/plain diff --git a/packages/extra/opengl/Makefile b/packages/extra/opengl/Makefile index e4d1af7486..d7125da6c1 100644 --- a/packages/extra/opengl/Makefile +++ b/packages/extra/opengl/Makefile @@ -1,5 +1,5 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/12/04] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/12/06] # default: all MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux @@ -233,7 +233,7 @@ PACKAGESDIR:=$(wildcard $(FPCDIR) $(FPCDIR)/packages/base $(FPCDIR)/packages/ext override PACKAGE_NAME=opengl override PACKAGE_VERSION=2.0.0 ifeq ($(FULL_TARGET),i386-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),i386-go32v2) override TARGET_UNITS+=gl glu glut @@ -245,13 +245,13 @@ ifeq ($(FULL_TARGET),i386-os2) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),i386-freebsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),i386-beos) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),i386-netbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),i386-solaris) override TARGET_UNITS+=gl glu glut @@ -263,7 +263,7 @@ ifeq ($(FULL_TARGET),i386-netware) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),i386-openbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),i386-wdosx) override TARGET_UNITS+=gl glu glut @@ -281,13 +281,13 @@ ifeq ($(FULL_TARGET),i386-wince) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),m68k-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),m68k-freebsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),m68k-netbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),m68k-amiga) override TARGET_UNITS+=gl glu glut @@ -296,52 +296,52 @@ ifeq ($(FULL_TARGET),m68k-atari) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),m68k-openbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),m68k-palmos) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),powerpc-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),powerpc-netbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),powerpc-macos) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),powerpc-darwin) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),powerpc-morphos) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),sparc-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),sparc-netbsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),sparc-solaris) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),x86_64-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),x86_64-freebsd) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),x86_64-win64) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),arm-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),arm-wince) override TARGET_UNITS+=gl glu glut endif ifeq ($(FULL_TARGET),powerpc64-linux) -override TARGET_UNITS+=gl glu glut dllfuncs glx glext +override TARGET_UNITS+=gl glu glut glx glext endif ifeq ($(FULL_TARGET),i386-linux) override TARGET_EXAMPLEDIRS+=examples diff --git a/packages/extra/opengl/Makefile.fpc b/packages/extra/opengl/Makefile.fpc index 944a3aa008..3f49d3a243 100644 --- a/packages/extra/opengl/Makefile.fpc +++ b/packages/extra/opengl/Makefile.fpc @@ -16,11 +16,11 @@ packages_darwin=x11 [target] units=gl glu glut units_win32=glext -units_linux=dllfuncs glx glext -units_freebsd=dllfuncs glx glext -units_netbsd=dllfuncs glx glext -units_openbsd=dllfuncs glx glext -units_darwin=dllfuncs glx glext +units_linux=glx glext +units_freebsd=glx glext +units_netbsd=glx glext +units_openbsd=glx glext +units_darwin=glx glext exampledirs=examples [install] diff --git a/packages/extra/opengl/dllfuncs.pp b/packages/extra/opengl/dllfuncs.pp deleted file mode 100644 index e974d3f68d..0000000000 --- a/packages/extra/opengl/dllfuncs.pp +++ /dev/null @@ -1,61 +0,0 @@ -{ - - **********************************************************************} - -{$MODE OBJFPC} - -unit DLLFuncs; - -interface - -uses SysUtils; - -function LoadLibrary(Name: PChar): PtrInt; -function GetProcAddress(Lib: PtrInt; ProcName: PChar): Pointer; -function FreeLibrary(Lib: PtrInt): Boolean; -function getlastdlerror: pchar; - - -implementation - -const - RTLD_LAZY = $001; - RTLD_NOW = $002; - RTLD_BINDING_MASK = $003; - -{$ifdef Linux} -function dlopen(Name: PChar; Flags: LongInt) : Pointer; cdecl; external 'dl'; -function dlsym(Lib: Pointer; Name: PChar) : Pointer; cdecl; external 'dl'; -function dlclose(Lib: Pointer): LongInt; cdecl; external 'dl'; -function dlerror: pchar; cdecl; external 'dl'; -{$else} -function dlopen(Name: PChar; Flags: LongInt) : Pointer; cdecl; external 'c'; -function dlsym(Lib: Pointer; Name: PChar) : Pointer; cdecl; external 'c'; -function dlclose(Lib: Pointer): LongInt; cdecl; external 'c'; -function dlerror: pchar; cdecl; external 'c'; -{$endif} - -function getlastdlerror: pchar; -begin - getlastdlerror := dlerror; -end; - -function LoadLibrary(Name: PChar): PtrInt; -begin - Result := PtrInt(dlopen(Name, RTLD_LAZY)); -end; - -function GetProcAddress(Lib: PtrInt; ProcName: PChar): Pointer; -begin - Result := dlsym(Pointer(Lib), ProcName); -end; - -function FreeLibrary(Lib: PtrInt): Boolean; -begin - if Lib = 0 then - Result := False - else - Result := dlClose(Pointer(Lib)) = 0; -end; - -end. diff --git a/packages/extra/opengl/examples/Makefile b/packages/extra/opengl/examples/Makefile index 34d63fc6f0..6740c334f9 100644 --- a/packages/extra/opengl/examples/Makefile +++ b/packages/extra/opengl/examples/Makefile @@ -1,5 +1,5 @@ # -# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/12/04] +# Don't edit, this file is generated by FPCMake Version 2.0.0 [2005/12/06] # default: all MAKEFILETARGETS=i386-linux i386-go32v2 i386-win32 i386-os2 i386-freebsd i386-beos i386-netbsd i386-solaris i386-qnx i386-netware i386-openbsd i386-wdosx i386-emx i386-watcom i386-netwlibc i386-wince m68k-linux m68k-freebsd m68k-netbsd m68k-amiga m68k-atari m68k-openbsd m68k-palmos powerpc-linux powerpc-netbsd powerpc-macos powerpc-darwin powerpc-morphos sparc-linux sparc-netbsd sparc-solaris x86_64-linux x86_64-freebsd x86_64-win64 arm-linux arm-wince powerpc64-linux diff --git a/packages/extra/opengl/gl.pp b/packages/extra/opengl/gl.pp index 7f2dfe9d72..7d64facade 100644 --- a/packages/extra/opengl/gl.pp +++ b/packages/extra/opengl/gl.pp @@ -68,7 +68,7 @@ uses {$IFDEF MorphOS} TinyGL {$ELSE MorphOS} - DLLFuncs + dynlibs {$ENDIF MorphOS} {$ENDIF Win32}; diff --git a/packages/extra/opengl/glext.pp b/packages/extra/opengl/glext.pp index d6c11f8c71..8440794d54 100644 --- a/packages/extra/opengl/glext.pp +++ b/packages/extra/opengl/glext.pp @@ -30,7 +30,7 @@ uses {$IFDEF Win32} Windows, {$ELSE} - DLLFuncs, + dynlibs, {$ENDIF} GL; diff --git a/packages/extra/opengl/glu.pp b/packages/extra/opengl/glu.pp index 85e825fa5d..3c4752bb73 100644 --- a/packages/extra/opengl/glu.pp +++ b/packages/extra/opengl/glu.pp @@ -77,7 +77,7 @@ uses {$IFDEF MORPHOS} TinyGL, {$ELSE} - DLLFuncs, + dynlibs, {$ENDIF} {$ENDIF} GL; diff --git a/packages/extra/opengl/glut.pp b/packages/extra/opengl/glut.pp index a5794e1509..391e8e0435 100644 --- a/packages/extra/opengl/glut.pp +++ b/packages/extra/opengl/glut.pp @@ -42,7 +42,7 @@ uses {$IFDEF MORPHOS} TinyGL, {$ELSE} - DLLFuncs, + dynlibs, {$ENDIF} {$ENDIF} GL; diff --git a/packages/extra/opengl/glx.pp b/packages/extra/opengl/glx.pp index 3969ced778..2152d6dd51 100644 --- a/packages/extra/opengl/glx.pp +++ b/packages/extra/opengl/glx.pp @@ -168,7 +168,7 @@ var implementation -uses GL, DLLFuncs; +uses GL, dynlibs; {$LINKLIB m} @@ -180,38 +180,47 @@ begin end; function InitGLX: Boolean; +var + OurLibGL: TLibHandle; begin Result := False; - if libGL = 0 then + +{$ifndef darwin} + OurLibGL := libGl; +{$else darwin} + OurLibGL := LoadLibrary('/usr/X11R6/lib/libGL.dylib'); +{$endif darwin} + + if OurLibGL = 0 then exit; - glXChooseVisual := GetProc(LibGL, 'glXChooseVisual'); - glXCreateContext := GetProc(LibGL, 'glXCreateContext'); - glXDestroyContext := GetProc(LibGL, 'glXDestroyContext'); - glXMakeCurrent := GetProc(LibGL, 'glXMakeCurrent'); - glXCopyContext := GetProc(LibGL, 'glXCopyContext'); - glXSwapBuffers := GetProc(LibGL, 'glXSwapBuffers'); - glXCreateGLXPixmap := GetProc(LibGL, 'glXCreateGLXPixmap'); - glXDestroyGLXPixmap := GetProc(LibGL, 'glXDestroyGLXPixmap'); - glXQueryExtension := GetProc(LibGL, 'glXQueryExtension'); - glXQueryVersion := GetProc(LibGL, 'glXQueryVersion'); - glXIsDirect := GetProc(LibGL, 'glXIsDirect'); - glXGetConfig := GetProc(LibGL, 'glXGetConfig'); - glXGetCurrentContext := GetProc(LibGL, 'glXGetCurrentContext'); - glXGetCurrentDrawable := GetProc(LibGL, 'glXGetCurrentDrawable'); - glXWaitGL := GetProc(LibGL, 'glXWaitGL'); - glXWaitX := GetProc(LibGL, 'glXWaitX'); - glXUseXFont := GetProc(LibGL, 'glXUseXFont'); + glXChooseVisual := GetProc(OurLibGL, 'glXChooseVisual'); + glXCreateContext := GetProc(OurLibGL, 'glXCreateContext'); + glXDestroyContext := GetProc(OurLibGL, 'glXDestroyContext'); + glXMakeCurrent := GetProc(OurLibGL, 'glXMakeCurrent'); + glXCopyContext := GetProc(OurLibGL, 'glXCopyContext'); + glXSwapBuffers := GetProc(OurLibGL, 'glXSwapBuffers'); + glXCreateGLXPixmap := GetProc(OurLibGL, 'glXCreateGLXPixmap'); + glXDestroyGLXPixmap := GetProc(OurLibGL, 'glXDestroyGLXPixmap'); + glXQueryExtension := GetProc(OurLibGL, 'glXQueryExtension'); + glXQueryVersion := GetProc(OurLibGL, 'glXQueryVersion'); + glXIsDirect := GetProc(OurLibGL, 'glXIsDirect'); + glXGetConfig := GetProc(OurLibGL, 'glXGetConfig'); + glXGetCurrentContext := GetProc(OurLibGL, 'glXGetCurrentContext'); + glXGetCurrentDrawable := GetProc(OurLibGL, 'glXGetCurrentDrawable'); + glXWaitGL := GetProc(OurLibGL, 'glXWaitGL'); + glXWaitX := GetProc(OurLibGL, 'glXWaitX'); + glXUseXFont := GetProc(OurLibGL, 'glXUseXFont'); // GLX 1.1 and later - glXQueryExtensionsString := GetProc(LibGL, 'glXQueryExtensionsString'); - glXQueryServerString := GetProc(LibGL, 'glXQueryServerString'); - glXGetClientString := GetProc(LibGL, 'glXGetClientString'); + glXQueryExtensionsString := GetProc(OurLibGL, 'glXQueryExtensionsString'); + glXQueryServerString := GetProc(OurLibGL, 'glXQueryServerString'); + glXGetClientString := GetProc(OurLibGL, 'glXGetClientString'); // Mesa GLX Extensions - glXCreateGLXPixmapMESA := GetProc(LibGL, 'glXCreateGLXPixmapMESA'); - glXReleaseBufferMESA := GetProc(LibGL, 'glXReleaseBufferMESA'); - glXCopySubBufferMESA := GetProc(LibGL, 'glXCopySubBufferMESA'); - glXGetVideoSyncSGI := GetProc(LibGL, 'glXGetVideoSyncSGI'); - glXWaitVideoSyncSGI := GetProc(LibGL, 'glXWaitVideoSyncSGI'); + glXCreateGLXPixmapMESA := GetProc(OurLibGL, 'glXCreateGLXPixmapMESA'); + glXReleaseBufferMESA := GetProc(OurLibGL, 'glXReleaseBufferMESA'); + glXCopySubBufferMESA := GetProc(OurLibGL, 'glXCopySubBufferMESA'); + glXGetVideoSyncSGI := GetProc(OurLibGL, 'glXGetVideoSyncSGI'); + glXWaitVideoSyncSGI := GetProc(OurLibGL, 'glXWaitVideoSyncSGI'); GLXInitialized := True; Result := True;