# This .cfg file provides common options used among gl2 GLU glue code
# generated for Jogl on all platforms.
JavaOutputDir gensrc/classes
NativeOutputDir gensrc/native/jogl/gl2

Style ImplOnly
ImplPackage com.jogamp.opengl.glu.gl2
ImplJavaClass GLUgl2
ParentClass GLUgl2 GLU

CustomCCode #include <stdio.h> /* android */
CustomCCode #if defined(WIN32)
CustomCCode   #define WIN32_LEAN_AND_MEAN
CustomCCode   #include <windows.h>
CustomCCode   #undef WIN32_LEAN_AND_MEAN
CustomCCode   #include <stddef.h>
CustomCCode #elif defined(__APPLE__)
CustomCCode   #include <inttypes.h>
CustomCCode   #include <jni.h>
CustomCCode   #include <machine/types.h>
CustomCCode #elif defined(__unix__)
CustomCCode   #include <inttypes.h>
CustomCCode #endif

EmitProcAddressTable true
ProcAddressTablePackage   com.jogamp.opengl.glu.gl2
ProcAddressTableClassName GLUgl2ProcAddressTable
GetProcAddressTableExpr   getGLUProcAddressTable()
AccessControl com.jogamp.opengl.glu.gl2.GLUgl2ProcAddressTable PACKAGE_PRIVATE

CustomCCode /* Include the OpenGL GLU header */
CustomCCode #include <GL/glu.h>

# Custom Java code for GLU class
IncludeAs CustomJavaCode GLUgl2 glu-CustomJavaCode-gl2.java
ManualStaticInitCall GLUgl2

# GLU needs access to the GLUtesselatorImpl class for GLUtesselator,
# to the Mipmap class for scaling and mipmap generation,
# and to the nurbs.* package for the NURBS functionality
Import com.jogamp.common.util.SecurityUtil
Import jogamp.opengl.glu.nurbs.*
Import java.security.*
Import com.jogamp.gluegen.runtime.opengl.GLProcAddressResolver
Import jogamp.opengl.glu.gl2.nurbs.*
Import jogamp.opengl.glu.mipmap.Mipmap
Import com.jogamp.opengl.GL2
Import jogamp.opengl.gl2.ProjectDouble

#
# ------------------------
#        Mipmape
# ------------------------
#
# Ignore the C versions of the mipmap code in the public interface and
# use GKW's Java port instead. The bindings to the C entry points are
# still being left in for now, but only for debugging purposes and the
# intent is to remove them in a future release.

# Emit these entry points as private

AccessControl gluBuild1DMipmapLevels PRIVATE
AccessControl gluBuild1DMipmaps      PRIVATE
AccessControl gluBuild2DMipmapLevels PRIVATE
AccessControl gluBuild2DMipmaps      PRIVATE
AccessControl gluBuild3DMipmapLevels PRIVATE
AccessControl gluBuild3DMipmaps      PRIVATE
AccessControl gluScaleImage          PRIVATE

# Rename these methods in the implementing class

DelegateImplementation gluBuild1DMipmapLevels gluBuild1DMipmapLevelsC
DelegateImplementation gluBuild1DMipmaps      gluBuild1DMipmapsC
DelegateImplementation gluBuild2DMipmapLevels gluBuild2DMipmapLevelsC
DelegateImplementation gluBuild2DMipmaps      gluBuild2DMipmapsC
DelegateImplementation gluBuild3DMipmapLevels gluBuild3DMipmapLevelsC
DelegateImplementation gluBuild3DMipmaps      gluBuild3DMipmapsC
DelegateImplementation gluScaleImage          gluScaleImageC

Include glu-common.cfg