# TODO: mvimportDesktop  perlaccess????


set(Macro_srcs
    value.cc code.cc variable.cc context.cc script.cc files.cc
    misc.cc number.cc stack.cc date.cc mstring.cc request.cc
    Unix.cc grib.cc mlist.cc module.cc remote.cc function.cc
    matrix.cc image.cc arith.cc extern.cc mvector.cc mtable.cc library.cc
    debug.cc bufr.cc compute.cc main.cc vismod.cc macroy.c
    netcdf.cc object.cc pngjpeg.cc mflextra.cc
)


include_directories( include )  # relative to the current source directory


ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/macrol.c
	COMMAND ${FLEX_EXECUTABLE} -l ${CMAKE_CURRENT_SOURCE_DIR}/macrol.l\; sed -e s/yy/zz/g < lex.yy.c > ${CMAKE_CURRENT_BINARY_DIR}/macrol.c
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/macrol.l)

ADD_CUSTOM_COMMAND(
    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/macroy.c
	COMMAND ${BISON_EXECUTABLE} -y ${CMAKE_CURRENT_SOURCE_DIR}/macroy.y\; sed -e s/yy/zz/g < y.tab.c > ${CMAKE_CURRENT_BINARY_DIR}/macroy.c
    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/macroy.y)

ADD_CUSTOM_TARGET(macrolex DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/macroy.c ${CMAKE_CURRENT_BINARY_DIR}/macrol.c)



set(Macro_libs ${STANDARD_METVIEW_LIBS} ${METVIEW_EXTRA_LIBRARIES})

if(ENABLE_ODB)
    list(APPEND Macro_srcs codb.cc)
    list(APPEND Macro_libs ${METVIEW_ODB_API_LIBRARIES})
endif()


ecbuild_add_executable( TARGET       macro
                        SOURCES      ${Macro_srcs}
                        DEFINITIONS  ${METVIEW_EXTRA_DEFINITIONS}
                        LIBS         ${Macro_libs}
                    )


ADD_DEPENDENCIES(macro macrolex)


######################################################################################

# PROBLEM getting CMake to accept the arguments to 'sed'. One possibility would be to
# put this into a separate script; another would be to simply put the beau.h file
# directly into the repository and skip the step of generating it.

#ADD_CUSTOM_COMMAND(
#    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/beaul.c
#	COMMAND lex -l ${CMAKE_CURRENT_SOURCE_DIR}/beaul.l\; sed -e s/yy/zz/g < lex.yy.c > ${CMAKE_CURRENT_BINARY_DIR}/beaul.c
#    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/beaul.l)
#
#ADD_CUSTOM_COMMAND(
#    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/beauy.c
#	COMMAND yacc -t ${CMAKE_CURRENT_SOURCE_DIR}/beauy.y\; sed -e s/yy/zz/g < y.tab.c > ${CMAKE_CURRENT_BINARY_DIR}/beauy.c
#    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/macroy.y)
#
#set(BS \\)
##	COMMAND sed -e 's/\\(.*\\)/\\"\\1\\",/' < ${CMAKE_CURRENT_SOURCE_DIR}/beau.ps > ${CMAKE_CURRENT_BINARY_DIR}/beau.h
#ADD_CUSTOM_COMMAND(
#    OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/beau.h
#	COMMAND sed -e 's/${BS}(.*${BS})/${BS}\"${BS}1\",/' < ${CMAKE_CURRENT_SOURCE_DIR}/beau.ps > ${CMAKE_CURRENT_BINARY_DIR}/beau.h
#    DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/beauy.y)
#
#
#ADD_CUSTOM_TARGET(beaulex DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/beauy.c ${CMAKE_CURRENT_BINARY_DIR}/beaul.c ${CMAKE_CURRENT_BINARY_DIR}/beau.h)
#
#
#ecbuild_add_executable( TARGET       beautify
#                        SOURCES      beauy.y beautify.c 
#                        DEFINITIONS  ${METVIEW_EXTRA_DEFINITIONS}
#                        INCLUDES     ${METVIEW_STANDARD_INCLUDES} ${CMAKE_CURRENT_BINARY_DIR}
#                        LIBS         ${Macro_libs}
#                    )
#
#ADD_DEPENDENCIES(beautify beaulex)


######################################################################################


set(mvimport_srcs
    mvimport.c
)

ecbuild_add_executable( TARGET       mvimport
                        SOURCES      ${mvimport_srcs}
                        DEFINITIONS
                        INCLUDES     ${METVIEW_STANDARD_INCLUDES}
                        LIBS         ${STANDARD_METVIEW_LIBS}
                    )


######################################################################################


set(mvimportDesktop_srcs
    mvimportDesktop.c
)

ecbuild_add_executable( TARGET       mvimportDesktop
                        SOURCES      ${mvimportDesktop_srcs}
                        DEFINITIONS
                        INCLUDES     ${METVIEW_STANDARD_INCLUDES}
                        LIBS         ${STANDARD_METVIEW_LIBS}
                    )


