1 cmake_minimum_required (VERSION 2.8)
5 include (FindPkgConfig)
6 include (CheckCCompilerFlag)
7 include (CheckSymbolExists)
9 find_package (OpenGL REQUIRED)
10 find_package (GLUT REQUIRED)
13 find_library (GLEW_glew_LIBRARY GLEW
17 find_path (GLEW_INCLUDE_DIR GL/glew.h
21 if (PKG_CONFIG_FOUND AND NOT WIN32)
22 pkg_check_modules (GLEW REQUIRED glew>=1.5.4)
23 pkg_check_modules (EGL egl)
24 pkg_check_modules (GLESV1 glesv1_cm)
25 pkg_check_modules (GLESV2 glesv2)
26 pkg_check_modules (VG vg)
29 # Check for FreeGLUT 2.6 or later
30 set (CMAKE_REQUIRED_INCLUDES "${GLUT_INCLUDE_DIR}")
31 set (CMAKE_REQUIRED_LIBRARIES "${GLUT_glut_LIBRARY}")
32 check_symbol_exists ("glutInitContextProfile" "GL/glut.h;GL/freeglut.h" HAVE_FREEGLUT)
34 add_definitions (-DHAVE_FREEGLUT)
41 # On Mac OS X, GLX is provided as a separate OpenGL implementation, different
42 # from the standard OpenGL framework which provides support for GLUT and native
43 # Mac OS X applications.
46 find_path (X11_GL_INCLUDE_PATH GL/glx.h ${X11_INC_SEARCH_PATH})
47 if (NOT X11_GL_INCLUDE_PATH)
48 message (WARNING "Could not find GL/glx.h")
50 endif (NOT X11_GL_INCLUDE_PATH)
51 set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${X11_GL_INCLUDE_PATH})
53 find_library (X11_GL_LIB GL ${X11_LIB_SEARCH_PATH})
55 message (WARNING "Could not find libGL.dylib")
57 endif (NOT X11_GL_LIB)
59 find_library (X11_GLU_LIB GLU ${X11_LIB_SEARCH_PATH})
61 message (WARNING "Could not find libGLU.dylib")
63 endif (NOT X11_GLU_LIB)
65 set (X11_INCLUDE_DIR ${X11_INCLUDE_DIR} ${OPENGL_INCLUDE_DIR})
66 set (X11_GL_LIB ${OPENGL_gl_LIBRARY})
67 set (X11_GLU_LIB ${OPENGL_glu_LIBRARY})
71 if (CMAKE_COMPILER_IS_GNUCC)
75 -Wmissing-declarations
77 #-Wold-style-definition
78 #-Wdeclaration-after-statement
80 set (CMAKE_C_FLAGS "-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Wbad-function-cast ${CMAKE_CXX_FLAGS}")
84 # Nobody likes to include windows.h:
85 # - Microsoft's GL/gl.h header depends on windows.h but doesn't include it;
86 # - GLEW temporarily defines the necessary defines but undefines them later
87 # - certain GLUT distributions don't include it;
88 # - most of our programs are meant to be portable so don't include it.
90 # We could try to replicate the windows.h definitions required by
91 # GL/gl.h, but the build time savings don't compensate the constant
92 # headaches that brings, so instead we force windows.h to be included
95 add_definitions (-FIwindows.h)
97 add_definitions (--include windows.h)
100 # Don't define min/max macros
101 add_definitions (-DNOMINMAX)
103 # MSVC & MinGW only define & use APIENTRY
104 add_definitions (-DGLAPIENTRY=__stdcall)
106 link_libraries (winmm)
110 # Enable math constants defines
111 add_definitions (-D_USE_MATH_DEFINES)
113 # Silence several MSVC pedantic warnings
114 add_definitions (-D_CRT_SECURE_NO_DEPRECATE -D_CRT_SECURE_NO_WARNINGS -D_CRT_NONSTDC_NO_WARNINGS)
115 add_definitions (-D_SCL_SECURE_NO_DEPRECATE -D_SCL_SECURE_NO_WARNINGS)
116 add_definitions (-wd4244) # conversion' conversion from 'type1' to 'type2', possible loss of data
119 # http://www.cmake.org/Wiki/CMake_FAQ#How_can_I_build_my_MSVC_application_with_a_static_runtime.3F
121 CMAKE_C_FLAGS CMAKE_C_FLAGS_DEBUG CMAKE_C_FLAGS_RELEASE CMAKE_C_FLAGS_MINSIZEREL CMAKE_C_FLAGS_RELWITHDEBINFO
122 CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO
124 if (${flag_var} MATCHES "/MD")
125 string (REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}")
127 endforeach (flag_var)
131 # Avoid depending on MinGW runtime DLLs
132 check_c_compiler_flag (-static-libgcc HAVE_STATIC_LIBGCC_FLAG)
133 if (HAVE_STATIC_LIBGCC_FLAG)
134 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libgcc")
135 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libgcc")
136 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -static-libgcc")
138 check_c_compiler_flag (-static-libstdc++ HAVE_STATIC_LIBSTDCXX_FLAG)
139 if (HAVE_STATIC_LIBSTDCXX_FLAG)
140 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static-libstdc++")
141 set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -static-libstdc++")
142 set (CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -static-libstdc++")
147 # Silence deprecated function warnings (we rely on GLUT which is now
148 # declared as deprecated)
149 add_definitions (-Wno-deprecated-declarations)
152 add_definitions(-DDEMOS_DATA_DIR=\"../data/\")
154 if (BUILD_SHARED_LIBS AND NOT DEFINED LIBDIR)
156 endif (BUILD_SHARED_LIBS AND NOT DEFINED LIBDIR)
158 add_subdirectory (src)
161 install (FILES index.html DESTINATION doc)
163 set (CPACK_PACKAGE_NAME "mesa-demos")
164 set (CPACK_PACKAGE_VERSION_MAJOR "8")
165 set (CPACK_PACKAGE_VERSION_MINOR "3")
166 set (CPACK_PACKAGE_VERSION_PATCH "0")
169 set (CPACK_GENERATOR "ZIP")
171 set (CPACK_GENERATOR "DragNDrop")
172 set (CPACK_DMG_FORMAT "UDBZ")
174 set (CPACK_GENERATOR "TBZ2")