You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

145 lines
4.3 KiB

  1. set( FONT_SRCS
  2. ../font/font.cpp
  3. ../font/glyph.cpp
  4. ../font/stroke_font.cpp
  5. ../font/outline_font.cpp
  6. ../font/outline_decomposer.cpp
  7. ../font/text_attributes.cpp
  8. )
  9. set( GAL_SRCS
  10. # Common part
  11. ../callback_gal.cpp
  12. painter.cpp
  13. cursors.cpp
  14. gal_display_options.cpp
  15. graphics_abstraction_layer.cpp
  16. hidpi_gl_canvas.cpp
  17. hidpi_gl_3D_canvas.cpp
  18. ../view/view.cpp
  19. ../view/view_controls.cpp
  20. ../view/view_group.cpp
  21. ../view/view_overlay.cpp
  22. ../view/zoom_controller.cpp
  23. ../view/view_item.cpp
  24. ${FONT_SRCS}
  25. 3d/camera.cpp
  26. # OpenGL GAL
  27. opengl/opengl_gal.cpp
  28. opengl/gl_resources.cpp
  29. opengl/shader.cpp
  30. opengl/vertex_item.cpp
  31. opengl/vertex_container.cpp
  32. opengl/cached_container.cpp
  33. opengl/cached_container_gpu.cpp
  34. opengl/cached_container_ram.cpp
  35. opengl/noncached_container.cpp
  36. opengl/vertex_manager.cpp
  37. opengl/gpu_manager.cpp
  38. opengl/antialiasing.cpp
  39. opengl/opengl_compositor.cpp
  40. opengl/utils.cpp
  41. # Cairo GAL
  42. cairo/cairo_gal.cpp
  43. cairo/cairo_compositor.cpp
  44. cairo/cairo_print.cpp
  45. )
  46. add_library( gal SHARED ${GAL_SRCS} )
  47. if( WIN32 )
  48. # we need the gdiplus library for cairo printing on windows
  49. set( GDI_PLUS_LIBRARIES gdiplus )
  50. endif()
  51. target_link_libraries( gal
  52. kicommon
  53. kimath
  54. kiplatform
  55. nlohmann_json
  56. ${GLEW_LIBRARIES}
  57. ${CAIRO_LIBRARIES}
  58. ${PIXMAN_LIBRARIES}
  59. ${OPENGL_LIBRARIES}
  60. ${GDI_PLUS_LIBRARIES}
  61. # outline font support
  62. ${FREETYPE_LIBRARIES}
  63. ${HarfBuzz_LIBRARIES}
  64. ${Fontconfig_LIBRARIES}
  65. )
  66. target_compile_definitions( gal PRIVATE GAL_DLL=1 )
  67. install( TARGETS gal
  68. RUNTIME DESTINATION ${KICAD_LIB}
  69. LIBRARY DESTINATION ${KICAD_LIB}
  70. COMPONENT binary
  71. )
  72. include( ${KICAD_CMAKE_MODULE_PATH}/KiCadVersion.cmake )
  73. include( ${KICAD_CMAKE_MODULE_PATH}/CreateGitVersionHeader.cmake )
  74. create_git_version_header(${CMAKE_SOURCE_DIR})
  75. # Extract the major and minor build version as a string
  76. string( REGEX MATCH
  77. "([0-9]+)\\.([0-9]+)\\.([0-9]+)"
  78. KICAD_MAJOR_MINOR_PATCH_VERSION
  79. "${KICAD_VERSION}"
  80. )
  81. set_target_properties( gal PROPERTIES
  82. OUTPUT_NAME kigal
  83. SOVERSION ${KICAD_MAJOR_MINOR_PATCH_VERSION}
  84. )
  85. if( APPLE )
  86. # puts library into the main kicad.app bundle in build tree
  87. set_target_properties( gal PROPERTIES
  88. LIBRARY_OUTPUT_DIRECTORY "${OSX_BUNDLE_BUILD_LIB_DIR}"
  89. INSTALL_NAME_DIR "${OSX_BUNDLE_BUILD_LIB_DIR}"
  90. )
  91. set_target_properties( gal PROPERTIES INSTALL_RPATH
  92. "@executable_path/../Frameworks" )
  93. set_target_properties( gal PROPERTIES BUILD_WITH_INSTALL_RPATH 1 )
  94. endif()
  95. function( add_shader outTarget inFile shaderName )
  96. set(outCppName "${shaderName}.cpp")
  97. set(outHeaderName "${shaderName}.h")
  98. add_custom_command(
  99. OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${outCppName}
  100. ${CMAKE_BINARY_DIR}/include/gal/shaders/${outHeaderName}
  101. COMMAND ${CMAKE_COMMAND}
  102. -DSOURCE_FILE="${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile}"
  103. -DOUT_CPP_DIR="${CMAKE_CURRENT_BINARY_DIR}/"
  104. -DOUT_HEADER_DIR="${CMAKE_BINARY_DIR}/include/gal/shaders/"
  105. -DOUT_CPP_FILENAME="${outCppName}"
  106. -DOUT_HEADER_FILENAME="${outHeaderName}"
  107. -DOUT_VAR_NAME="${shaderName}"
  108. -P ${KICAD_CMAKE_MODULE_PATH}/BuildSteps/CreateShaderCpp.cmake
  109. DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/shaders/${inFile}
  110. ${KICAD_CMAKE_MODULE_PATH}/BuildSteps/CreateShaderCpp.cmake
  111. )
  112. target_sources( ${outTarget} PRIVATE ${CMAKE_CURRENT_BINARY_DIR}/${outCppName} )
  113. target_include_directories( ${outTarget} PUBLIC ${CMAKE_BINARY_DIR}/include/gal/shaders/ )
  114. endfunction()
  115. add_shader( gal kicad_frag.glsl glsl_kicad_frag )
  116. add_shader( gal kicad_vert.glsl glsl_kicad_vert )
  117. add_shader( gal smaa_base.glsl glsl_smaa_base )
  118. add_shader( gal smaa_pass_1_frag_color.glsl glsl_smaa_pass_1_frag_color )
  119. add_shader( gal smaa_pass_1_frag_luma.glsl glsl_smaa_pass_1_frag_luma )
  120. add_shader( gal smaa_pass_1_vert.glsl glsl_smaa_pass_1_vert )
  121. add_shader( gal smaa_pass_2_frag.glsl glsl_smaa_pass_2_frag )
  122. add_shader( gal smaa_pass_2_vert.glsl glsl_smaa_pass_2_vert )
  123. add_shader( gal smaa_pass_3_frag.glsl glsl_smaa_pass_3_frag )
  124. add_shader( gal smaa_pass_3_vert.glsl glsl_smaa_pass_3_vert )