X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=CMakeLists.txt;h=808b8c0c9df54ac59729fffeb90d8dafe0642444;hb=01831828f8db55da9d8a48ccae922f8caca8449f;hp=4f28280ba5b23ca74073defd70f016dd471c8825;hpb=94f74066a775daea60fd2d26e9fd02b313ff1977;p=freeglut diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f28280..808b8c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,16 +13,13 @@ SET(FREEGLUT_SRCS src/Common/freeglut_cursor.c src/Common/freeglut_display.c src/Common/freeglut_ext.c - src/Common/freeglut_font.c src/Common/freeglut_font_data.c src/Common/freeglut_gamemode.c - src/Common/freeglut_geometry.c src/Common/freeglut_init.c src/Common/freeglut_internal.h src/Common/freeglut_input_devices.c src/Common/freeglut_joystick.c src/Common/freeglut_main.c - src/Common/freeglut_menu.c src/Common/freeglut_misc.c src/Common/freeglut_overlay.c src/Common/freeglut_spaceball.c @@ -30,10 +27,19 @@ SET(FREEGLUT_SRCS src/Common/freeglut_stroke_mono_roman.c src/Common/freeglut_stroke_roman.c src/Common/freeglut_structure.c - src/Common/freeglut_teapot.c src/Common/freeglut_videoresize.c src/Common/freeglut_window.c ) +# Android port requires adding a version of these compatible with +# OpenGL ES (TODO): +IF(NOT ANDROID) + LIST(APPEND FREEGLUT_SRCS + src/Common/freeglut_font.c + src/Common/freeglut_geometry.c + src/Common/freeglut_menu.c + src/Common/freeglut_teapot.c +) +ENDIF() IF(WIN32) LIST(APPEND FREEGLUT_SRCS @@ -54,6 +60,28 @@ IF(WIN32) src/mswin/freeglut_structure_mswin.c src/mswin/freeglut_window_mswin.c ) +ELSEIF(ANDROID) + LIST(APPEND FREEGLUT_SRCS + src/Common/xparsegeometry_repl.c + src/Common/xparsegeometry_repl.h + src/egl/freeglut_internal_egl.h + src/egl/freeglut_display_egl.c + src/egl/freeglut_init_egl.c + src/egl/freeglut_structure_egl.c + src/egl/freeglut_window_egl.c + src/android/native_app_glue/android_native_app_glue.c + src/android/native_app_glue/android_native_app_glue.h + src/android/freeglut_runtime_android.c + src/android/freeglut_gamemode_android.c + src/android/freeglut_input_devices_android.c + src/android/freeglut_joystick_android.c + src/android/freeglut_main_android.c + src/android/freeglut_spaceball_android.c + src/android/freeglut_state_android.c + src/android/freeglut_window_android.c + src/android/opengles_stubs.c + src/android/freeglut_internal_android.h +) ELSE() LIST(APPEND FREEGLUT_SRCS src/x11/freeglut_cursor_x11.c @@ -86,9 +114,21 @@ SET(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/lib) OPTION(BUILD_SHARED_LIBS "Build FreeGLUT shared library." ON) OPTION(BUILD_STATIC_LIBS "Build FreeGLUT static library." ON) -FIND_PACKAGE(OpenGL REQUIRED) -INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) -LIST(APPEND LIBS ${OPENGL_gl_LIBRARY}) +# OpenGL ES support +OPTION(FREEGLUT_GLES1 "Use OpenGL ES 1.x (requires EGL)" OFF) +OPTION(FREEGLUT_GLES2 "Use OpenGL ES 2.x (requires EGL) (overrides BUILD_GLES1)" OFF) + +IF(FREEGLUT_GLES2) + ADD_DEFINITIONS(-DGLESv2) + LIST(APPEND LIBS GLESv2 EGL) +ELSEIF(FREEGLUT_GLES1) + ADD_DEFINITIONS(-DGLESv1) + LIST(APPEND LIBS GLESv1 EGL) +ELSE() + FIND_PACKAGE(OpenGL REQUIRED) + LIST(APPEND LIBS ${OPENGL_gl_LIBRARY}) + INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR}) +ENDIF() # lib m for math, not needed on windows IF (NOT WIN32) @@ -100,7 +140,7 @@ IF(WIN32) ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS) ENDIF() -if(UNIX) +if(UNIX AND NOT ANDROID) FIND_PACKAGE(X11 REQUIRED) LIST(APPEND LIBS ${X11_LIBRARIES}) IF(X11_Xrandr_FOUND) @@ -159,13 +199,27 @@ IF(WIN32) ENDIF() ELSE() # on UNIX we need to make sure: - # - all shared libraries must have a soname/version + # - all shared libraries must have a soname/version (see + # http://sourceware.org/autobook/autobook/autobook_91.html#SEC91) # - the output library should be named glut so it'll be linkable with -lglut # - the shared library should link to the dependency libraries so that the user # won't have to link them explicitly (they shouldn't have to know that we depend # on Xrandr or Xxf86vm) SET_TARGET_PROPERTIES(freeglut PROPERTIES VERSION 3.9.0 SOVERSION 3 OUTPUT_NAME glut) SET_TARGET_PROPERTIES(freeglut_static PROPERTIES OUTPUT_NAME glut) + IF(ANDROID) + # Not in CMake toolchain file, because the toolchain + # file is called several times and generally doesn't + # seem to be meant for it: + # '-mandroid' is not mandatory but doesn't hurt + # '-O0 -gstabs+' helps the currently buggy GDB port + # '-DANDROID' is the Android build system convention + # Too late to manipulate ENV: SET(ENV{CFLAGS} "$ENV{CFLAGS} -mandroid") + # Not using _INIT variables, they seem to be used internally only + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mandroid") + SET(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -O0 -gstabs+") + ADD_DEFINITIONS(-DANDROID) + ENDIF() ENDIF() IF(BUILD_SHARED_LIBS) TARGET_LINK_LIBRARIES(freeglut ${LIBS}) @@ -218,5 +272,4 @@ ADD_DEMO(spaceball progs/demos/spaceball/spaceball.c progs/demos/spaceball/vmath.c progs/demos/spaceball/vmath.h) ADD_DEMO(subwin progs/demos/subwin/subwin.c) - - +ADD_DEMO(timer progs/demos/timer/timer.c)