fix build for linux
partial impl for GPU on linux (need getProcAddress and SkEGLContext)
git-svn-id: http://skia.googlecode.com/svn/trunk@661 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/Makefile b/Makefile
index 0537fe3..b0cfea5 100644
--- a/Makefile
+++ b/Makefile
@@ -81,7 +81,7 @@
# CC := gcc-4.0 $(SDK_OPTS)
C_INCLUDES += -I/opt/local/include
- LINKER_OPTS += -L/opt/local/lib -framework Carbon -lpng12
+ LINKER_OPTS += -L/opt/local/lib -framework Carbon -lpng12 -framework OpenGL -framework AGL
DEFINES += -DSK_BUILD_FOR_MAC -DSK_ENABLE_LIBPNG
C_INCLUDES += -Iinclude/utils/mac
@@ -97,8 +97,8 @@
# support files
SRC_LIST += src/images/SkScaledBitmapSampler.cpp
else
- LINKER_OPTS += -lpng -lfreetype
- DEFINES += -DSK_BUILD_FOR_UNIX -DSK_ENABLE_LIBPNG
+ LINKER_OPTS += -lpng -lfreetype -lGL
+ DEFINES += -DSK_BUILD_FOR_UNIX -DSK_ENABLE_LIBPNG -DGR_LINUX_BUILD=1
# needed for freetype support
C_INCLUDES += -I/usr/include/freetype2
@@ -107,6 +107,7 @@
SRC_LIST += src/ports/SkFontHost_FreeType.cpp
SRC_LIST += src/ports/SkFontHost_FreeType_Subpixel.cpp
SRC_LIST += src/utils/SkOSFile.cpp
+ SRC_LIST += src/utils/SkEGLContext_none.cpp
# these are our registry-based factories
SRC_LIST += src/images/SkImageDecoder_Factory.cpp
SRC_LIST += src/images/SkImageEncoder_Factory.cpp
@@ -221,7 +222,7 @@
gm: $(GM_OBJS) out/libskia.a
@echo "linking gm..."
- $(HIDE)$(GPP) $(GM_OBJS) out/libskia.a -o out/gm/gm -framework OpenGL -framework AGL $(LINKER_OPTS)
+ $(HIDE)$(GPP) $(GM_OBJS) out/libskia.a -o out/gm/gm $(LINKER_OPTS)
SAMPLEPDF_SRCS := samplepdf.cpp
diff --git a/gm/gmmain.cpp b/gm/gmmain.cpp
index 17ed8e4..e406c79 100644
--- a/gm/gmmain.cpp
+++ b/gm/gmmain.cpp
@@ -218,9 +218,11 @@
}
// setup a GL context for drawing offscreen
+ GrContext* context = NULL;
SkEGLContext eglContext;
- eglContext.init(1024, 1024);
- GrContext* context = GrContext::CreateGLShaderContext();
+ if (eglContext.init(1024, 1024)) {
+ context = GrContext::CreateGLShaderContext();
+ }
Iter iter;
GM* gm;
@@ -244,6 +246,9 @@
SkCanvas canvas(bitmap);
if (gRec[i].fUseGPU) {
+ if (NULL == context) {
+ continue;
+ }
SkGpuCanvas gc(context);
gc.setDevice(gc.createDevice(bitmap.config(), bitmap.width(), bitmap.height(),
bitmap.isOpaque(), false))->unref();
diff --git a/gpu/include/GrGLConfig.h b/gpu/include/GrGLConfig.h
index 90763ab..7fab1b5 100644
--- a/gpu/include/GrGLConfig.h
+++ b/gpu/include/GrGLConfig.h
@@ -50,10 +50,12 @@
#ifndef GL_GLEXT_PROTOTYPES
#define GL_GLEXT_PROTOTYPES
#endif
- #define GR_INCLUDE_GLES1 <GLES/gl.h>
- #define GR_INCLUDE_GLES1ext <GLES/glext.h>
- #define GR_INCLUDE_GLES2 <GLES2/gl2.h>
- #define GR_INCLUDE_GLES2ext <GLES2/gl2ext.h>
+ #define GR_INCLUDE_GLDESKTOP <GL/gl.h>
+ #define GR_INCLUDE_GLDESKTOPext <GL/glext.h>
+// #define GR_INCLUDE_GLES1 <GLES/gl.h>
+// #define GR_INCLUDE_GLES1ext <GLES/glext.h>
+// #define GR_INCLUDE_GLES2 <GLES2/gl2.h>
+// #define GR_INCLUDE_GLES2ext <GLES2/gl2ext.h>
#define GR_GL_FUNC
#elif GR_QNX_BUILD
#ifndef GL_GLEXT_PROTOTYPES
diff --git a/gpu/src/GrGpuGL.cpp b/gpu/src/GrGpuGL.cpp
index 5198dbb..ebd0d03 100644
--- a/gpu/src/GrGpuGL.cpp
+++ b/gpu/src/GrGpuGL.cpp
@@ -1721,9 +1721,9 @@
*address = eglGetProcAddress(procName);
GrAssert(NULL != *address);
#elif GR_LINUX_BUILD
- GR_STATIC_ASSERT(!"Add environment-dependent implementation here");
+// GR_STATIC_ASSERT(!"Add environment-dependent implementation here");
//*address = glXGetProcAddressARB(procName);
- //*address = eglGetProcAddress(procName);
+ *address = NULL;//eglGetProcAddress(procName);
#elif GR_QNX_BUILD
*address = eglGetProcAddress(procName);
GrAssert(NULL != *address);
diff --git a/src/utils/SkEGLContext_none.cpp b/src/utils/SkEGLContext_none.cpp
new file mode 100644
index 0000000..1c55c95
--- /dev/null
+++ b/src/utils/SkEGLContext_none.cpp
@@ -0,0 +1,11 @@
+#include "SkEGLContext.h"
+
+SkEGLContext::SkEGLContext() : fContext(NULL) {
+}
+
+SkEGLContext::~SkEGLContext() {
+}
+
+bool SkEGLContext::init(int width, int height) {
+ return false;
+}