timers internally now use 64bit unsigned int, if available
[freeglut] / CMakeLists.txt
index ef47269..8b9d568 100644 (file)
@@ -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
@@ -131,6 +159,7 @@ ENDIF()
 
 INCLUDE(CheckIncludeFiles)
 INCLUDE(CheckFunctionExists)
+INCLUDE(CheckTypeSize)
 CHECK_INCLUDE_FILES(sys/types.h HAVE_SYS_TYPES_H)
 CHECK_INCLUDE_FILES(unistd.h   HAVE_UNISTD_H)
 CHECK_INCLUDE_FILES(sys/time.h         HAVE_SYS_TIME_H)
@@ -141,8 +170,13 @@ CHECK_INCLUDE_FILES(fcntl.h        HAVE_FCNTL_H)
 CHECK_INCLUDE_FILES(errno.h    HAVE_ERRNO_H)
 CHECK_INCLUDE_FILES(usbhid.h   HAVE_USBHID_H)
 CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
-CHECK_FUNCTION_EXISTS(vfprintf HAVE_VFPRINTF)
-CHECK_FUNCTION_EXISTS(_doprnt HAVE_DOPRNT)
+CHECK_FUNCTION_EXISTS(vfprintf  HAVE_VFPRINTF)
+CHECK_FUNCTION_EXISTS(_doprnt   HAVE_DOPRNT)
+# decide on suitable type for internal time keeping, 64-bit if possible
+CHECK_INCLUDE_FILES(stdint.h    HAVE_STDINT_H)
+CHECK_INCLUDE_FILES(inttypes.h  HAVE_INTTYPES_H)
+CHECK_TYPE_SIZE("unsigned long long" ULONG_LONG BUILTIN_TYPES_ONLY)
+
 
 # The generated config.h is placed in the project's build directory, just to
 # ensure that all CMake-generated files are kept away from the main source tree.
@@ -171,14 +205,29 @@ IF(WIN32)
        ENDIF()
 ELSE()
        # on UNIX we need to make sure:
-       # - all shared libraries must have a soname/version (see
-    #   http://sourceware.org/autobook/autobook/autobook_91.html#SEC91)
+       # - all shared libraries must have a soname/version, see :
+       #   http://sourceware.org/autobook/autobook/autobook_91.html#SEC91
+       #   http://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
+       #   Current: -version-info 12:0:9 -> 3.9.0
        # - 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})