link_libraries(libglfwStatic ${GLFW_LIBRARIES} ${OPENGL_glu_LIBRARY})

include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../include ${OPENGL_INCLUDE_DIR})

add_executable(defaults defaults.c)
add_executable(events events.c)
add_executable(fsaa fsaa.c getopt.c)
add_executable(fsfocus fsfocus.c)
add_executable(gamma gamma.c getopt.c)
add_executable(iconify iconify.c getopt.c)
add_executable(joysticks joysticks.c)
add_executable(listmodes listmodes.c)
add_executable(peter peter.c)
add_executable(reopen reopen.c)
add_executable(version version.c getopt.c)

if(APPLE)
  # Set fancy names for bundles
  add_executable(Accuracy MACOSX_BUNDLE accuracy.c)
  add_executable(Sharing MACOSX_BUNDLE sharing.c)
  add_executable(Tearing MACOSX_BUNDLE tearing.c)
  add_executable(Windows MACOSX_BUNDLE windows.c)
else()
  # Set boring names for executables
  add_executable(accuracy WIN32 accuracy.c)
  add_executable(sharing WIN32 sharing.c)
  add_executable(tearing WIN32 tearing.c)
  add_executable(windows WIN32 windows.c)
endif(APPLE)

set(WINDOWS_BINARIES accuracy sharing tearing windows)
set(CONSOLE_BINARIES defaults events fsaa fsfocus gamma iconify joysticks
                     listmodes peter reopen version)

if(MSVC)
  # Tell MSVC to use main instead of WinMain for Windows subsystem executables
  set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
                        LINK_FLAGS "/ENTRY:mainCRTStartup")
endif(MSVC)

if(CYGWIN)
  # Set cross-compile and subsystem compile and link flags
  set_target_properties(${WINDOWS_BINARIES} ${CONSOLE_BINARIES} PROPERTIES
                        COMPILE_FLAGS "-mno-cygwin")
  set_target_properties(${WINDOWS_BINARIES} PROPERTIES
                        LINK_FLAGS "-mno-cygwin -mwindows")
  set_target_properties(${CONSOLE_BINARIES} PROPERTIES
                        LINK_FLAGS "-mno-cygwin -mconsole")
endif(CYGWIN)