# Define UGFX_ROOT set(UGFX_ROOT ${CMAKE_CURRENT_LIST_DIR}/..) # Ensure that UGFX_ROOT is set if(NOT UGFX_ROOT) message(FATAL_ERROR "No UGFX_ROOT specified") endif() # Assemble list of components list(APPEND ugfx_COMPONENTS_BUILTIN gadc gaudio gdisp gdriver gevent gfile ginput gmisc gos gqueue gtimer gtrans gwin ) # Core sources list(APPEND ugfx_SOURCES ${UGFX_ROOT}/src/gfx.c ) # Core include directories list(APPEND ugfx_INCLUDE_DIRS ${UGFX_ROOT} ${UGFX_ROOT}/src ) # Include each built-in component foreach(component ${ugfx_COMPONENTS_BUILTIN}) include(${UGFX_ROOT}/src/${component}/${component}.cmake) endforeach() # Include each component foreach(component ${ugfx_FIND_COMPONENTS}) include(${UGFX_ROOT}/${component}/driver.cmake) endforeach() # Remove duplicates from non-cached variables list(REMOVE_DUPLICATES ugfx_SOURCES) list(REMOVE_DUPLICATES ugfx_INCLUDE_DIRS) # Outsource heavy-lifting to cmake include(FindPackageHandleStandardArgs) find_package_handle_standard_args(ugfx DEFAULT_MSG UGFX_ROOT ugfx_SOURCES ugfx_INCLUDE_DIRS) # Create the target if(NOT TARGET ugfx) add_library(ugfx INTERFACE IMPORTED) endif() target_include_directories( ugfx INTERFACE ${ugfx_INCLUDE_DIRS} ) target_sources( ugfx INTERFACE ${ugfx_SOURCES} ) target_compile_definitions( ugfx INTERFACE ${ugfx_DEFS} ) target_link_libraries( ugfx INTERFACE ${ugfx_LIBS} )