# Android port requires adding a version of these compatible with
# OpenGL ES (TODO):
IF(NOT ANDROID)
- LIST(APPEND FREEGLUT_SRCS
- src/fg_font.c
- src/fg_geometry.c
- src/fg_menu.c
- src/fg_teapot.c
+ LIST(APPEND FREEGLUT_SRCS
+ src/fg_font.c
+ src/fg_geometry.c
+ src/fg_menu.c
+ src/fg_teapot.c
)
ENDIF()
-IF(WIN32) # TODO: is this true for 64 bit as well? Chaneg to WINDOWS?
+IF(WIN32)
LIST(APPEND FREEGLUT_SRCS
- src/util/xparsegeometry_repl.c # TODO: instead of this, detect if function is available and include if not
- src/util/xparsegeometry_repl.h
src/mswin/fg_cursor_mswin.c
src/mswin/fg_display_mswin.c
src/mswin/fg_ext_mswin.c
src/mswin/fg_window_mswin.c
)
ELSEIF(ANDROID)
- LIST(APPEND FREEGLUT_SRCS
- src/util/xparsegeometry_repl.c
- src/util/xparsegeometry_repl.h
- src/egl/fg_internal_egl.h
- src/egl/fg_display_egl.c
- src/egl/fg_init_egl.c
- src/egl/fg_structure_egl.c
- src/egl/fg_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/fg_runtime_android.c
- src/android/fg_gamemode_android.c
- src/android/fg_input_devices_android.c
- src/android/fg_joystick_android.c
- src/android/fg_main_android.c
- src/android/fg_spaceball_android.c
- src/android/fg_state_android.c
- src/android/fg_window_android.c
- src/android/opengles_stubs.c
- src/android/fg_internal_android.h
+ LIST(APPEND FREEGLUT_SRCS
+ src/egl/fg_internal_egl.h
+ src/egl/fg_display_egl.c
+ src/egl/fg_init_egl.c
+ src/egl/fg_structure_egl.c
+ src/egl/fg_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/fg_runtime_android.c
+ src/android/fg_gamemode_android.c
+ src/android/fg_input_devices_android.c
+ src/android/fg_joystick_android.c
+ src/android/fg_main_android.c
+ src/android/fg_spaceball_android.c
+ src/android/fg_state_android.c
+ src/android/fg_window_android.c
+ src/android/opengles_stubs.c
+ src/android/fg_internal_android.h
)
ELSE()
LIST(APPEND FREEGLUT_SRCS
CHECK_FUNCTION_EXISTS(gettimeofday HAVE_GETTIMEOFDAY)
CHECK_FUNCTION_EXISTS(vfprintf HAVE_VFPRINTF)
CHECK_FUNCTION_EXISTS(_doprnt HAVE_DOPRNT)
+CHECK_FUNCTION_EXISTS(XParseGeometry HAVE_XPARSEGEOMETRY)
+IF (NOT HAVE_XPARSEGEOMETRY)
+ LIST(APPEND FREEGLUT_SRCS
+ src/util/xparsegeometry_repl.c
+ src/util/xparsegeometry_repl.h)
+ SET(NEED_XPARSEGEOMETRY_IMPL TRUE)
+ENDIF()
# 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)
+IF (NOT (HAVE_STDINT_H OR HAVE_INTTYPES_H))
+ IF (MSVC)
+ # Some old Microsoft VC don't support unsigned long long, but all we
+ # care about support unsigned __int64, so test for presence of that
+ # type
+ CHECK_TYPE_SIZE("unsigned __int64" U__INT64 BUILTIN_TYPES_ONLY)
+ ELSEIF()
+ CHECK_TYPE_SIZE("unsigned long long" ULONG_LONG BUILTIN_TYPES_ONLY)
+ ENDIF()
+ENDIF()
# The generated config.h is placed in the project's build directory, just to
IF(WIN32)
LIST(APPEND LIBS winmm)
IF(BUILD_SHARED_LIBS)
- LIST(APPEND FREEGLUT_SRCS src/Common/freeglutdll.def freeglut.rc)
- # XXX I assume that if we want both shared and static this one is appropriate
- ADD_DEFINITIONS(-DFREEGLUT_EXPORTS)
- ELSE()
- ADD_DEFINITIONS(-DFREEGLUT_STATIC)
+ LIST(APPEND FREEGLUT_SRCS freeglut.rc)
+ IF (NOT CMAKE_CL_64)
+ # .def file only for 32bit Windows builds
+ LIST(APPEND FREEGLUT_SRCS src/Common/freeglutdll.def)
+ ENDIF()
+ SET_TARGET_PROPERTIES(freeglut PROPERTIES COMPILE_FLAGS -DFREEGLUT_EXPORTS)
+ ENDIF()
+ IF(BUILD_STATIC_LIBS)
+ SET_TARGET_PROPERTIES(freeglut_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC)
ENDIF()
ELSE()
# on UNIX we need to make sure:
IF(BUILD_STATIC_LIBS)
ADD_EXECUTABLE(${name}_static ${ARGN})
TARGET_LINK_LIBRARIES(${name}_static ${DEMO_LIBS} freeglut_static)
+ SET_TARGET_PROPERTIES(${name}_static PROPERTIES COMPILE_FLAGS -DFREEGLUT_STATIC)
ENDIF()
ENDIF()
ENDMACRO()