#########################################################################
##                                                                     ##
##                         Applied Type System                         ##
##                                                                     ##
##                              Hongwei Xi                             ##
##                                                                     ##
#########################################################################

##
## ATS/Anairiats - Unleashing the Potential of Types!
##
## Copyright (C) 2002-2008 Hongwei Xi, Boston University
##
## All rights reserved
##
## ATS is  free software;  you can redistribute it and/or modify it under
## the  terms of the  GNU General Public License as published by the Free
## Software Foundation; either version 2.1, or (at your option) any later
## version.
## 
## ATS is distributed in the hope that it will be useful, but WITHOUT ANY
## WARRANTY; without  even  the  implied  warranty  of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE.  See the  GNU General Public License
## for more details.
## 
## You  should  have  received  a  copy of the GNU General Public License
## along  with  ATS;  see the  file COPYING.  If not, please write to the
## Free Software Foundation,  51 Franklin Street, Fifth Floor, Boston, MA
## 02110-1301, USA.
##

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

## Author: Hongwei Xi (hwxi AT cs DOT bu DOT edu)
## Time: December 2007

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

#
# The bootstrapping procedure:
#
# 1. Use [gcc] to compile the C code in [bootstrap0-anairiats] to build
#    the ATS compiler [atsopt]
#
#    Alternatively, use [ocamlopt] to compile the Objective Caml code in
#    [bootstrap0-geizella] to build the ATS compiler [atsopt]
#
# 2. Use [atsopt] to compile the ATS code in [src] into C code and store
#    it in [bootstrap1]
#
# 3. Use [gcc] to compile the C code in [bootstrap1] to build the ATS
#    compiler [atsopt]
#
# 4. Use [atsopt] to compile the ATS code in [utils/scripts] to build the
#    batch compilation command [atscc]
#
# 5. Use [atscc] to build libats, GC and atslex.
#

######

ATSRUNTIME="$(ATSHOME)"/ccomp/runtime

######

CC=gcc -Wall
#CC=gcc -fsigned-char // should be OK as well
#CC=gcc -funsigned-char // should be OK as well
#CCFLAG=-I"$(ATSHOME)" -I$(ATSRUNTIME) -O2
#CCFLAG=-I"$(ATSHOME)"/bootstrap0 -I$(ATSRUNTIME) -O2
GCFLAG=-D_ATS_GCATS "$(ATSHOME)"/ccomp/runtime/GCATS/gc.o
LD=ld

######

