CMakeLists.txt 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. link_libraries(glfw)
  2. include_directories("${GLFW_SOURCE_DIR}/deps")
  3. if (MATH_LIBRARY)
  4. link_libraries("${MATH_LIBRARY}")
  5. endif()
  6. # Workaround for the MS CRT deprecating parts of the standard library
  7. if (MSVC OR CMAKE_C_SIMULATE_ID STREQUAL "MSVC")
  8. add_definitions(-D_CRT_SECURE_NO_WARNINGS)
  9. endif()
  10. set(GLAD_GL "${GLFW_SOURCE_DIR}/deps/glad/gl.h"
  11. "${GLFW_SOURCE_DIR}/deps/glad_gl.c")
  12. set(GLAD_VULKAN "${GLFW_SOURCE_DIR}/deps/glad/vulkan.h"
  13. "${GLFW_SOURCE_DIR}/deps/glad_vulkan.c")
  14. set(GETOPT "${GLFW_SOURCE_DIR}/deps/getopt.h"
  15. "${GLFW_SOURCE_DIR}/deps/getopt.c")
  16. set(TINYCTHREAD "${GLFW_SOURCE_DIR}/deps/tinycthread.h"
  17. "${GLFW_SOURCE_DIR}/deps/tinycthread.c")
  18. if (${CMAKE_VERSION} VERSION_EQUAL "3.1.0" OR
  19. ${CMAKE_VERSION} VERSION_GREATER "3.1.0")
  20. set(CMAKE_C_STANDARD 99)
  21. else()
  22. # Remove this fallback when removing support for CMake version less than 3.1
  23. add_compile_options("$<$<C_COMPILER_ID:AppleClang>:-std=c99>"
  24. "$<$<C_COMPILER_ID:Clang>:-std=c99>"
  25. "$<$<C_COMPILER_ID:GNU>:-std=c99>")
  26. endif()
  27. add_executable(clipboard clipboard.c ${GETOPT} ${GLAD_GL})
  28. add_executable(events events.c ${GETOPT} ${GLAD_GL})
  29. add_executable(msaa msaa.c ${GETOPT} ${GLAD_GL})
  30. add_executable(glfwinfo glfwinfo.c ${GETOPT} ${GLAD_GL} ${GLAD_VULKAN})
  31. add_executable(iconify iconify.c ${GETOPT} ${GLAD_GL})
  32. add_executable(monitors monitors.c ${GETOPT} ${GLAD_GL})
  33. add_executable(reopen reopen.c ${GLAD_GL})
  34. add_executable(cursor cursor.c ${GLAD_GL})
  35. add_executable(empty WIN32 MACOSX_BUNDLE empty.c ${TINYCTHREAD} ${GLAD_GL})
  36. add_executable(gamma WIN32 MACOSX_BUNDLE gamma.c ${GLAD_GL})
  37. add_executable(icon WIN32 MACOSX_BUNDLE icon.c ${GLAD_GL})
  38. add_executable(inputlag WIN32 MACOSX_BUNDLE inputlag.c ${GETOPT} ${GLAD_GL})
  39. add_executable(joysticks WIN32 MACOSX_BUNDLE joysticks.c ${GLAD_GL})
  40. add_executable(opacity WIN32 MACOSX_BUNDLE opacity.c ${GLAD_GL})
  41. add_executable(tearing WIN32 MACOSX_BUNDLE tearing.c ${GLAD_GL})
  42. add_executable(threads WIN32 MACOSX_BUNDLE threads.c ${TINYCTHREAD} ${GLAD_GL})
  43. add_executable(timeout WIN32 MACOSX_BUNDLE timeout.c ${GLAD_GL})
  44. add_executable(title WIN32 MACOSX_BUNDLE title.c ${GLAD_GL})
  45. add_executable(triangle-vulkan WIN32 triangle-vulkan.c ${GLAD_VULKAN})
  46. add_executable(windows WIN32 MACOSX_BUNDLE windows.c ${GETOPT} ${GLAD_GL})
  47. target_link_libraries(empty "${CMAKE_THREAD_LIBS_INIT}")
  48. target_link_libraries(threads "${CMAKE_THREAD_LIBS_INIT}")
  49. if (RT_LIBRARY)
  50. target_link_libraries(empty "${RT_LIBRARY}")
  51. target_link_libraries(threads "${RT_LIBRARY}")
  52. endif()
  53. set(GUI_ONLY_BINARIES empty gamma icon inputlag joysticks opacity tearing
  54. threads timeout title triangle-vulkan windows)
  55. set(CONSOLE_BINARIES clipboard events msaa glfwinfo iconify monitors reopen
  56. cursor)
  57. set_target_properties(${GUI_ONLY_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
  58. FOLDER "GLFW3/Tests")
  59. if (MSVC)
  60. # Tell MSVC to use main instead of WinMain
  61. set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES
  62. LINK_FLAGS "/ENTRY:mainCRTStartup")
  63. elseif (CMAKE_C_SIMULATE_ID STREQUAL "MSVC")
  64. # Tell Clang using MS CRT to use main instead of WinMain
  65. set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES
  66. LINK_FLAGS "-Wl,/entry:mainCRTStartup")
  67. endif()
  68. if (APPLE)
  69. set_target_properties(empty PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Empty Event")
  70. set_target_properties(gamma PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Gamma")
  71. set_target_properties(inputlag PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Input Lag")
  72. set_target_properties(joysticks PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Joysticks")
  73. set_target_properties(opacity PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Opacity")
  74. set_target_properties(tearing PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Tearing")
  75. set_target_properties(threads PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Threads")
  76. set_target_properties(timeout PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Timeout")
  77. set_target_properties(title PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Title")
  78. set_target_properties(windows PROPERTIES MACOSX_BUNDLE_BUNDLE_NAME "Windows")
  79. set_target_properties(${GUI_ONLY_BINARIES} PROPERTIES
  80. MACOSX_BUNDLE_SHORT_VERSION_STRING ${GLFW_VERSION}
  81. MACOSX_BUNDLE_LONG_VERSION_STRING ${GLFW_VERSION}
  82. MACOSX_BUNDLE_INFO_PLIST "${GLFW_SOURCE_DIR}/CMake/MacOSXBundleInfo.plist.in")
  83. endif()