list( APPEND eckit_cmd_srcs
AliasCmd.cc
AliasCmd.h
Arg.cc
Arg.h
CmdApplication.cc
CmdApplication.h
CmdArg.cc
CmdArg.h
CmdParser.cc
CmdParser.h
CmdResource.cc
CmdResource.h
ConfigCmd.cc
ConfigCmd.h
DirCmd.cc
DirCmd.h
EchoCmd.cc
EchoCmd.h
EnvironmentCmd.cc
EnvironmentCmd.h
ExportCmd.cc
ExportCmd.h
JSONCmd.cc
JSONCmd.h
HistoryCmd.cc
HistoryCmd.h
KillCmd.cc
KillCmd.h
LibEcKitCmd.cc
LibEcKitCmd.h
LockCmd.cc
LockCmd.h
ManCmd.cc
ManCmd.h
MemoryCmd.cc
MemoryCmd.h
PsCmd.cc
PsCmd.h
QuitCmd.cc
QuitCmd.h
RemoteCmd.cc
RemoteCmd.h
RemoteCommandable.cc
RemoteCommandable.h
RemoteCommander.cc
RemoteCommander.h
RemoteCommandUser.cc
RemoteCommandUser.h
SleepCmd.cc
SleepCmd.h
StartCmd.cc
StartCmd.h
StatusCmd.cc
StatusCmd.h
StopCmd.cc
StopCmd.h
TailCmd.cc
TailCmd.h
TermBuf.cc
TermBuf.h
term.c
UpTimeCmd.cc
UpTimeCmd.h
UserInput.h
UserInput.cc
)

ecbuild_generate_yy( YYPREFIX eckit_cmd_
                     YACC cmdsy
                     LEX  cmdsl
                     DEPENDANT CmdParser.cc )

if( NOT ENABLE_WARNINGS )
  # Warnings present in autogenerated files based on cmdsy and cmdsl
  list( APPEND suppress_warnings
    $<$<CXX_COMPILER_ID:GNU>:-Wno-unused-function>
    $<$<CXX_COMPILER_ID:GNU>:-Wno-sign-compare>
    $<$<CXX_COMPILER_ID:Clang>:-Wno-deprecated-register>
  )
  set_source_files_properties( CmdParser.cc PROPERTIES COMPILE_OPTIONS "${suppress_warnings}" )
endif()

ecbuild_add_library( TARGET             eckit_cmd TYPE SHARED
                     INSTALL_HEADERS    LISTED
                     SOURCES            ${eckit_cmd_srcs}
                     HEADER_DESTINATION ${INSTALL_INCLUDE_DIR}/eckit/cmd
                     PRIVATE_INCLUDES   ${CURSES_INCLUDE_DIR}
                     PRIVATE_LIBS       ${CURSES_LIBRARIES}
                     PUBLIC_LIBS        eckit )