SOURCES := \
  ats_array.sats ats_array.dats \
  ats_charlst.sats ats_charlst.dats \
  ats_comarg.sats ats_comarg.dats \
  ats_counter.sats ats_counter.dats \
  ats_debug.sats ats_debug.dats \
  ats_effect.sats ats_effect.dats \
  ats_error.sats ats_error.dats \
  ats_filename.sats ats_filename.dats \
  ats_fixity.sats ats_fixity.dats \
  ats_global.sats ats_global.dats \
  ats_hashtbl.sats ats_hashtbl.dats \
  ats_intinf.sats ats_intinf.dats \
  ats_keyword.sats ats_keyword.dats \
  ats_label.sats ats_label.dats \
  ats_location.sats ats_location.dats \
  ats_namespace.sats ats_namespace.dats \
  ats_posmark.sats ats_posmark.dats \
  ats_stamp.sats ats_stamp.dats \
  ats_symbol.sats ats_symbol.dats \
  ats_symenv.sats ats_symenv.dats \
  ats_symtbl.sats ats_symtbl.dats \
  ats_list.sats ats_list.dats \
  ats_map_lin.sats ats_map_lin.dats \
  ats_reference.sats ats_reference.dats \
  ats_set_fun.sats ats_set_fun.dats \
  ats_parser.sats ats_parser.dats \
  ats_syntax.sats ats_syntax.dats ats_syntax_posmark.dats \
  ats_staexp1.sats ats_staexp1.dats ats_staexp1_print.dats \
  ats_dynexp1.sats ats_dynexp1.dats ats_dynexp1_print.dats \
  ats_trans1_env.sats ats_trans1_env.dats \
  ats_e1xp_eval.sats ats_e1xp_eval.dats \
  ats_trans1.sats ats_trans1_sta.dats ats_trans1_dyn.dats \
  ats_staexp2.sats ats_staexp2.dats \
  ats_staexp2_print.dats \
  ats_staexp2_scst.dats \
  ats_staexp2_svVar.dats \
  ats_staexp2_dcon.dats \
  ats_staexp2_util1.dats ats_staexp2_util2.dats \
  ats_staexp2_pprint.sats ats_staexp2_pprint.dats \
  ats_dynexp2.sats \
  ats_dynexp2.dats \
  ats_dynexp2_dcst.dats \
  ats_dynexp2_dmac.dats \
  ats_dynexp2_dvar.dats \
  ats_dynexp2_print.dats \
  ats_dynexp2_util.dats \
  ats_trans2_env.sats ats_trans2_env.dats \
  ats_stadyncst2.sats ats_stadyncst2.dats \
  ats_trans2.sats \
  ats_trans2_sta.dats \
  ats_trans2_dyn1.dats ats_trans2_dyn2.dats \
  ats_macro2.sats ats_macro2.dats \
  ats_patcst2.sats ats_patcst2.dats \
  ats_string_parse.sats ats_string_parse.dats \
  ats_printf_c.lats \
  ats_dynexp3.sats ats_dynexp3.dats \
  ats_dynexp3_print.dats \
  ats_trans3_env.sats \
  ats_trans3_env.dats \
  ats_trans3_env_eff.dats \
  ats_trans3_env_loop.dats \
  ats_trans3_env_met.dats \
  ats_trans3_env_scst.dats \
  ats_trans3_env_state.dats \
  ats_trans3_env_print.dats \
  ats_staexp2_solve.sats ats_staexp2_solve.dats \
  ats_trans3.sats ats_trans3_pat.dats \
  ats_trans3_assgn.dats \
  ats_trans3_deref.dats \
  ats_trans3_view.dats \
  ats_trans3_exp_up.dats \
  ats_trans3_exp_dn.dats \
  ats_trans3_loop.dats ats_trans3_dec.dats \
  ats_constraint.sats ats_constraint.dats \
  ats_constraint_print.dats \
  ats_solver_fm.sats ats_solver_fm.dats \
  ats_hiexp.sats ats_hiexp.dats \
  ats_hiexp_print.dats ats_hiexp_util.dats \
  ats_trans4.sats ats_trans4.dats \
  ats_ccomp.sats ats_ccomp.dats \
  ats_ccomp_env.sats ats_ccomp_env.dats \
  ats_ccomp_print.dats \
  ats_ccomp_util.dats \
  ats_ccomp_trans.dats \
  ats_ccomp_trans_clau.dats \
  ats_ccomp_trans_tailcal.dats \
  ats_ccomp_trans_temp.dats \
  ats_ccomp_emit.dats \
  ats_ccomp_main.dats \

######

TARGETS := $(SOURCES)
TARGETS := $(patsubst %.sats, %_sats.o, $(TARGETS))
TARGETS := $(patsubst %.lats, %_lats.dats, $(TARGETS))
TARGETS := $(patsubst %.dats, %_dats.o, $(TARGETS))

######

LIBOBJS := $(LIBGMP)

######

atsopt: \
  ats_main_dats.c \
  ats_lexer_lats_dats.o ats_lexer_sats.o ats_grammar_yats.o \
  prelude_dats.o libc_sats.o libc_dats.o libats_lex.o \
  $(TARGETS)
	$(CC) $(CCFLAG) -o atsopt \
  -D_ATS_BOOTSTRAP ats_main_dats.c \
  ats_lexer_lats_dats.o ats_lexer_sats.o ats_grammar_yats.o \
  prelude_dats.o libc_sats.o libc_dats.o libats_lex.o \
  $(TARGETS) \
  $(ATSRUNTIME)/ats_prelude.c \
  $(LIBOBJS)

atsopt_gc::
	$(CC) $(CCFLAG) -o atsopt \
  -D_ATS_BOOTSTRAP ats_main_dats.c \
  ats_lexer_lats_dats.o ats_lexer_sats.o ats_grammar_yats.o \
  prelude_dats.o libc_sats.o libc_dats.o libats_lex.o \
  $(TARGETS) \
  $(GCFLAG) \
  $(ATSRUNTIME)/ats_prelude.c \
  $(LIBOBJS)

######

ats_lexer_sats.o: ats_lexer_sats.c
	$(CC) $(CCFLAG) -c ats_lexer_sats.c
