###########################################################################
#
# Makefile system for GILDAS softwares (2003-2024).
#
# Please be careful: element order often matters in makefiles.
#
###########################################################################

include $(gagadmdir)/Makefile.def

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

STRUCTURE_OBJECTS = structure.o structure-api.o structure-argument.o	\
structure-command.o structure-language.o structure-option.o		\
structure-package.o structure-product.o

STRUCTURE_EXPORTS = cubetools_command.mod cubetools_language.mod	\
cubetools_primitive_opt.mod cubetools_primitive_arg.mod			\
cubetools_structure.mod cubetools_structure_main.mod			\
cubetools_primitive_prod.mod cubetools_package.mod

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

VARIABLE_OBJECTS = type-progstruct.o type-userspace.o type-userstruct.o	\
type-uservar.o

VARIABLE_EXPORTS = cubetools_progstruct_types.mod cubetools_userspace.mod	\
cubetools_userstruct.mod cubetools_uservar.mod

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

#***JP: type-dataformat.o is pretty specific to IO. It should belong to one
#***JP: of the IO library.

SYNTAX_OBJECTS = type-access.o type-argument-keywordlist.o		\
type-argument-standard.o type-command-standard.o type-dataformat.o	\
type-datatype.o type-key.o type-option-obsolete.o			\
type-option-standard.o type-switch.o

SYNTAX_EXPORTS = cubesyntax_datatype_types.mod			\
cubesyntax_key_types.mod cubetools_access_types.mod		\
cubetools_dataformat_types.mod cubetools_keywordlist_types.mod	\
cubetools_obsolete_opt.mod cubetools_standard_comm.mod		\
cubetools_standard_arg.mod cubetools_standard_opt.mod		\
cubetools_switch_types.mod

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

#***JP: tool-user2prog depends on unit...
UNIT_OBJECTS = type-argument-unit.o type-unit.o unit.o	\
tool-user2prog.o

UNIT_EXPORTS = cubetools_unit.mod cubetools_unit_arg.mod	\
cubetools_unit_magnitude.mod cubetools_unit_setup.mod cubetools_unit_types.mod \
cubetools_user2prog.mod

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

KEYVAL_OBJECTS = type-keyval.o tool-keyval-list.o tool-keyvalunit-list.o	\
type-value.o type-keyval-real.o type-keyval-dble.o type-keyval-keyword.o	\
type-keyval-strg.o type-keyvalunit-real.o type-keyvalunit-dble.o

KEYVAL_EXPORTS = cubesyntax_keyval_types.mod					\
cubesyntax_keyval_list_tool.mod cubesyntax_keyval_real_types.mod		\
cubesyntax_keyval_dble_types.mod cubesyntax_keyval_keyword_types.mod		\
cubesyntax_keyval_strg_types.mod cubesyntax_keyvalunit_list_tool.mod		\
cubesyntax_keyvalunit_real_types.mod cubesyntax_keyvalunit_dble_types.mod	\
cubesyntax_value_real_types.mod cubesyntax_value_dble_types.mod			\
cubesyntax_value_strg_types.mod

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

LIB_IDENTITY = cubesyntax

LIB_F_OBJECTS = $(STRUCTURE_OBJECTS) $(VARIABLE_OBJECTS) $(SYNTAX_OBJECTS)	\
$(UNIT_OBJECTS) $(KEYVAL_OBJECTS) message.o

LIB_EXPORTS = $(STRUCTURE_EXPORTS) $(VARIABLE_EXPORTS) $(SYNTAX_EXPORTS)	\
$(UNIT_EXPORTS) $(KEYVAL_EXPORTS) cubesyntax_messaging.mod

INTERFACES_DISABLE = yes

LIB_DEPENDS = -lcubelist -lcubetools $(GREG_LIBS)

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

include $(gagadmdir)/Makefile.lib

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

include $(builddir)/Makefile.deps

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