# TODO: mvimportDesktop  perlaccess????


set(Macrolib_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 mgptset.cc vismod.cc macroy.c
    netcdf.cc object.cc pngjpeg.cc mflextra.cc python.cc
)


include_directories( include )  # relative to the current source directory


if( HAVE_PPROC_MIR )
    add_definitions( -DHAVE_PPROC_MIR )
    include_directories(${MIR_INCLUDE_DIRS})
endif()

if( HAVE_PPROC_EMOS )
    add_definitions( -DHAVE_PPROC_EMOS )
endif()

if( ENABLE_UI )
    add_definitions( -DENABLE_UI )
endif()

if( ENABLE_PLOTTING )
    add_definitions( -DENABLE_PLOTTING )
endif()


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 ${CMAKE_CURRENT_BINARY_DIR}/macrol.c)

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



#set(Macro_libs ${STANDARD_METVIEW_LIBS_ODB} ${METVIEW_EXTRA_LIBRARIES})

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


ecbuild_append_to_rpath("../lib") # so that libMvMacro can find libMvUtil, etc
ecbuild_add_library( TARGET           MvMacro
					 TYPE             SHARED
					 SOURCES          ${Macrolib_srcs}
					 TEMPLATES        ${common_templates}
					 DEFINITIONS      ${METVIEW_EXTRA_DEFINITIONS}
					 PRIVATE_INCLUDES ${METVIEW_STANDARD_INCLUDES}
					 PUBLIC_LIBS      ${STANDARD_METVIEW_LIBS} ${Macro_libs} ${METVIEW_EXTRA_LIBRARIES}
					)

set(link_libs MvMacro)
if (HAVE_METVIEW_FORTRAN)
    list(APPEND link_libs macro_api_f90)
endif()

#target_link_libraries(link_libs)


#target_link_libraries(MvMacro
#	 ${Macro_libs} ${STANDARD_METVIEW_LIBS} ${METVIEW_EXTRA_LIBRARIES}
#	"-Wl,--whole-archive"
##    app models
##    "-Wl,--no-whole-archive"
#)
# GIVES THE FOLLOWING ERROR:
#/usr/lib64/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVbN2v___log_finite':
#/home/abuild/rpmbuild/BUILD/glibc-2.22/mathvec/../sysdeps/x86_64/fpu/svml_finite_alias.S:31: multiple definition of `_ZGVbN2v___log_finite'
#/usr/lib64/libmvec_nonshared.a(svml_finite_alias.oS):/home/abuild/rpmbuild/BUILD/glibc-2.22/mathvec/../sysdeps/x86_64/fpu/svml_finite_alias.S:31: first defined here
#/usr/lib64/libmvec_nonshared.a(svml_finite_alias.oS): In function `_ZGVcN4v___log_finite':


ecbuild_add_executable( TARGET       macro
                        SOURCES      main.cc
                        DEFINITIONS  ${METVIEW_EXTRA_DEFINITIONS}
                        INCLUDES     ${METVIEW_STANDARD_INCLUDES}
                        LIBS         ${link_libs} #MvMacro
                    )

#ecbuild_add_executable( TARGET       pytest
#						SOURCES      python.cc
#						DEFINITIONS  ${METVIEW_EXTRA_DEFINITIONS}
#						LIBS         ${link_libs} MvMacro
#					)


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}
                    )