ats_lexer_lats_dats.o: ats_grammar_yats.h ats_lexer_lats_dats.c
	$(CC) $(CCFLAG) -c ats_lexer_lats_dats.c

######

ats_grammar_yats.o: ats_grammar_yats.c
	$(CC) $(CCFLAG) -o $@ -c ats_grammar_yats.c 

######

prelude_dats_array_dats.o: prelude_dats_array_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_array_dats.c

prelude_dats_basics_dats.o: prelude_dats_basics_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_basics_dats.c

prelude_dats_file_dats.o: prelude_dats_file_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_file_dats.c

prelude_dats_integer_dats.o: prelude_dats_integer_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_integer_dats.c

prelude_dats_printf_dats.o: prelude_dats_printf_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_printf_dats.c

prelude_dats_string_dats.o: prelude_dats_string_dats.c
	$(CC) $(CCFLAG) -o $@ -c prelude_dats_string_dats.c

prelude_dats.o: \
  prelude_dats_array_dats.o \
  prelude_dats_basics_dats.o \
  prelude_dats_file_dats.o \
  prelude_dats_integer_dats.o \
  prelude_dats_printf_dats.o \
  prelude_dats_string_dats.o
	$(LD) -r -o $@ \
  prelude_dats_array_dats.o \
  prelude_dats_basics_dats.o \
  prelude_dats_file_dats.o \
  prelude_dats_integer_dats.o \
  prelude_dats_printf_dats.o \
  prelude_dats_string_dats.o

######

libc_sats_gmp_sats.o: libc_sats_gmp_sats.c
	$(CC) $(CCFLAG) -o $@ -c libc_sats_gmp_sats.c

libc_sats_time_sats.o: libc_sats_time_sats.c
	$(CC) $(CCFLAG) -o $@ -c libc_sats_time_sats.c

libc_sats.o: \
  libc_sats_gmp_sats.o libc_sats_time_sats.o
	$(LD) -r -o $@ \
  libc_sats_gmp_sats.o libc_sats_time_sats.o

libc_dats_unistd_dats.o: libc_dats_unistd_dats.c
	$(CC) $(CCFLAG) -o $@ -c libc_dats_unistd_dats.c

libc_dats.o: \
  libc_dats_unistd_dats.o
	$(LD) -r -o $@ \
  libc_dats_unistd_dats.o

######

libats_lex_lexing_sats.o: libats_lex_lexing_sats.c
	$(CC) $(CCFLAG) -o $@ -c libats_lex_lexing_sats.c
libats_lex_lexing_dats.o: libats_lex_lexing_dats.c
	$(CC) $(CCFLAG) -o $@ -c libats_lex_lexing_dats.c
libats_lex_tables_dats.o: libats_lex_tables_dats.c
	$(CC) $(CCFLAG) -o $@ -c libats_lex_tables_dats.c

libats_lex.o: \
  libats_lex_lexing_sats.o libats_lex_lexing_dats.o libats_lex_tables_dats.o
	$(LD) -r -o $@ \
  libats_lex_lexing_sats.o libats_lex_lexing_dats.o libats_lex_tables_dats.o

######

ats_array_sats.o: ats_array_sats.c
	$(CC) $(CCFLAG) -c ats_array_sats.c
ats_array_dats.o: ats_array_dats.c
	$(CC) $(CCFLAG) -c ats_array_dats.c

ats_charlst_sats.o: ats_charlst_sats.c
	$(CC) $(CCFLAG) -c ats_charlst_sats.c
ats_charlst_dats.o: ats_charlst_dats.c
	$(CC) $(CCFLAG) -c ats_charlst_dats.c

ats_comarg_sats.o: ats_comarg_sats.c
	$(CC) $(CCFLAG) -c ats_comarg_sats.c
ats_comarg_dats.o: ats_comarg_dats.c
	$(CC) $(CCFLAG) -c ats_comarg_dats.c

ats_counter_sats.o: ats_counter_sats.c
	$(CC) $(CCFLAG) -c ats_counter_sats.c
ats_counter_dats.o: ats_counter_dats.c
	$(CC) $(CCFLAG) -c ats_counter_dats.c

ats_debug_sats.o: ats_debug_sats.c
	$(CC) $(CCFLAG) -c ats_debug_sats.c
