# add an engine macro(add_engine engine lib_list src_list moc_list supported) # recreate list set(lib_list ${lib_list}) list(GET lib_list 0 name) # add a user selectable build option, supported engines enabled by default option(ENGINE_${name}_ENABLED "enable engine ${engine}" ${supported}) # check for all needed libraries foreach(lib ${lib_list}) if(${lib}_NOTFOUND) set(ENGINE_${name}_LIB_MISSING TRUE) endif(${lib}_NOTFOUND) endforeach(lib ${lib_list}) # check if engine is enabled and needed librares are available if(ENGINE_${name}_ENABLED AND NOT ENGINE_${name}_LIB_MISSING) # add to list of unsupported engines set(supported ${supported}) if(NOT supported) set(ENGINES_UNSUPPORTED "${ENGINES_UNSUPPORTED} ${engine}") endif(NOT supported) # add define -DHAVE_ so we can clutter the code with #ifdefs set("HAVE_${name}" 1 CACHE INTERNAL ${name}) # add sources and MOC headers list(APPEND ENGINES-SOURCES ${src_list}) list(APPEND ENGINES-HEADERS ${moc_list}) # add libraries to link against foreach(lib ${lib_list}) set(ENGINE_LIBRARIES ${ENGINE_LIBRARIES} ${${lib}_LIBRARIES} CACHE INTERNAL libraries) endforeach(lib ${lib_list}) # add to list of enabled engines set(ENGINES_ENABLED "${ENGINES_ENABLED} ${engine}") else(ENGINE_${name}_ENABLED AND NOT ENGINE_${name}_LIB_MISSING) # add to list of disabled engines set(ENGINES_DISABLED "${ENGINES_DISABLED} ${engine}") endif(ENGINE_${name}_ENABLED AND NOT ENGINE_${name}_LIB_MISSING) endmacro(add_engine engine lib_list src_list moc_list supported) # print engines to be built macro(print_engines) # show big warning if building unsupported engines if(ENGINES_UNSUPPORTED) message("") message(" *********************************") message(" ************ WARNING ************") message(" *********************************") message("") message(" The following engines are NOT supported by clementine developers:") message(" ${ENGINES_UNSUPPORTED}") message("") message(" Don't post any bugs if you use them, fix them yourself!") message("") pig() message("") endif(ENGINES_UNSUPPORTED) message(STATUS "Building engines:${ENGINES_ENABLED}") message(STATUS "Skipping engines:${ENGINES_DISABLED}") endmacro(print_engines) # print the pig :) macro(pig) file(READ ${CMAKE_SOURCE_DIR}/pig.txt pig) message(${pig}) endmacro(pig)