file(GLOB_RECURSE FRAMEWORK_SOURCE *.cpp *.c)
file(GLOB_RECURSE FRAMEWORK_INLINE *.inl)
file(GLOB_RECURSE FRAMEWORK_HEADER *.hpp *.h)

#define shader suffixes for having shader files appear in visual studio as well
file(GLOB_RECURSE FRAMEWORK_SHADER_FILES 
  ../glsl/*.vert 
	../glsl/*.geom 
	../glsl/*.tess 
	../glsl/*.frag 
	../glsl/*.comp 
	../glsl/*.task 
	../glsl/*.mesh 
	../glsl/*.glsl)

 

source_group("Inline Files" FILES ${FRAMEWORK_INLINE})


add_library(framework STATIC ${FRAMEWORK_SOURCE} ${FRAMEWORK_INLINE} ${FRAMEWORK_HEADER} ${FRAMEWORK_SHADER_FILES} ${GL3W_SOURCE})

# we use a few C++17 features, such as named parameters, so we require this as standard
set_property(TARGET framework PROPERTY CXX_STANDARD 17)

# link against GL-libraries and meshoptimizer ()
if(MSVC)
  target_link_libraries(framework OpenGL32 ${CMAKE_THREAD_LIBS_INIT} meshoptimizer)
else()
  target_link_libraries(framework omp GL ${CMAKE_THREAD_LIBS_INIT} meshoptimizer)
endif()


target_include_directories(framework SYSTEM PUBLIC ${CMAKE_SOURCE_DIR})
target_include_directories(framework SYSTEM PUBLIC ${GL3W_INCLUDE_DIR})


set(CMAKE_PVIDEO3D_LIB_ACTIVE_PROJECT_DIR "${CMAKE_SOURCE_DIR}/bin/Release")

#install to whatever project is the CMAKE source dir ...
if(MSVC)
   
	install(TARGETS framework 
	RUNTIME DESTINATION ${CMAKE_SOURCE_DIR}/bin/)

        install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../glsl
	  DESTINATION bin
          FILES_MATCHING
          PATTERN "*.vert"
          PATTERN "*.geom"
          PATTERN "*.tess"
          PATTERN "*.frag"
          PATTERN "*.comp"
          PATTERN "*.task"
          PATTERN "*.mesh"
          PATTERN "*.glsl"
	)
elseif(UNIX) #... on UNIX system we stick with the standard bin directory for all compilation modes
    
	install(TARGETS framework DESTINATION ${CMAKE_SOURCE_DIR}/bin)

        install(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/../glsl
          DESTINATION bin/
          FILES_MATCHING
          PATTERN "*.vert"
          PATTERN "*.geom"
          PATTERN "*.tess"
          PATTERN "*.frag"
          PATTERN "*.comp"
          PATTERN "*.task"
          PATTERN "*.mesh"
          PATTERN "*.glsl"
	)

endif()


set(framework_INCLUDE_DIRECTORY ${CMAKE_SOURCE_DIR})
