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