X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?a=blobdiff_plain;f=CMakeLists.txt;h=f422a9be082a68aa16584b3bd063f7d15a755f30;hb=10c607f811d3733b613dba152c268729e79dcf03;hp=e74b37dfb62c17ba6b2afc2acf1408c8afaa4349;hpb=e3cb6e468176e397c2efaa521a04956ebcc9c108;p=freeglut diff --git a/CMakeLists.txt b/CMakeLists.txt index e74b37d..f422a9b 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,13 +27,24 @@ 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 + src/Common/xparsegeometry_repl.c + src/Common/xparsegeometry_repl.h src/mswin/freeglut_cursor_mswin.c src/mswin/freeglut_display_mswin.c src/mswin/freeglut_ext_mswin.c @@ -52,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 @@ -84,17 +114,33 @@ 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(${CMAKE_SOURCE_DIR}/include ${OPENGL_INCLUDE_DIR}) -LIST(APPEND LIBS ${OPENGL_gl_LIBRARY}) -LIST(APPEND LIBS m) +# 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) + LIST(APPEND LIBS m) +ENDIF() IF(WIN32) MESSAGE(WARNING "Insecure CRT warnings hidden (might want to fix these)") 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) @@ -130,7 +176,7 @@ CHECK_FUNCTION_EXISTS(_doprnt HAVE_DOPRNT) # ensure that all CMake-generated files are kept away from the main source tree. # As a result, the build directory must to be added to the include path list. CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/config.h.in ${CMAKE_BINARY_DIR}/config.h) -INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR}) +INCLUDE_DIRECTORIES(${CMAKE_BINARY_DIR} ${CMAKE_SOURCE_DIR}/include ${CMAKE_SOURCE_DIR}/src) ADD_DEFINITIONS(-DHAVE_CONFIG_H) # by default, at least on UNIX, we want to build both @@ -153,16 +199,36 @@ 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 + # 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}) +ENDIF() +IF(BUILD_STATIC_LIBS) + TARGET_LINK_LIBRARIES(freeglut_static ${LIBS}) ENDIF() -TARGET_LINK_LIBRARIES(freeglut ${LIBS}) -TARGET_LINK_LIBRARIES(freeglut_static ${LIBS}) IF(BUILD_SHARED_LIBS) INSTALL(TARGETS freeglut DESTINATION lib) @@ -178,17 +244,22 @@ INSTALL(FILES ${FREEGLUT_HEADERS} DESTINATION include/GL) option( FREEGLUT_BUILD_DEMOS "Build FreeGLUT demos." ON ) SET(DEMO_LIBS ${OPENGL_glu_LIBRARY} ${LIBS}) -LIST(APPEND DEMO_LIBS m) +# lib m for math, not needed on windows +IF (NOT WIN32) + LIST(APPEND DEMO_LIBS m) +ENDIF() MACRO(ADD_DEMO name) - if( FREEGLUT_BUILD_DEMOS ) - ADD_EXECUTABLE(${name} ${ARGN}) - IF(BUILD_SHARED_LIBS) - TARGET_LINK_LIBRARIES(${name} ${DEMO_LIBS} freeglut) - ELSE() - TARGET_LINK_LIBRARIES(${name} ${DEMO_LIBS} freeglut_static) - ENDIF() - endif() + IF( FREEGLUT_BUILD_DEMOS ) + IF(BUILD_SHARED_LIBS) + ADD_EXECUTABLE(${name} ${ARGN}) + TARGET_LINK_LIBRARIES(${name} ${DEMO_LIBS} freeglut) + ENDIF() + IF(BUILD_STATIC_LIBS) + ADD_EXECUTABLE(${name}_static ${ARGN}) + TARGET_LINK_LIBRARIES(${name}_static ${DEMO_LIBS} freeglut_static) + ENDIF() + ENDIF() ENDMACRO() ADD_DEMO(CallbackMaker progs/demos/CallbackMaker/CallbackMaker.c) @@ -203,5 +274,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)