ats_debug_dats.o: ats_debug_dats.c
	$(CC) $(CCFLAG) -c ats_debug_dats.c

ats_effect_sats.o: ats_effect_sats.c
	$(CC) $(CCFLAG) -c ats_effect_sats.c
ats_effect_dats.o: ats_effect_dats.c
	$(CC) $(CCFLAG) -c ats_effect_dats.c

ats_error_sats.o: ats_error_sats.c
	$(CC) $(CCFLAG) -c ats_error_sats.c
ats_error_dats.o: ats_error_dats.c
	$(CC) $(CCFLAG) -c ats_error_dats.c

ats_filename_sats.o: ats_filename_sats.c
	$(CC) $(CCFLAG) -c ats_filename_sats.c
ats_filename_dats.o: ats_filename_dats.c
	$(CC) $(CCFLAG) -c ats_filename_dats.c

ats_fixity_sats.o: ats_fixity_sats.c
	$(CC) $(CCFLAG) -c ats_fixity_sats.c
ats_fixity_dats.o: ats_fixity_dats.c
	$(CC) $(CCFLAG) -c ats_fixity_dats.c

ats_global_sats.o: ats_global_sats.c
	$(CC) $(CCFLAG) -c ats_global_sats.c
ats_global_dats.o: ats_global_dats.c
	$(CC) $(CCFLAG) -c ats_global_dats.c

ats_hashtbl_sats.o: ats_hashtbl_sats.c
	$(CC) $(CCFLAG) -c ats_hashtbl_sats.c
ats_hashtbl_dats.o: ats_hashtbl_dats.c
	$(CC) $(CCFLAG) -c ats_hashtbl_dats.c

ats_intinf_sats.o: ats_intinf_sats.c
	$(CC) $(CCFLAG) -c ats_intinf_sats.c
ats_intinf_dats.o: ats_intinf_dats.c
	$(CC) $(CCFLAG) -c ats_intinf_dats.c

ats_keyword_sats.o: ats_keyword_sats.c
	$(CC) $(CCFLAG) -c ats_keyword_sats.c
ats_keyword_dats.o: ats_keyword_dats.c
	$(CC) $(CCFLAG) -c ats_keyword_dats.c

ats_label_sats.o: ats_label_sats.c
	$(CC) $(CCFLAG) -c ats_label_sats.c
ats_label_dats.o: ats_label_dats.c
	$(CC) $(CCFLAG) -c ats_label_dats.c

ats_location_sats.o: ats_location_sats.c
	$(CC) $(CCFLAG) -c ats_location_sats.c
ats_location_dats.o: ats_location_dats.c
	$(CC) $(CCFLAG) -c ats_location_dats.c

ats_namespace_sats.o: ats_namespace_sats.c
	$(CC) $(CCFLAG) -c ats_namespace_sats.c
ats_namespace_dats.o: ats_namespace_dats.c
	$(CC) $(CCFLAG) -c ats_namespace_dats.c

ats_posmark_sats.o: ats_posmark_sats.c
	$(CC) $(CCFLAG) -c ats_posmark_sats.c
ats_posmark_dats.o: ats_posmark_dats.c
	$(CC) $(CCFLAG) -c ats_posmark_dats.c

ats_stamp_sats.o: ats_stamp_sats.c
	$(CC) $(CCFLAG) -c ats_stamp_sats.c
ats_stamp_dats.o: ats_stamp_dats.c
	$(CC) $(CCFLAG) -c ats_stamp_dats.c

ats_symbol_sats.o: ats_symbol_sats.c
	$(CC) $(CCFLAG) -c ats_symbol_sats.c
ats_symbol_dats.o: ats_symbol_dats.c
	$(CC) $(CCFLAG) -c ats_symbol_dats.c

ats_symenv_sats.o: ats_symenv_sats.c
	$(CC) $(CCFLAG) -c ats_symenv_sats.c
ats_symenv_dats.o: ats_symenv_dats.c
	$(CC) $(CCFLAG) -c ats_symenv_dats.c

ats_symtbl_sats.o: ats_symtbl_sats.c
	$(CC) $(CCFLAG) -c ats_symtbl_sats.c
ats_symtbl_dats.o: ats_symtbl_dats.c
	$(CC) $(CCFLAG) -c ats_symtbl_dats.c

