X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=CMakeLists.txt;h=8b9d5683d038e2720255e0ffd73d163efb1845f6;hb=1ede9f68f98e29ddd07bd466310967e716bfac92;hp=ef47269f90541cc4c25e9ab0b8230d1a0cc3b54e;hpb=34341a920ad13daebb2d71a003509984386246eb;p=freeglut diff --git a/CMakeLists.txt b/CMakeLists.txt index ef47269..8b9d568 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 @@ -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})