set( GAL_SRCS # Common part ../callback_gal.cpp ../draw_panel_gal.cpp ../gl_context_mgr.cpp ../newstroke_font.cpp ../painter.cpp color4d.cpp cursors.cpp dpi_scaling.cpp gal_display_options.cpp graphics_abstraction_layer.cpp hidpi_gl_canvas.cpp ../view/view_controls.cpp ../view/view_overlay.cpp ../view/wx_view_controls.cpp ../view/zoom_controller.cpp # OpenGL GAL opengl/opengl_gal.cpp opengl/gl_resources.cpp opengl/gl_builtin_shaders.cpp opengl/shader.cpp opengl/vertex_item.cpp opengl/vertex_container.cpp opengl/cached_container.cpp opengl/cached_container_gpu.cpp opengl/cached_container_ram.cpp opengl/noncached_container.cpp opengl/vertex_manager.cpp opengl/gpu_manager.cpp opengl/antialiasing.cpp opengl/opengl_compositor.cpp opengl/utils.cpp # Cairo GAL cairo/cairo_gal.cpp cairo/cairo_compositor.cpp cairo/cairo_print.cpp ) add_library( gal STATIC ${GAL_SRCS} ) target_link_libraries( gal common # This is needed until the circular dependency is removed kimath nlohmann_json ${GLEW_LIBRARIES} ${CAIRO_LIBRARIES} ${PIXMAN_LIBRARIES} ${OPENGL_LIBRARIES} ${GDI_PLUS_LIBRARIES} # outline font support ${FREETYPE_LIBRARIES} ${HarfBuzz_LIBRARIES} ${Fontconfig_LIBRARIES} ) function( add_shader outTarget inFile shaderName ) set(outCppName "${shaderName}.cpp") set(outHeaderName "${shaderName}.h") add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${outCppName} ${CMAKE_BINARY_DIR}/include/gal/shaders/${outHeaderName} COMMAND ${CMAKE_COMMAND} -DSOURCE="${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile}" -DDESTINATION_SOURCE_DIR="${CMAKE_CURRENT_BINARY_DIR}/" -DDESTINATION_HEADER_DIR="${CMAKE_BINARY_DIR}/include/gal/shaders/" -DOUTCPPFILE="${outCppName}" -DOUTHEADERFILE="${outHeaderName}" -DOUTVARNAME="${shaderName}_shader" -P ${CMAKE_MODULE_PATH}/BuildSteps/CreateShaderCpp.cmake DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile} ${CMAKE_MODULE_PATH}/BuildSteps/CreateShaderCpp.cmake ) target_sources( ${outTarget} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${outCppName} ) target_include_directories( ${outTarget} PUBLIC ${CMAKE_BINARY_DIR}/include/gal/shaders/ ) endfunction() add_shader( gal kicad_frag.glsl glsl_kicad_frag ) add_shader( gal kicad_vert.glsl glsl_kicad_vert )