ats_list_sats.o: ats_list_sats.c
	$(CC) $(CCFLAG) -c ats_list_sats.c
ats_list_dats.o: ats_list_dats.c
	$(CC) $(CCFLAG) -c ats_list_dats.c

ats_map_lin_sats.o: ats_map_lin_sats.c
	$(CC) $(CCFLAG) -c ats_map_lin_sats.c
ats_map_lin_dats.o: ats_map_lin_dats.c
	$(CC) $(CCFLAG) -c ats_map_lin_dats.c

ats_reference_sats.o: ats_reference_sats.c
	$(CC) $(CCFLAG) -c ats_reference_sats.c
ats_reference_dats.o: ats_reference_dats.c
	$(CC) $(CCFLAG) -c ats_reference_dats.c

ats_set_fun_sats.o: ats_set_fun_sats.c
	$(CC) $(CCFLAG) -c ats_set_fun_sats.c
ats_set_fun_dats.o: ats_set_fun_dats.c
	$(CC) $(CCFLAG) -c ats_set_fun_dats.c

ats_parser_sats.o: ats_parser_sats.c
	$(CC) $(CCFLAG) -c ats_parser_sats.c
ats_parser_dats.o: ats_parser_dats.c
	$(CC) $(CCFLAG) -c ats_parser_dats.c

ats_syntax_sats.o: ats_syntax_sats.c
	$(CC) $(CCFLAG) -c ats_syntax_sats.c
ats_syntax_dats.o: ats_syntax_dats.c
	$(CC) $(CCFLAG) -c ats_syntax_dats.c

ats_syntax_posmark_dats.o: ats_syntax_posmark_dats.c
	$(CC) $(CCFLAG) -c ats_syntax_posmark_dats.c

ats_staexp1_sats.o: ats_staexp1_sats.c
	$(CC) $(CCFLAG) -c ats_staexp1_sats.c
ats_staexp1_dats.o: ats_staexp1_dats.c
	$(CC) $(CCFLAG) -c ats_staexp1_dats.c

ats_staexp1_print_dats.o: ats_staexp1_print_dats.c
	$(CC) $(CCFLAG) -c ats_staexp1_print_dats.c

ats_dynexp1_sats.o: ats_dynexp1_sats.c
	$(CC) $(CCFLAG) -c ats_dynexp1_sats.c
ats_dynexp1_dats.o: ats_dynexp1_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp1_dats.c

ats_dynexp1_print_dats.o: ats_dynexp1_print_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp1_print_dats.c

ats_trans1_env_sats.o: ats_trans1_env_sats.c
	$(CC) $(CCFLAG) -c ats_trans1_env_sats.c
ats_trans1_env_dats.o: ats_trans1_env_dats.c
	$(CC) $(CCFLAG) -c ats_trans1_env_dats.c

ats_e1xp_eval_sats.o: ats_e1xp_eval_sats.c
	$(CC) $(CCFLAG) -c ats_e1xp_eval_sats.c
ats_e1xp_eval_dats.o: ats_e1xp_eval_dats.c
	$(CC) $(CCFLAG) -c ats_e1xp_eval_dats.c

ats_trans1_sats.o: ats_trans1_sats.c
	$(CC) $(CCFLAG) -c ats_trans1_sats.c
ats_trans1_sta_dats.o: ats_trans1_sta_dats.c
	$(CC) $(CCFLAG) -c ats_trans1_sta_dats.c
ats_trans1_dyn_dats.o: ats_trans1_dyn_dats.c
	$(CC) $(CCFLAG) -c ats_trans1_dyn_dats.c

ats_staexp2_sats.o: ats_staexp2_sats.c
	$(CC) $(CCFLAG) -c ats_staexp2_sats.c
ats_staexp2_dats.o: ats_staexp2_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_dats.c

ats_staexp2_print_dats.o: ats_staexp2_print_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_print_dats.c

ats_staexp2_scst_dats.o: ats_staexp2_scst_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_scst_dats.c

ats_staexp2_svVar_dats.o: ats_staexp2_svVar_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_svVar_dats.c

ats_staexp2_dcon_dats.o: ats_staexp2_dcon_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_dcon_dats.c

ats_staexp2_util1_dats.o: ats_staexp2_util1_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_util1_dats.c
ats_staexp2_util2_dats.o: ats_staexp2_util2_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_util2_dats.c

