Linux debugging

Check our new training course

Linux debugging, tracing, profiling & perf. analysis

Check our new training course
with Creative Commons CC-BY-SA
lecture and lab materials

Bootlin logo

Elixir Cross Referencer

add_compile_options(
  -Wall
  -Wmissing-prototypes
  -Wstrict-prototypes
  -O2
  -fomit-frame-pointer
  -std=gnu89
  -Wno-format-security
  -DKBUILD_NO_NLS
)

# TODO: fix these warnings
add_compile_options(
  -Wno-pointer-to-int-cast
  -Wno-int-to-pointer-cast
)

add_definitions(
  -DKERNEL_VERSION=0
  -DCURSES_LOC=<curses.h>
  -DNCURSES_WIDECHAR=1
  -DLOCALE
  -DKBUILD_NO_NL
)

if(MINGW)
  get_filename_component(MINGW_BIN_DIR ${CMAKE_C_COMPILER} DIRECTORY)
  set(CMAKE_INCLUDE_PATH ${MINGW_BIN_DIR}/../include)
  set(CMAKE_LIBRARY_PATH ${MINGW_BIN_DIR}/../lib)
endif()

list(APPEND CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/cmake)

find_package(Curses REQUIRED)
find_package(Regex REQUIRED)

include_directories(
  ${CURSES_INCLUDE_DIRS}
  ${CMAKE_CURRENT_SOURCE_DIR}
  ${CMAKE_CURRENT_BINARY_DIR}
)
if(CURSES_HAVE_NCURSES_CURSES_H)
  include_directories(${CURSES_INCLUDE_DIRS}/ncurses)
endif()


configure_file(zconf.tab.c_shipped zconf.tab.c @ONLY)
configure_file(zconf.lex.c_shipped zconf.lex.c @ONLY)
configure_file(zconf.hash.c_shipped zconf.hash.c @ONLY)

add_executable(conf
  conf.c
  zconf.tab.c
)
target_link_libraries(conf ${Regex_LIBRARIES})

add_executable(mconf
  mconf.c
  zconf.tab.c
  lxdialog/checklist.c
  lxdialog/inputbox.c
  lxdialog/menubox.c
  lxdialog/textbox.c
  lxdialog/util.c
  lxdialog/yesno.c
)
target_link_libraries(mconf ${CURSES_LIBRARIES} ${Regex_LIBRARIES})

# Build a GTK-based frontend to Kconfig if the necessary dependencies
# are already installed.
find_package (PkgConfig)
if(PkgConfig_FOUND)
  pkg_check_modules (GTK2 gtk+-2.0 libglade-2.0)
  if(GTK2_FOUND)
    message(STATUS "Found GTK+-2.0 and libglade-2.0, will build gconf")
    add_executable(gconf
      gconf.c
      zconf.tab.c
      )
    target_include_directories( gconf PRIVATE ${GTK2_INCLUDE_DIRS})
    target_link_libraries(      gconf PRIVATE ${GTK2_LIBRARY_DIRS})
    target_compile_options(     gconf PRIVATE ${GTK2_CFLAGS_OTHER})
    target_link_libraries(      gconf PRIVATE ${GTK2_LIBRARIES})
    target_link_libraries(      gconf PRIVATE -Wl,--export-dynamic)
    file(COPY gconf.glade DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
  endif()
endif()
if(NOT GTK2_FOUND)
    message(STATUS "Skipped building gconf since GTK dependencies were not met.")
endif()

# Build a QT-based frontend to Kconfig if the necessary dependencies
# are already installed.
# FIXME: Support other QT versions
find_package(Qt4 COMPONENTS QtGui QtNetwork QtSql QtCore Qt3Support)
if(Qt4_FOUND)
  set(CMAKE_INCLUDE_CURRENT_DIR ON)
  set(CMAKE_AUTOMOC ON)

  add_executable(qconf
    qconf.cc
    zconf.tab.c
    )
  target_compile_options(qconf PRIVATE -Wfatal-errors)

  target_link_libraries(qconf
    Qt4::QtGui
    Qt4::QtNetwork
    Qt4::QtSql
    Qt4::QtCore
    Qt4::Qt3Support
    )
else()
  message(STATUS "Skipped building qconf since QT dependencies were not found.")
endif()