diff options
Diffstat (limited to 'make/Makefile2')
-rw-r--r-- | make/Makefile2 | 822 |
1 files changed, 822 insertions, 0 deletions
diff --git a/make/Makefile2 b/make/Makefile2 new file mode 100644 index 000000000..e68cffa30 --- /dev/null +++ b/make/Makefile2 @@ -0,0 +1,822 @@ +# +# Copyright (c) 2003 Sun Microsystems, Inc. All Rights Reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are +# met: +# +# - Redistribution of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# - Redistribution in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in the +# documentation and/or other materials provided with the distribution. +# +# Neither the name of Sun Microsystems, Inc. or the names of +# contributors may be used to endorse or promote products derived from +# this software without specific prior written permission. +# +# This software is provided "AS IS," without a warranty of any kind. ALL +# EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, +# INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A +# PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN +# MIDROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL NOT BE LIABLE FOR +# ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR +# DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES. IN NO EVENT WILL SUN OR +# ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR +# DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE +# DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, +# ARISING OUT OF THE USE OF OR INABILITY TO USE THIS SOFTWARE, EVEN IF +# SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. +# +# You acknowledge that this software is not designed or intended for use +# in the design, construction, operation or maintenance of any nuclear +# facility. +# +# Sun gratefully acknowledges that this software was originally authored +# and developed by Kenneth Bradley Russell and Christopher John Kline. +# + + +# +# Note: the following environment variables must be set before invoking this Makefile: +# +# JAVA_HOME Root path to JDK (i.e., C:/jdk1.4) +# +# In addition, when building the win32 target you must choose your +# compiler by defining either VC7 or VC6. These can be set as +# environment variables, or you can define them on the command line +# (e.g., "make VC7=true win32") + +ROOT=.. +# Note: some of these directories are also coded into the .cfg files +SRC_DIR=$(ROOT)/src +BUILD_DIR=$(ROOT)/build +CLASSES_DIR=$(BUILD_DIR)/classes +GENSRC_DIR=$(BUILD_DIR)/gensrc +GENSRC_JAVA_DIR=$(GENSRC_DIR)/classes +GENSRC_NATIVE_DIR=$(GENSRC_DIR)/native +NATIVE_SRC_DIR=$(SRC_DIR)/native +JAVADOC_DIR=$(ROOT)/javadoc_public +JAVADOC_DIR_DEVDOC=$(ROOT)/javadoc_jogl_dev +JAVADOC_LINK=http://java.sun.com/j2se/1.4.1/docs/api/ +JAVA=java +JAVAC=javac + +OS:=$(patsubst CYGWIN%,Windows%,$(shell uname -s)) +ifneq (,$(findstring Windows,$(OS))) + CP_SEPARATOR=; +else + CP_SEPARATOR=: +endif + +#---------------------------------------------------------------------- +# GlueGen variables +# + +GLUEGEN_DIR=$(SRC_DIR)/net/java/games/gluegen +CGRAM_DIR =$(SRC_DIR)/net/java/games/gluegen/cgram +GENSRC_CGRAM_DIR =$(GENSRC_JAVA_DIR)/net/java/games/gluegen/cgram +PCPP_DIR =$(SRC_DIR)/net/java/games/gluegen/pcpp + +GG_GENERATED_JAVAFILES = \ + $(GENSRC_CGRAM_DIR)/StdCParser.java \ + $(GENSRC_CGRAM_DIR)/StdCLexer.java \ + $(GENSRC_CGRAM_DIR)/STDCTokenTypes.java \ + $(GENSRC_CGRAM_DIR)/GnuCParser.java \ + $(GENSRC_CGRAM_DIR)/GnuCLexer.java \ + $(GENSRC_CGRAM_DIR)/GnuCLexerTokenTypes.java \ + $(GENSRC_CGRAM_DIR)/GnuCTreeParser.java \ + $(GENSRC_CGRAM_DIR)/GnuCTreeParserTokenTypes.java \ + $(GENSRC_CGRAM_DIR)/GnuCEmitter.java \ + $(GENSRC_CGRAM_DIR)/GnuCEmitterTokenTypes.java \ + $(GENSRC_CGRAM_DIR)/GNUCTokenTypes.java \ + $(GENSRC_CGRAM_DIR)/HeaderParser.java \ + $(GENSRC_CGRAM_DIR)/HeaderParserTokenTypes.java + +GG_GENERATED_GFILES = \ + $(CGRAM_DIR)/expandedGnuCEmitter.g \ + $(CGRAM_DIR)/expandedGnuCParser.g \ + $(CGRAM_DIR)/expandedHeaderParser.g + +GG_GENERATED_TXTFILES = \ + $(CGRAM_DIR)/GNUCTokenTypes.txt \ + $(CGRAM_DIR)/GnuCTreeParserTokenTypes.txt \ + $(CGRAM_DIR)/GnuCEmitterTokenTypes.txt \ + $(CGRAM_DIR)/GnuCLexerTokenTypes.txt \ + $(CGRAM_DIR)/HeaderParserTokenTypes.txt \ + $(CGRAM_DIR)/STDCTokenTypes.txt + +GG_JAVAFILES = \ + $(CGRAM_DIR)/CSymbolTable.java \ + $(CGRAM_DIR)/CToken.java \ + $(CGRAM_DIR)/Define.java \ + $(CGRAM_DIR)/LineObject.java \ + $(CGRAM_DIR)/PreprocessorInfoChannel.java \ + $(CGRAM_DIR)/TNode.java \ + $(CGRAM_DIR)/TNodeFactory.java \ + $(CGRAM_DIR)/types/ArrayType.java \ + $(CGRAM_DIR)/types/BitType.java \ + $(CGRAM_DIR)/types/CVAttributes.java \ + $(CGRAM_DIR)/types/CompoundType.java \ + $(CGRAM_DIR)/types/CompoundTypeKind.java \ + $(CGRAM_DIR)/types/DoubleType.java \ + $(CGRAM_DIR)/types/EnumType.java \ + $(CGRAM_DIR)/types/Field.java \ + $(CGRAM_DIR)/types/FloatType.java \ + $(CGRAM_DIR)/types/FunctionSymbol.java \ + $(CGRAM_DIR)/types/FunctionType.java \ + $(CGRAM_DIR)/types/IntType.java \ + $(CGRAM_DIR)/types/MachineDescription.java \ + $(CGRAM_DIR)/types/MachineDescription32Bit.java \ + $(CGRAM_DIR)/types/PointerType.java \ + $(CGRAM_DIR)/types/PrimitiveType.java \ + $(CGRAM_DIR)/types/Type.java \ + $(CGRAM_DIR)/types/TypeDictionary.java \ + $(CGRAM_DIR)/types/TypeVisitor.java \ + $(CGRAM_DIR)/types/VoidType.java \ + $(PCPP_DIR)/PCPP.java \ + $(GLUEGEN_DIR)/CodeGenUtils.java \ + $(GLUEGEN_DIR)/CMethodBindingEmitter.java \ + $(GLUEGEN_DIR)/CMethodBindingImplEmitter.java \ + $(GLUEGEN_DIR)/CommentEmitter.java \ + $(GLUEGEN_DIR)/DebugEmitter.java \ + $(GLUEGEN_DIR)/FunctionEmitter.java \ + $(GLUEGEN_DIR)/GlueEmitter.java \ + $(GLUEGEN_DIR)/GlueEmitterControls.java \ + $(GLUEGEN_DIR)/GlueGen.java \ + $(GLUEGEN_DIR)/JavaConfiguration.java \ + $(GLUEGEN_DIR)/JavaEmitter.java \ + $(GLUEGEN_DIR)/JavaMethodBindingEmitter.java \ + $(GLUEGEN_DIR)/JavaMethodBindingImplEmitter.java \ + $(GLUEGEN_DIR)/JavaType.java \ + $(GLUEGEN_DIR)/MethodBinding.java \ + $(GLUEGEN_DIR)/ArrayTypes.java \ + $(GLUEGEN_DIR)/ReferencedStructs.java \ + $(GLUEGEN_DIR)/StructLayout.java \ + $(GLUEGEN_DIR)/TypeInfo.java \ + $(GLUEGEN_DIR)/runtime/BufferFactory.java \ + $(GLUEGEN_DIR)/runtime/StructAccessor.java \ + $(GLUEGEN_DIR)/opengl/ConvertFromGL4Java.java \ + $(GLUEGEN_DIR)/opengl/CGLPAWrapperEmitter.java \ + $(GLUEGEN_DIR)/opengl/GLEmitter.java \ + $(GLUEGEN_DIR)/opengl/JavaGLPAWrapperEmitter.java \ + $(GG_GENERATED_JAVAFILES) + +GG_CLASSFILES = $(patsubst $(GENSRC_JAVA_DIR)/%,$(CLASSES_DIR)/%,$(patsubst $(SRC_DIR)/%,$(CLASSES_DIR)/%,$(GG_JAVAFILES:.java=.class))) + + + +#---------------------------------------------------------------------- +# package-independent variables +# + +# The following variables must be set: +# +# JOGL_STUB_INCLUDES_DIR_PD The platform-dependent stub_includes dir for the current platform +# JOGL_STUB_INCLUDES_DIRS_PD List of the PD stub_includes dirs that need to be searched +# DSO_EXTENSION_PD File extension for dynamic link libraries (e.g., dll / so) +# JAVA_INCLUDE_PATH_PD Path to PD java includes, E.g., $(JAVA_HOME)/include/win32 +# JAVA_LIBRARY_PATH_PD Path to PD java libraries +# INCLUDE_PATH_ROOT_PD The base path to the PD OS include directory (i.e., "/usr/include") +# LIB_PATH_ROOT_PD The base path to the PD OS library directory (i.e., "/usr/lib") +# CC Name of the C compiler +# CFLAGS Flags to pass to the C compiler +# LINK Name of the C linker +# LINKFLAGS Flags to pass to the C linker + +JOGL_STUB_INCLUDES_DIR=stub_includes +JOGL_STUB_INCLUDES_DIR_WIN32=$(JOGL_STUB_INCLUDES_DIR)/win32 +JOGL_STUB_INCLUDES_DIR_X11=$(JOGL_STUB_INCLUDES_DIR)/x11 +JOGL_STUB_INCLUDES_DIR_MACOSX=$(JOGL_STUB_INCLUDES_DIR)/macosx + +JOGL_STUB_INCLUDES_WIN32 = \ + $(JOGL_STUB_INCLUDES_DIR_WIN32)/jni.h \ + $(JOGL_STUB_INCLUDES_DIR_WIN32)/jni_md.h \ + $(JOGL_STUB_INCLUDES_DIR_WIN32)/WINDOWS.H \ + $(JOGL_STUB_INCLUDES_DIR_WIN32)/WINGDI.H + +JOGL_STUB_INCLUDES_MACOSX = \ + $(JOGL_STUB_INCLUDES_DIR_MACOSX)/jni.h \ + $(JOGL_STUB_INCLUDES_DIR_MACOSX)/jni_md.h + +JOGL_STUB_INCLUDES_X11 = \ + $(JOGL_STUB_INCLUDES_DIR_X11)/jni.h \ + $(JOGL_STUB_INCLUDES_DIR_X11)/jni_md.h \ + $(JOGL_STUB_INCLUDES_DIR_X11)/X11/Intrinsic.h \ + $(JOGL_STUB_INCLUDES_DIR_X11)/X11/X.h \ + $(JOGL_STUB_INCLUDES_DIR_X11)/X11/Xlib.h \ + $(JOGL_STUB_INCLUDES_DIR_X11)/X11/Xutil.h + +JOGL_GLUEGEN_INCLUDES = $(patsubst %,-I%,$(JOGL_STUB_INCLUDES_DIRS_PD)) +JAVA_INCLUDE_PATH=$(JAVA_HOME)/include + +# make overly-complicated path to ../build/obj to avoid makefile warning about duplicate targets +OBJ_DIR = ../build/obj +DSO_DIR = ../build/obj + +# Package-independent Win32 settings +ifeq ($(MAKECMDGOALS),win32) +JOGL_STUB_INCLUDES_DIR_PD=$(JOGL_STUB_INCLUDES_DIR_WIN32) +JOGL_STUB_INCLUDES_DIRS_PD=$(JOGL_STUB_INCLUDES_DIR_WIN32) $(JOGL_STUB_INCLUDES_DIR_X11) +JAVA_INCLUDE_PATH_PD=$(JAVA_INCLUDE_PATH)/win32 +JAVA_LIBRARY_PATH_PD=$(JAVA_HOME)/lib + +# Visual C++ 6.0 compiler options +ifdef VC6 +ifdef DEBUG +OPTFLAGS=/MD /W3 /O2 /Ob1 /GF /Gy +# !!! FIXME: put in debug flags +DEBUGFLAGS= +else +OPTFLAGS=/MD /W3 /O2 /Ob1 /GF /Gy +DEBUGFLAGS= +endif # DEBUG +INCLUDE_PATH_ROOT_PD=C:/Program Files/Microsoft Visual Studio/VC98 +LIB_PATH_ROOT_PD=C:/Program Files/Microsoft Visual Studio/VC98 +# FIXME: is this VCPATHS variable correct for VC6? +VCPATHS=C:\Program Files\Common Files\Microsoft Shared\VSA\7.0\VsaEnv\; +endif # VC6 + +# Visual C++ 7.0 compiler options +ifdef VC7 +ifdef DEBUG +OPTFLAGS=/MDd /Yd /GS /RTCs /RTCu /RTCc /W3 /Od /GF /EHsc /Zi /GS /Gy /Wp64 +DEBUGFLAGS=/Zi +DEFINES=/D "_DEBUG" +else +OPTFLAGS=/MD /W3 /O2 /Ob1 /GF /EHsc /GS /Gy /Wp64 +DEBUGFLAGS=/D "NDEBUG" +DEFINES= +endif # DEBUG +INCLUDE_PATH_ROOT_PD=C:\Program Files\Microsoft Visual Studio .NET\Vc7 +LIB_PATH_ROOT_PD=C:\Program Files\Microsoft Visual Studio .NET\Vc7 +VCPATHS=C:\Program Files\Microsoft Visual Studio .NET\Vc7\bin\;C:\Program Files\Common Files\Microsoft Shared\VSA\7.0\VsaEnv\; +endif # VC7 + +DEFINES:=$(DEFINES) /D "WIN32" /D "_WINDOWS" /D "_USRDLL" /D "_MBCS" /D "_WINDLL" +INCLUDES=/I"$(INCLUDE_PATH_ROOT_PD)\PlatformSDK\Include" /I"$(INCLUDE_PATH_ROOT_PD)\include" /I"$(JAVA_INCLUDE_PATH)" /I"$(JAVA_INCLUDE_PATH_PD)" +CFLAGS=$(OPTFLAGS) $(DEBUGFLAGS) /nologo /TC +CC=cl.exe +OBJ_FILE_EXT=obj +LINK=link.exe +LINKFLAGS=/DLL /LIBPATH:"$(LIB_PATH_ROOT_PD)\PlatformSDK\lib" /LIBPATH:"$(LIB_PATH_ROOT_PD)\lib" /LIBPATH:"$(JAVA_LIBRARY_PATH_PD)" /INCREMENTAL:NO /NOLOGO /MACHINE:IX86 /OPT:REF /OPT:ICF /SUBSYSTEM:WINDOWS $(LINKFLAGS_DEBUG) +ifdef DEBUG +LINKFLAGS:=/DEBUG $(LINKFLAGS) +endif # DEBUG +DSO_EXTENSION_PD=dll + +# Export a specific path so that the C compiler and its libraries can be located +Path:=$(VCPATHS);$(Path) +export Path +endif # WIN32 + +# Package-independent macosx settings +ifeq ($(MAKECMDGOALS), macosx) +JOGL_STUB_INCLUDES_DIR_PD=$(JOGL_STUB_INCLUDES_DIR_MACOSX) +JOGL_STUB_INCLUDES_DIRS_PD=$(JOGL_STUB_INCLUDES_DIR_MACOSX) +JAVA_INCLUDE_PATH_PD=/System/Library/Frameworks/JavaVM.framework/Headers/ +INCLUDE_PATH_ROOT_PD=/usr/include +OS := macosx +JAVA_LIBRARY_PATH_PD=/System/Library/Frameworks/JavaVM.framework/Libraries +CC=gcc +ifdef DEBUG + OPTFLAGS=-g -Dmacosx +else + OPTFLAGS=-O2 -Dmacosx +endif +LINK=gcc +LINKFLAGS_DEBUG= +LINKFLAGS= +ifdef DEBUG + LINKFLAGS:=$(LINKFLAGS) -g +endif +LIB_PATH_ROOT_PD=/usr/lib +LINKFLAGS:=$(LINKFLAGS) -L$(LIB_PATH_ROOT_PD) -L$(JAVA_LIBRARY_PATH_PD) +DEFINES:=$(DEFINES) +INCLUDES=-I/System/Library/Frameworks/OpenGL.framework/Headers/ -I$(INCLUDE_PATH_ROOT_PD) -I"$(JAVA_INCLUDE_PATH)" -I"$(JAVA_INCLUDE_PATH_PD)" +CFLAGS=$(OPTFLAGS) $(DEBUGFLAGS) +OBJ_FILE_EXT=o +C_BUILD_OBJ_CMD=$(CC) -Dmacosx -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ +DSO_EXTENSION_PD=dylib +endif # macosx + +# Package-independent x11 settings +ifeq ($(MAKECMDGOALS), x11) +JOGL_STUB_INCLUDES_DIR_PD=$(JOGL_STUB_INCLUDES_DIR_X11) +JOGL_STUB_INCLUDES_DIRS_PD=$(JOGL_STUB_INCLUDES_DIR_X11) $(JOGL_STUB_INCLUDES_DIR_WIN32) +JAVA_INCLUDE_PATH_PD=$(JAVA_INCLUDE_PATH)/$(OS) +INCLUDE_PATH_ROOT_PD=/usr/include +ifeq ($(OS), Linux) + OS := linux + JAVA_LIBRARY_PATH_PD=$(JAVA_HOME)/jre/lib/i386 + CC=gcc + ifdef DEBUG + OPTFLAGS= + else + OPTFLAGS=-O2 + endif + LINK=gcc + LINKFLAGS_DEBUG= + LINKFLAGS=-shared + ifdef DEBUG + LINKFLAGS:=$(LINKFLAGS) -g + endif +endif # Linux +ifeq ($(OS), SunOS) + CPU := $(shell uname -p) + OS := solaris + JAVA_LIBRARY_PATH_PD=$(JAVA_HOME)/jre/lib/$(CPU) + CC=cc + DEFINES= + ifdef DEBUG + OPTFLAGS= + else + OPTFLAGS=-xO0 -KPIC + endif + LINK=cc + LINKFLAGS=-G + ifdef DEBUG + # !!! FIXME: is this correct debug flag for solaris? + LINKFLAGS:=$(LINKFLAGS) -g + endif +endif # Sun0S +LIB_PATH_ROOT_PD=/usr/lib +LINKFLAGS:=$(LINKFLAGS) -L$(LIB_PATH_ROOT_PD) -L$(JAVA_LIBRARY_PATH_PD) +DEFINES:=$(DEFINES) +INCLUDES=-I$(JOGL_STUB_INCLUDES_DIR_OPENGL) -I"$(JAVA_INCLUDE_PATH)" -I"$(JAVA_INCLUDE_PATH_PD)" +# -I$(INCLUDE_PATH_ROOT_PD) +CFLAGS=$(OPTFLAGS) $(DEBUGFLAGS) +OBJ_FILE_EXT=o +C_BUILD_OBJ_CMD=$(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ +DSO_PREFIX_PD=lib +DSO_EXTENSION_PD=so +endif # x11 + + + +# +#---------------------------------------------------------------------- + +#---------------------------------------------------------------------- +# jogl variables +# + +NATIVE_GL_SRC_DIR=$(SRC_DIR)/native/jogl +GENSRC_GL_NATIVE_DIR=$(GENSRC_NATIVE_DIR)/jogl + +JOGL_DIR=$(SRC_DIR)/net/java/games/jogl +JOGL_IMPL_DIR=$(SRC_DIR)/net/java/games/jogl/impl +JOGL_UTIL_DIR=$(SRC_DIR)/net/java/games/util +GENSRC_JOGL_DIR=$(GENSRC_JAVA_DIR)/net/java/games/jogl +GENSRC_JOGL_IMPL_DIR=$(GENSRC_JAVA_DIR)/net/java/games/jogl/impl + +JOGL_GLU_DIR=$(JOGL_DIR) +JOGL_GLU_IMPL_DIR=$(JOGL_IMPL_DIR) +GENSRC_JOGL_GLU_DIR=$(GENSRC_JOGL_DIR) +GENSRC_JOGL_GLU_IMPL_DIR=$(GENSRC_JOGL_IMPL_DIR) + +JOGL_STUB_INCLUDES_DIR_OPENGL=$(JOGL_STUB_INCLUDES_DIR)/opengl + +JOGL_OBJ_DIR = $(OBJ_DIR)/jogl +JOGL_DSO_DIR = $(DSO_DIR) +JOGL_DSO=$(JOGL_DSO_DIR)/$(DSO_PREFIX_PD)jogl.$(DSO_EXTENSION_PD) + +JOGL_JAVAFILES_WINDOWS = \ + $(JOGL_IMPL_DIR)/windows/WindowsGLContext.java \ + $(JOGL_IMPL_DIR)/windows/WindowsGLContextFactory.java \ + $(JOGL_IMPL_DIR)/windows/WindowsOnscreenGLContext.java \ + $(JOGL_IMPL_DIR)/windows/WindowsOffscreenGLContext.java \ + $(JOGL_IMPL_DIR)/windows/WindowsPbufferGLContext.java + +JOGL_GENERATED_JAVAFILES_WINDOWS = \ + $(GENSRC_JOGL_IMPL_DIR)/windows/BITMAPINFO.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/BITMAPINFOHEADER.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/JAWT_Win32DrawingSurfaceInfo.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/PIXELFORMATDESCRIPTOR.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/RGBQUAD.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/WGL.java \ + $(GENSRC_JOGL_IMPL_DIR)/windows/WindowsGLImpl.java + +JOGL_GENERATED_CFILES_WINDOWS = \ + $(GENSRC_GL_NATIVE_DIR)/WindowsGLImpl_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/WGL_JNI.c + +JOGL_JAVAFILES_X11 = \ + $(JOGL_IMPL_DIR)/x11/X11GLContext.java \ + $(JOGL_IMPL_DIR)/x11/X11GLContextFactory.java \ + $(JOGL_IMPL_DIR)/x11/X11OnscreenGLContext.java \ + $(JOGL_IMPL_DIR)/x11/X11OffscreenGLContext.java + +JOGL_GENERATED_JAVAFILES_X11 = \ + $(GENSRC_JOGL_IMPL_DIR)/x11/GLX.java \ + $(GENSRC_JOGL_IMPL_DIR)/x11/JAWT_X11DrawingSurfaceInfo.java \ + $(GENSRC_JOGL_IMPL_DIR)/x11/X11GLImpl.java + +JOGL_GENERATED_CFILES_X11 = \ + $(GENSRC_GL_NATIVE_DIR)/GLX_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/JAWT_X11DrawingSurfaceInfo_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/X11GLImpl_JNI.c + +JOGL_JAVAFILES_MACOSX = \ + $(JOGL_IMPL_DIR)/macosx/MacOSXGLContext.java +# $(JOGL_IMPL_DIR)/macosx/MacOSXGLContextFactory.java \ +# $(JOGL_IMPL_DIR)/macosx/MacOSXOnscreenGLContext.java \ +# $(JOGL_IMPL_DIR)/macosx/MacOSXOffscreenGLContext.java + +JOGL_GENERATED_JAVAFILES_MACOSX = \ + $(GENSRC_JOGL_IMPL_DIR)/macosx/MacOSXGL.java \ + $(GENSRC_JOGL_IMPL_DIR)/macosx/JAWT_MacOSXDrawingSurfaceInfo.java \ + $(GENSRC_JOGL_IMPL_DIR)/macosx/MacOSXGLImpl.java + +JOGL_GENERATED_CFILES_MACOSX = \ + $(GENSRC_GL_NATIVE_DIR)/MacOSXGL_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/MacOSXGLImpl_JNI.c +# $(GENSRC_GL_NATIVE_DIR)/JAWT_MacOSXDrawingSurfaceInfo_JNI.c + + +# The following variables must be set by in the appropriate +# platform-dependent (PD) section below: +# +# JOGL_STUB_INCLUDES_PD All of the files in the PD stub_includes dir +# (multiple directories are needed to pick up e.g. wglext.h +# and glxext.h on all platforms) +# JOGL_JAVAFILES_PD The platform-dependent Java files +# JOGL_GENERATED_JAVAFILES_PD The platform-dependent GlueGen-generated Java files +# JOGL_CFG Name of the gl.cfg file +# JOGL_IMPL_CFG Name of the gl-impl.cfg file +# JOGL_JAWT_CFG Name of the jawt.cfg file +# JOGL_WINDOW_SYSTEM_CFG Name of the e.g., gl-wgl-win32.cfg file which provides +# WGL, GLX, etc. extensions to GL +# JOGL_WINDOW_SYSTEM_CFG Name of the e.g., wingdi.cfg file which provides internal +# access to core routines in WGL, glX, etc. +# JOGL_GENERATED_CFILES_PD Names of platform-dependent .c files +# JOGL_OBJ_FILES Rule translating names of .c files to .o / .obj +# GL_DEFINES Symbol definitions to pass to the C compiler on the command line +# GL_INCLUDES Include files to pass to the C compiler on the command line +# GL_C_BUILD_OBJ_CMD Command to build an a object file from C source +# GL_LINKFLAGS Flags to pass to the linker on the command line +# GL_C_LINK_DSO_CMD Command to link the GL shared library + +# Win32-specific settings for jogl +ifeq ($(MAKECMDGOALS),win32) +JOGL_STUB_INCLUDES_PD=$(JOGL_STUB_INCLUDES_WIN32) +JOGL_JAVAFILES_PD=$(JOGL_JAVAFILES_WINDOWS) +JOGL_GENERATED_JAVAFILES_PD=$(JOGL_GENERATED_JAVAFILES_WINDOWS) +JOGL_CFG=gl-win32.cfg +JOGL_IMPL_CFG=gl-impl-win32.cfg +JOGL_GLU_CFG=glu.cfg +JOGL_GLU_IMPL_CFG=glu-impl-win32.cfg +JOGL_WINDOW_SYSTEM_CFG=gl-wgl-win32.cfg +JOGL_JAWT_CFG=jawt-win32.cfg +JOGL_WINDOW_SYSTEM_CFG=wingdi-win32.cfg +JOGL_GENERATED_CFILES_PD=$(JOGL_GENERATED_CFILES_WINDOWS) + +GL_DEFINES=/D "JOGL_EXPORTS" $(DEFINES) +GL_INCLUDES=/I"$(JOGL_STUB_INCLUDES_DIR_OPENGL)" $(INCLUDES) +GL_C_BUILD_OBJ_CMD=$(CC) /c $< $(CFLAGS) $(GL_INCLUDES) $(GL_DEFINES) /Fo"$@" +JOGL_DSO_LINK_ADDITIONAL_LIBS=opengl32.lib glu32.lib jawt.lib gdi32.lib +GL_LINKFLAGS=$(LINKFLAGS) $(JOGL_DSO_LINK_ADDITIONAL_LIBS) +GL_C_LINK_DSO_CMD=$(LINK) /OUT:"$@" $(GL_LINKFLAGS) +endif # WIN32 + +# X11-specific settings for jogl +ifeq ($(MAKECMDGOALS), x11) +ifeq ($(OS), Linux) +endif # Linux +ifeq ($(OS), SunOS) +endif # SunOS +JOGL_STUB_INCLUDES_PD=$(JOGL_STUB_INCLUDES_X11) +JOGL_JAVAFILES_PD=$(JOGL_JAVAFILES_X11) +JOGL_GENERATED_JAVAFILES_PD=$(JOGL_GENERATED_JAVAFILES_X11) +JOGL_CFG=gl-x11.cfg +JOGL_IMPL_CFG=gl-impl-x11.cfg +JOGL_GLU_CFG=glu.cfg +JOGL_GLU_IMPL_CFG=glu-impl-x11.cfg +JOGL_WINDOW_SYSTEM_CFG=gl-glx-x11.cfg +JOGL_JAWT_CFG=jawt-x11.cfg +JOGL_WINDOW_SYSTEM_CFG=glx-x11.cfg +JOGL_GENERATED_CFILES_PD=$(JOGL_GENERATED_CFILES_X11) + +GL_DEFINES=$(DEFINES) +GL_INCLUDES=-I$(JOGL_STUB_INCLUDES_DIR_OPENGL) -I"$(JAVA_INCLUDE_PATH)" -I"$(JAVA_INCLUDE_PATH_PD)" $(INCLUDES) +GL_C_BUILD_OBJ_CMD=$(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ +JOGL_DSO_LINK_ADDITIONAL_LIBS= -ljawt -lGL -lGLU +GL_LINKFLAGS=$(LINKFLAGS) $(JOGL_DSO_LINK_ADDITIONAL_LIBS) +GL_C_LINK_DSO_CMD=$(LINK) -o $@ $(GL_LINKFLAGS) +endif # X11 + + +# macosx-specific settings for jogl +ifeq ($(MAKECMDGOALS), macosx) +#this is part of the os +JAVA_HOME=/System/Library/Frameworks/JavaVM.framework/Home +#for apple we'll use something much closer to the apple supplied headers, for now anyway +JOGL_STUB_INCLUDES_DIR_OPENGL=$(JOGL_STUB_INCLUDES_DIR)/macosx + +JOGL_STUB_INCLUDES_PD=$(JOGL_STUB_INCLUDES_MACOSX) +JOGL_JAVAFILES_PD=$(JOGL_JAVAFILES_MACOSX) +JOGL_GENERATED_JAVAFILES_PD=$(JOGL_GENERATED_JAVAFILES_MACOSX) +JOGL_CFG=gl-macosx.cfg +JOGL_IMPL_CFG=gl-impl-macosx.cfg +JOGL_GLU_CFG=glu.cfg +JOGL_GLU_IMPL_CFG=glu-impl-macosx.cfg +JOGL_WINDOW_SYSTEM_CFG=gl-glx-macosx.cfg +JOGL_JAWT_CFG=jawt-macosx.cfg +JOGL_WINDOW_SYSTEM_CFG=glx-macosx.cfg +JOGL_GENERATED_CFILES_PD=$(JOGL_GENERATED_CFILES_MACOSX) + +GL_DEFINES=$(DEFINES) +GL_INCLUDES=-I$(JOGL_STUB_INCLUDES_DIR_OPENGL) -I"$(JAVA_INCLUDE_PATH)" -I"$(JAVA_INCLUDE_PATH_PD)" $(INCLUDES) +GL_C_BUILD_OBJ_CMD=$(CC) -c $(CFLAGS) $(INCLUDES) $(DEFINES) $< -o $@ +JOGL_DSO_LINK_ADDITIONAL_LIBS= -framework JavaVM -framework OpenGL +GL_LINKFLAGS=$(LINKFLAGS) $(JOGL_DSO_LINK_ADDITIONAL_LIBS) +GL_C_LINK_DSO_CMD=$(LINK) -bundle -o $@ $(GL_LINKFLAGS) +endif # macosx + +JOGL_CFG_FILES = $(wildcard gl*.cfg jawt*.cfg wingdi*.cfg ) + +JOGL_HEADERS = \ + $(JOGL_STUB_INCLUDES_DIR_OPENGL)/GL/gl.h \ + $(JOGL_STUB_INCLUDES_DIR_OPENGL)/GL/glext.h \ + $(JOGL_STUB_INCLUDES_DIR_OPENGL)/GL/glxext.h \ + $(JOGL_STUB_INCLUDES_DIR_OPENGL)/GL/wglext.h + +JOGL_GENERATED_JAVAFILES = \ + $(GENSRC_JOGL_DIR)/GL.java \ + $(GENSRC_JOGL_DIR)/WGL.java \ + $(GENSRC_JOGL_DIR)/GLX.java \ + $(GENSRC_JOGL_DIR)/XVisualInfo.java \ + $(GENSRC_JOGL_GLU_DIR)/GLU.java \ + $(GENSRC_JOGL_GLU_DIR)/GLUquadric.java \ + $(GENSRC_JOGL_GLU_IMPL_DIR)/GLUImpl.java \ + $(GENSRC_JOGL_IMPL_DIR)/JAWT.java \ + $(GENSRC_JOGL_IMPL_DIR)/JAWTFactory.java \ + $(GENSRC_JOGL_IMPL_DIR)/JAWT_DrawingSurface.java \ + $(GENSRC_JOGL_IMPL_DIR)/JAWT_DrawingSurfaceInfo.java \ + $(GENSRC_JOGL_IMPL_DIR)/JAWT_Rectangle.java \ + $(GENSRC_JOGL_IMPL_DIR)/ProcAddressTable.java \ + $(GENSRC_JOGL_IMPL_DIR)/StaticGLInfo.java \ + $(JOGL_GENERATED_JAVAFILES_PD) + +JOGL_JAVAFILES_FIRST_PASS = \ + $(JOGL_DIR)/Animator.java \ + $(JOGL_DIR)/ComponentEvents.java \ + $(JOGL_DIR)/DefaultGLCapabilitiesChooser.java \ + $(JOGL_DIR)/GLCanvas.java \ + $(JOGL_DIR)/GLCapabilities.java \ + $(JOGL_DIR)/GLCapabilitiesChooser.java \ + $(JOGL_DIR)/GLDrawable.java \ + $(JOGL_DIR)/GLDrawableFactory.java \ + $(JOGL_DIR)/GLEventListener.java \ + $(JOGL_DIR)/GLException.java \ + $(JOGL_DIR)/GLJPanel.java \ + $(JOGL_DIR)/GLPbuffer.java \ + $(JOGL_IMPL_DIR)/FunctionAvailabilityCache.java \ + $(JOGL_IMPL_DIR)/GLContext.java \ + $(JOGL_IMPL_DIR)/GLContextFactory.java \ + $(JOGL_IMPL_DIR)/GLDrawableHelper.java \ + $(JOGL_IMPL_DIR)/GLPbufferImpl.java \ + $(JOGL_IMPL_DIR)/JAWT_PlatformInfo.java \ + $(JOGL_IMPL_DIR)/NativeLibLoader.java \ + $(JOGL_UTIL_DIR)/BitmapCharRec.java \ + $(JOGL_UTIL_DIR)/BitmapFontRec.java \ + $(JOGL_UTIL_DIR)/BufferUtils.java \ + $(JOGL_UTIL_DIR)/CoordRec.java \ + $(JOGL_UTIL_DIR)/DDSReader.java \ + $(JOGL_UTIL_DIR)/DurationTimer.java \ + $(JOGL_UTIL_DIR)/DxTex.java \ + $(JOGL_UTIL_DIR)/GLUT.java \ + $(JOGL_UTIL_DIR)/GLUTBitmap8x13.java \ + $(JOGL_UTIL_DIR)/GLUTBitmap9x15.java \ + $(JOGL_UTIL_DIR)/GLUTBitmapHelvetica10.java \ + $(JOGL_UTIL_DIR)/GLUTBitmapHelvetica12.java \ + $(JOGL_UTIL_DIR)/GLUTBitmapHelvetica18.java \ + $(JOGL_UTIL_DIR)/GLUTBitmapTimesRoman10.java \ + $(JOGL_UTIL_DIR)/GLUTBitmapTimesRoman24.java \ + $(JOGL_UTIL_DIR)/GLUTStrokeMonoRoman.java \ + $(JOGL_UTIL_DIR)/GLUTStrokeRoman.java \ + $(JOGL_UTIL_DIR)/LEDataInputStream.java \ + $(JOGL_UTIL_DIR)/StrokeCharRec.java \ + $(JOGL_UTIL_DIR)/StrokeFontRec.java \ + $(JOGL_UTIL_DIR)/StrokeRec.java \ + $(JOGL_UTIL_DIR)/TGAImage.java \ + $(JOGL_JAVAFILES_PD) \ + $(JOGL_GENERATED_JAVAFILES) + + +JOGL_CLASSFILES_FIRST_PASS = $(patsubst $(GENSRC_JAVA_DIR)/%,$(CLASSES_DIR)/%,$(patsubst $(SRC_DIR)/%,$(CLASSES_DIR)/%,$(JOGL_JAVAFILES_FIRST_PASS:.java=.class))) + +BUILD_STATIC_GL_INFO_SRC =$(SRC_DIR)/net/java/games/gluegen/opengl/BuildStaticGLInfo.java +BUILD_STATIC_GL_INFO_CLASS=$(CLASSES_DIR)/net/java/games/gluegen/opengl/BuildStaticGLInfo.class + +BUILD_GL_COMPOSABLE_PIPELINE_SRC =$(SRC_DIR)/net/java/games/gluegen/opengl/BuildComposablePipeline.java +BUILD_GL_COMPOSABLE_PIPELINE_CLASS=$(CLASSES_DIR)/net/java/games/gluegen/opengl/BuildComposablePipeline.class + +GL_COMPOSABLE_PIPELINE_GENERATED_JAVAFILES=$(GENSRC_JOGL_DIR)/DebugGL.java $(GENSRC_JOGL_DIR)/TraceGL.java + +JOGL_JAVAFILES_SECOND_PASS= $(GL_COMPOSABLE_PIPELINE_GENERATED_JAVAFILES) +JOGL_CLASSFILES_SECOND_PASS=$(patsubst $(GENSRC_JAVA_DIR)/%,$(CLASSES_DIR)/%,$(patsubst $(SRC_DIR)/%,$(CLASSES_DIR)/%,$(JOGL_JAVAFILES_SECOND_PASS:.java=.class))) + +JOGL_CLASSFILES = $(JOGL_CLASSFILES_FIRST_PASS) $(JOGL_CLASSFILES_SECOND_PASS) + +JOGL_GENERATED_CFILES = \ + $(GENSRC_GL_NATIVE_DIR)/JAWT_DrawingSurface_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/JAWT_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/JAWTFactory_JNI.c \ + $(GENSRC_GL_NATIVE_DIR)/GLUImpl_JNI.c \ + $(JOGL_GENERATED_CFILES_PD) + +JOGL_CFILES = \ + $(NATIVE_GL_SRC_DIR)/JAWT_DrawingSurfaceInfo.c \ + $(JOGL_GENERATED_CFILES) + +JOGL_OBJ_FILES=$(patsubst $(GENSRC_GL_NATIVE_DIR)/%,$(JOGL_OBJ_DIR)/%,$(patsubst $(NATIVE_GL_SRC_DIR)/%,$(JOGL_OBJ_DIR)/%,$(JOGL_CFILES:.c=.$(OBJ_FILE_EXT)))) + +# +#---------------------------------------------------------------------- + +#---------------------------------------------------------------------- +# Rules +# + +OUTPUT_DIRS = $(OBJ_DIR) $(JOGL_OBJ_DIR) $(JOGL_DSO_DIR) $(GENSRC_JOGL_IMPL_DIR) $(GENSRC_GL_NATIVE_DIR) $(CLASSES_DIR) $(GENSRC_CGRAM_DIR) + +.PHONY: all clean doc devdoc +all: + @echo "********************************************************************************" + @echo "ERROR: You must specify a platform-specific target (win32, x11, etc.)" + @echo "********************************************************************************" + +doc: + mkdir -p $(JAVADOC_DIR) + javadoc -source 1.4 -d $(JAVADOC_DIR) -link $(JAVADOC_LINK) \ + -public -sourcepath "$(SRC_DIR)$(CP_SEPARATOR)$(GENSRC_JAVA_DIR)" \ + net.java.games.jogl \ + net.java.games.gluegen.runtime \ + net.java.games.util + +devdoc: + mkdir -p $(JAVADOC_DIR_DEVDOC) + javadoc -source 1.4 -d $(JAVADOC_DIR_DEVDOC) -link $(JAVADOC_LINK) \ + -package -sourcepath "$(SRC_DIR)$(CP_SEPARATOR)$(GENSRC_JAVA_DIR)" \ + net.java.games.jogl \ + net.java.games.jogl.impl \ + net.java.games.jogl.impl.x11 \ + net.java.games.jogl.impl.windows \ + net.java.games.jogl.impl.macosx \ + net.java.games.gluegen \ + net.java.games.gluegen.cgram \ + net.java.games.gluegen.cgram.types \ + net.java.games.gluegen.opengl \ + net.java.games.gluegen.pcpp \ + net.java.games.gluegen.runtime \ + net.java.games.util + +# (Iff we are not on macosx): print an error if the user has not set JAVA_HOME, since that will cause +# builds to fail +ifneq ($(JAVA_HOME),) + +win32: WIN32_COMPILER_SPECIFIED $(OUTPUT_DIRS) $(JOGL_CLASSFILES) $(JOGL_DSO) +x11: $(OUTPUT_DIRS) $(JOGL_CLASSFILES) $(JOGL_DSO) +macosx: $(OUTPUT_DIRS) $(JOGL_CLASSFILES) $(JOGL_DSO) + +gluegen: $(GG_CLASSFILES) +else +win32: MUST_SET_JAVA_HOME +x11: MUST_SET_JAVA_HOME +gluegen: MUST_SET_JAVA_HOME +macosx: MUST_SET_JAVA_HOME +MUST_SET_JAVA_HOME: + @echo "********************************************************************************" + @echo "ERROR: You must set the JAVA_HOME environment variable in order to build Jogl." + @echo "********************************************************************************" +endif + +ifdef VC7 +WIN32_COMPILER_SPECIFIED: + @echo "VC7 is defined, using Microsoft Visual C++ 7 compiler for native code." +else +ifdef VC6 +WIN32_COMPILER_SPECIFIED: + @echo "VC6 is defined, using Microsoft Visual C++ 6 compiler for native code." +else +WIN32_COMPILER_SPECIFIED: + @echo "********************************************************************************" + @echo "Must specific compiler for Win32 native code, either VC6 or VC7" + @echo "(e.g., \"make VC6=true win32\")." + @echo "********************************************************************************" + @exit 1 +endif +endif + +clean : + rm -rf $(BUILD_DIR) + rm -f $(GG_GENERATED_GFILES) + rm -f $(GG_GENERATED_TXTFILES) + rm -f $(GG_GENERATED_TXTFILES) + +# +# C parser and GlueGen build rules (requires ANTLR) +# +# Note: haven't been able to get ANTLR to put its output into a +# different directory than the current working directory. Instead we +# manually move the generated files into the gensrc dir for easy +# cleanup. +# + +$(GENSRC_CGRAM_DIR)/StdCParser.java $(GENSRC_CGRAM_DIR)/StdCLexer.java $(GENSRC_CGRAM_DIR)/STDCTokenTypes.java : $(CGRAM_DIR)/StdCParser.g + rm -f $@ + mkdir -p $(GENSRC_CGRAM_DIR) + cd $(CGRAM_DIR); $(JAVA) antlr.Tool StdCParser.g + mv -f $(CGRAM_DIR)/StdCParser.java $(CGRAM_DIR)/StdCLexer.java $(CGRAM_DIR)/STDCTokenTypes.java $(GENSRC_CGRAM_DIR) + +$(GENSRC_CGRAM_DIR)/GnuCParser.java $(GENSRC_CGRAM_DIR)/GnuCLexer.java $(GENSRC_CGRAM_DIR)/GnuCLexerTokenTypes.java $(GENSRC_CGRAM_DIR)/GNUCTokenTypes.java : $(CGRAM_DIR)/GnuCParser.g $(CGRAM_DIR)/StdCParser.g + rm -f $@ + mkdir -p $(GENSRC_CGRAM_DIR) + cd $(CGRAM_DIR); $(JAVA) antlr.Tool -glib "StdCParser.g" GnuCParser.g + mv -f $(CGRAM_DIR)/GnuCParser.java $(CGRAM_DIR)/GnuCLexer.java $(CGRAM_DIR)/GnuCLexerTokenTypes.java $(CGRAM_DIR)/GNUCTokenTypes.java $(GENSRC_CGRAM_DIR) + +$(GENSRC_CGRAM_DIR)/GnuCTreeParser.java $(GENSRC_CGRAM_DIR)/GnuCTreeParserTokenTypes.java : $(CGRAM_DIR)/GnuCTreeParser.g + rm -f $@ + mkdir -p $(GENSRC_CGRAM_DIR) + cd $(CGRAM_DIR); $(JAVA) antlr.Tool GnuCTreeParser.g + mv -f $(CGRAM_DIR)/GnuCTreeParser.java $(CGRAM_DIR)/GnuCTreeParserTokenTypes.java $(GENSRC_CGRAM_DIR) + +$(GENSRC_CGRAM_DIR)/GnuCEmitter.java $(GENSRC_CGRAM_DIR)/GnuCEmitterTokenTypes.java : $(CGRAM_DIR)/GnuCEmitter.g $(CGRAM_DIR)/GnuCTreeParser.g + rm -f $@ + mkdir -p $(GENSRC_CGRAM_DIR) + cd $(CGRAM_DIR); $(JAVA) antlr.Tool -glib "GnuCTreeParser.g" GnuCEmitter.g + mv -f $(CGRAM_DIR)/GnuCEmitter.java $(CGRAM_DIR)/GnuCEmitterTokenTypes.java $(GENSRC_CGRAM_DIR) + +$(GENSRC_CGRAM_DIR)/HeaderParser.java $(GENSRC_CGRAM_DIR)/HeaderParserTokenTypes.java : $(CGRAM_DIR)/HeaderParser.g $(CGRAM_DIR)/GnuCTreeParser.g + rm -f $@ + mkdir -p $(GENSRC_CGRAM_DIR) + cd $(CGRAM_DIR); $(JAVA) antlr.Tool -glib "GnuCTreeParser.g" HeaderParser.g + mv -f $(CGRAM_DIR)/HeaderParser.java $(CGRAM_DIR)/HeaderParserTokenTypes.java $(GENSRC_CGRAM_DIR) + +$(GG_CLASSFILES) : $(GG_JAVAFILES) + mkdir -p $(CLASSES_DIR) + $(JAVAC) -source 1.4 -d $(CLASSES_DIR) $(GG_JAVAFILES) + +# +# Jogl package build rules (once GlueGen is built) +# + + +$(BUILD_STATIC_GL_INFO_CLASS) : $(BUILD_STATIC_GL_INFO_SRC) + $(JAVAC) -source 1.4 -d $(CLASSES_DIR) $(BUILD_STATIC_GL_INFO_SRC) + +$(JOGL_GENERATED_JAVAFILES) $(JOGL_GENERATED_CFILES) : $(JOGL_STUB_INCLUDES_PD) $(JOGL_CFG_FILES) $(GG_CLASSFILES) $(BUILD_STATIC_GL_INFO_CLASS) $(JOGL_HEADERS) $(JOGL_STUB_INCLUDES_DIR_PD)/gl.c $(JOGL_STUB_INCLUDES_DIR_PD)/gl-impl.c $(JOGL_STUB_INCLUDES_DIR_PD)/window-system.c +# generate GL interface class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -C$(JOGL_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/gl.c +# generate GL implementation class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -C$(JOGL_IMPL_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/gl-impl.c +# generate WGL interface class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -Cgl-wgl-win32.cfg -I$(JOGL_STUB_INCLUDES_DIR_WIN32) -I$(JOGL_STUB_INCLUDES_DIR_X11) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_WIN32)/gl-impl.c +# generate GLX interface class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -Cgl-glx-x11.cfg -I$(JOGL_STUB_INCLUDES_DIR_X11) -I$(JOGL_STUB_INCLUDES_DIR_WIN32) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_X11)/gl-impl.c +# generate JAWT class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.JavaEmitter -C$(JOGL_JAWT_CFG) $(JOGL_GLUEGEN_INCLUDES) -I"$(JAVA_INCLUDE_PATH)" "$(JAVA_INCLUDE_PATH_PD)/jawt_md.h" +# generate WGL/GLX implementation class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.JavaEmitter -C$(JOGL_WINDOW_SYSTEM_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/window-system.c +# generate StaticGLInfo class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.opengl.BuildStaticGLInfo net.java.games.jogl.impl $(GENSRC_JOGL_IMPL_DIR) $(JOGL_HEADERS) +# generate GLU interface class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -C$(JOGL_GLU_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/glu.c +# generate GLU implementation class + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.GlueGen -Enet.java.games.gluegen.opengl.GLEmitter -C$(JOGL_GLU_IMPL_CFG) $(JOGL_GLUEGEN_INCLUDES) -I$(JOGL_STUB_INCLUDES_DIR_OPENGL) $(JOGL_STUB_INCLUDES_DIR_PD)/glu-impl.c + +$(JOGL_CLASSFILES_FIRST_PASS) : $(JOGL_JAVAFILES_FIRST_PASS) + mkdir -p $(CLASSES_DIR) + $(JAVAC) -source 1.4 -classpath "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" -d $(CLASSES_DIR) $(JOGL_JAVAFILES_FIRST_PASS) + +$(BUILD_GL_COMPOSABLE_PIPELINE_CLASS) : $(BUILD_GL_COMPOSABLE_PIPELINE_SRC) + $(JAVAC) -classpath "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" -source 1.4 -d $(CLASSES_DIR) $(BUILD_GL_COMPOSABLE_PIPELINE_SRC) + +$(GL_COMPOSABLE_PIPELINE_GENERATED_JAVAFILES) : $(JOGL_CLASSFILES_FIRST_PASS) $(BUILD_GL_COMPOSABLE_PIPELINE_CLASS) + $(JAVA) -cp "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" net.java.games.gluegen.opengl.BuildComposablePipeline net.java.games.jogl.GL $(GENSRC_JOGL_DIR) + +$(JOGL_CLASSFILES_SECOND_PASS) : $(JOGL_JAVAFILES_SECOND_PASS) + $(JAVAC) -source 1.4 -classpath "$(CLASSES_DIR)$(CP_SEPARATOR)$(CLASSPATH)" -d $(CLASSES_DIR) $(JOGL_JAVAFILES_SECOND_PASS) + +# +# .so / .dll build rules +# + +# Create the output directories +$(OUTPUT_DIRS): + mkdir -p $(OUTPUT_DIRS) + +# Build hand-coded jogl C code +$(JOGL_OBJ_DIR)/%.$(OBJ_FILE_EXT) : $(NATIVE_GL_SRC_DIR)/%.c + $(GL_C_BUILD_OBJ_CMD) + +# Build auto-generated jogl C code +$(JOGL_OBJ_DIR)/%.$(OBJ_FILE_EXT) : $(GENSRC_GL_NATIVE_DIR)/%.c + $(GL_C_BUILD_OBJ_CMD) + +# Build the jogl JNI dll +$(JOGL_DSO): $(JOGL_OBJ_FILES) + $(GL_C_LINK_DSO_CMD) $(JOGL_OBJ_FILES) + |