ats_staexp2_pprint_sats.o: ats_staexp2_pprint_sats.c
	$(CC) $(CCFLAG) -c ats_staexp2_pprint_sats.c
ats_staexp2_pprint_dats.o: ats_staexp2_pprint_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_pprint_dats.c

ats_dynexp2_sats.o: ats_dynexp2_sats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_sats.c
ats_dynexp2_dats.o: ats_dynexp2_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_dats.c

ats_dynexp2_print_dats.o: ats_dynexp2_print_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_print_dats.c

ats_dynexp2_dcst_dats.o: ats_dynexp2_dcst_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_dcst_dats.c

ats_dynexp2_dmac_dats.o: ats_dynexp2_dmac_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_dmac_dats.c

ats_dynexp2_dvar_dats.o: ats_dynexp2_dvar_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_dvar_dats.c

ats_dynexp2_util_dats.o: ats_dynexp2_util_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp2_util_dats.c

ats_trans2_env_sats.o: ats_trans2_env_sats.c
	$(CC) $(CCFLAG) -c ats_trans2_env_sats.c
ats_trans2_env_dats.o: ats_trans2_env_dats.c
	$(CC) $(CCFLAG) -c ats_trans2_env_dats.c

ats_stadyncst2_sats.o: ats_stadyncst2_sats.c
	$(CC) $(CCFLAG) -c ats_stadyncst2_sats.c
ats_stadyncst2_dats.o: ats_stadyncst2_dats.c
	$(CC) $(CCFLAG) -c ats_stadyncst2_dats.c

ats_trans2_sats.o: ats_trans2_sats.c
	$(CC) $(CCFLAG) -c ats_trans2_sats.c
ats_trans2_sta_dats.o: ats_trans2_sta_dats.c
	$(CC) $(CCFLAG) -c ats_trans2_sta_dats.c
ats_trans2_dyn1_dats.o: ats_trans2_dyn1_dats.c
	$(CC) $(CCFLAG) -c ats_trans2_dyn1_dats.c
ats_trans2_dyn2_dats.o: ats_trans2_dyn2_dats.c
	$(CC) $(CCFLAG) -c ats_trans2_dyn2_dats.c

ats_macro2_sats.o: ats_macro2_sats.c
	$(CC) $(CCFLAG) -c ats_macro2_sats.c
ats_macro2_dats.o: ats_macro2_dats.c
	$(CC) $(CCFLAG) -c ats_macro2_dats.c

ats_patcst2_sats.o: ats_patcst2_sats.c
	$(CC) $(CCFLAG) -c ats_patcst2_sats.c
ats_patcst2_dats.o: ats_patcst2_dats.c
	$(CC) $(CCFLAG) -c ats_patcst2_dats.c

ats_string_parse_sats.o: ats_string_parse_sats.c
	$(CC) $(CCFLAG) -c ats_string_parse_sats.c
ats_string_parse_dats.o: ats_string_parse_dats.c
	$(CC) $(CCFLAG) -c ats_string_parse_dats.c

ats_printf_c_lats_dats.o: ats_printf_c_lats_dats.c
	$(CC) $(CCFLAG) -c ats_printf_c_lats_dats.c

ats_dynexp3_sats.o: ats_dynexp3_sats.c
	$(CC) $(CCFLAG) -c ats_dynexp3_sats.c
ats_dynexp3_dats.o: ats_dynexp3_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp3_dats.c

ats_dynexp3_print_dats.o: ats_dynexp3_print_dats.c
	$(CC) $(CCFLAG) -c ats_dynexp3_print_dats.c

ats_trans3_env_sats.o: ats_trans3_env_sats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_sats.c
ats_trans3_env_dats.o: ats_trans3_env_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_dats.c

ats_trans3_env_eff_dats.o: ats_trans3_env_eff_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_eff_dats.c

ats_trans3_env_loop_dats.o: ats_trans3_env_loop_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_loop_dats.c

ats_trans3_env_met_dats.o: ats_trans3_env_met_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_met_dats.c

ats_trans3_env_scst_dats.o: ats_trans3_env_scst_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_scst_dats.c

ats_trans3_env_state_dats.o: ats_trans3_env_state_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_state_dats.c

ats_trans3_env_print_dats.o: ats_trans3_env_print_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_env_print_dats.c

