find_package(OpenGL REQUIRED) find_package(GLEW REQUIRED) if(WIN32 AND NOT BUILD_SHARED_LIBS) add_definitions(-DGLEW_STATIC) endif() add_library(Rendering) avogadro_headers(Rendering arcsector.h arcstrip.h arrowgeometry.h avogadrogl.h avogadrorendering.h beziergeometry.h bsplinegeometry.h bufferobject.h camera.h cartoongeometry.h curvegeometry.h cylindergeometry.h dashedlinegeometry.h drawable.h geometrynode.h geometryvisitor.h groupnode.h glrenderer.h glrendervisitor.h linestripgeometry.h meshgeometry.h node.h plyvisitor.h povrayvisitor.h primitive.h quad.h quadoutline.h scene.h shader.h shaderprogram.h solidpipeline.h spheregeometry.h textlabel2d.h textlabel3d.h textlabelbase.h textproperties.h textrenderstrategy.h texture2d.h transformnode.h visitor.h volumegeometry.h vrmlvisitor.h ) target_sources(Rendering PRIVATE arcsector.cpp arcstrip.cpp arrowgeometry.cpp beziergeometry.cpp bufferobject.cpp bsplinegeometry.cpp cartoongeometry.cpp camera.cpp curvegeometry.cpp cylindergeometry.cpp dashedlinegeometry.cpp drawable.cpp geometrynode.cpp geometryvisitor.cpp groupnode.cpp glrenderer.cpp glrendervisitor.cpp linestripgeometry.cpp meshgeometry.cpp node.cpp plyvisitor.cpp povrayvisitor.cpp quad.cpp quadoutline.cpp scene.cpp shader.cpp shaderprogram.cpp solidpipeline.cpp spheregeometry.cpp textlabel2d.cpp textlabel3d.cpp textlabelbase.cpp textproperties.cpp textrenderstrategy.cpp texture2d.cpp transformnode.cpp visitor.cpp volumegeometry.cpp vrmlvisitor.cpp ambientocclusionspheregeometry.cpp ) set(shader_files "arrow_vs.glsl" "cylinders_fs.glsl" "cylinders_vs.glsl" "dashedline_fs.glsl" "dashedline_vs.glsl" "linestrip_fs.glsl" "linestrip_vs.glsl" "mesh_fs.glsl" "mesh_opaque_fs.glsl" "mesh_vs.glsl" "solid_vs.glsl" "solid_first_fs.glsl" "spheres_fs.glsl" "spheres_vs.glsl" "sphere_ao_depth_vs.glsl" "sphere_ao_depth_fs.glsl" "sphere_ao_bake_vs.glsl" "sphere_ao_bake_fs.glsl" "sphere_ao_render_vs.glsl" "sphere_ao_render_fs.glsl" "textlabelbase_fs.glsl" "textlabelbase_vs.glsl" ) foreach(file ${shader_files}) get_filename_component(file_we ${file} NAME_WE) set(src ${CMAKE_CURRENT_SOURCE_DIR}/${file}) set(resh ${CMAKE_CURRENT_BINARY_DIR}/${file_we}.h) list(APPEND shader_h_files ${resh}) add_custom_command( OUTPUT ${resh} DEPENDS ${src} encodefile COMMAND encodefile ARGS ${src} ${resh} ${file_we} COMMENT "Encoding ${src}" ) endforeach() target_sources(Rendering PRIVATE FILE_SET shaders TYPE HEADERS BASE_DIRS ${CMAKE_CURRENT_BINARY_DIR} FILES ${shader_h_files}) avogadro_add_library(Rendering) target_link_libraries(Rendering PUBLIC Avogadro::Headers PRIVATE Avogadro::Core # Needed for an emum in residue.h that we should move, maybe others. GLEW::GLEW OpenGL::GL) if(USE_3DCONNEXION AND (WIN32 OR APPLE)) target_compile_definitions(Rendering PUBLIC _3DCONNEXION) endif()