ats_staexp2_solve_sats.o: ats_staexp2_solve_sats.c
	$(CC) $(CCFLAG) -c ats_staexp2_solve_sats.c
ats_staexp2_solve_dats.o: ats_staexp2_solve_dats.c
	$(CC) $(CCFLAG) -c ats_staexp2_solve_dats.c

ats_trans3_sats.o: ats_trans3_sats.c
	$(CC) $(CCFLAG) -c ats_trans3_sats.c
ats_trans3_dats.o: ats_trans3_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_dats.c

ats_trans3_pat_dats.o: ats_trans3_pat_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_pat_dats.c

ats_trans3_assgn_dats.o: ats_trans3_assgn_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_assgn_dats.c

ats_trans3_deref_dats.o: ats_trans3_deref_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_deref_dats.c

ats_trans3_view_dats.o: ats_trans3_view_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_view_dats.c

ats_trans3_exp_up_dats.o: ats_trans3_exp_up_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_exp_up_dats.c
ats_trans3_exp_dn_dats.o: ats_trans3_exp_dn_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_exp_dn_dats.c

ats_trans3_loop_dats.o: ats_trans3_loop_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_loop_dats.c

ats_trans3_dec_dats.o: ats_trans3_dec_dats.c
	$(CC) $(CCFLAG) -c ats_trans3_dec_dats.c

ats_constraint_sats.o: ats_constraint_sats.c
	$(CC) $(CCFLAG) -c ats_constraint_sats.c
ats_constraint_dats.o: ats_constraint_dats.c
	$(CC) $(CCFLAG) -c ats_constraint_dats.c

ats_constraint_print_dats.o: ats_constraint_print_dats.c
	$(CC) $(CCFLAG) -c ats_constraint_print_dats.c

ats_solver_fm_sats.o: ats_solver_fm_sats.c
	$(CC) $(CCFLAG) -c ats_solver_fm_sats.c
ats_solver_fm_dats.o: ats_solver_fm_dats.c
	$(CC) $(CCFLAG) -c ats_solver_fm_dats.c

ats_hiexp_sats.o: ats_hiexp_sats.c
	$(CC) $(CCFLAG) -c ats_hiexp_sats.c
ats_hiexp_dats.o: ats_hiexp_dats.c
	$(CC) $(CCFLAG) -c ats_hiexp_dats.c

ats_hiexp_print_dats.o: ats_hiexp_print_dats.c
	$(CC) $(CCFLAG) -c ats_hiexp_print_dats.c

ats_hiexp_util_dats.o: ats_hiexp_util_dats.c
	$(CC) $(CCFLAG) -c ats_hiexp_util_dats.c

ats_trans4_sats.o: ats_trans4_sats.c
	$(CC) $(CCFLAG) -c ats_trans4_sats.c
ats_trans4_dats.o: ats_trans4_dats.c
	$(CC) $(CCFLAG) -c ats_trans4_dats.c

ats_ccomp_sats.o: ats_ccomp_sats.c
	$(CC) $(CCFLAG) -c ats_ccomp_sats.c
ats_ccomp_dats.o: ats_ccomp_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_dats.c

ats_ccomp_env_sats.o: ats_ccomp_env_sats.c
	$(CC) $(CCFLAG) -c ats_ccomp_env_sats.c
ats_ccomp_env_dats.o: ats_ccomp_env_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_env_dats.c

ats_ccomp_print_dats.o: ats_ccomp_print_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_print_dats.c

ats_ccomp_util_dats.o: ats_ccomp_util_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_util_dats.c

ats_ccomp_trans_dats.o: ats_ccomp_trans_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_trans_dats.c

ats_ccomp_trans_clau_dats.o: ats_ccomp_trans_clau_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_trans_clau_dats.c

ats_ccomp_trans_tailcal_dats.o: ats_ccomp_trans_tailcal_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_trans_tailcal_dats.c

ats_ccomp_trans_temp_dats.o: ats_ccomp_trans_temp_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_trans_temp_dats.c

ats_ccomp_emit_dats.o: ats_ccomp_emit_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_emit_dats.c

ats_ccomp_main_dats.o: ats_ccomp_main_dats.c
	$(CC) $(CCFLAG) -c ats_ccomp_main_dats.c

######

clean::
	rm -f *.o

cleanall: clean; rm -f atsopt

######

## end of [Makefile] ##

######
