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

include $(gagadmdir)/Makefile.def

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

LIB_IDENTITY = clic

INTERFACES_DISABLE = yes

# Creates pyclic.so (implicit compilation of clic-pyimport.c)
IMPORT_FROM_PYTHON = yes

LIB_EXPORTS = clic_clic.inc clic_dcomp.inc clic_dheader.inc		\
clic_display.incpp clic_number.inc clic_parameter.incpp clic_par.inc	\
clic_point.inc clic_rdata.inc clic_sba.inc clic_xy_code.inc		\
clic_proc_par.inc clic_constant.inc clic_file.mod clic_panels.inc

LIB_C_OBJECTS = clic-sicimport.o

CLIC_LIB_INCLUDES = clic_buffers.inc clic_clic.inc clic_constant.inc	\
clic_dcomp.inc clic_dheader.inc clic_display.incpp clic_fit.inc		\
clic_fits.inc clic_flags.inc clic_gauss.inc clic_gaussdata.inc		\
clic_number.inc clic_panels.inc clic_par.inc clic_parameter.incpp	\
clic_point.inc clic_rdata.inc clic_sba.inc clic_skydip.inc		\
clic_windowfile.inc clic_stations.inc clic_tabbuf.inc clic_title.inc	\
clic_virtual.inc clic_work.inc clic_xy_code.inc clic_proc_par.inc	\
clic_tpfit.inc clic_new_bure_panels.inc clic_version.inc

CLIC_LIB_OBJECTS = blockdata.o check.o chopper.o clic_run.o		\
clic_atmos.o sub_atmos.o clic_compress.o clic_copy.o clic_cursor.o	\
clic_drop.o clic_flag.o clic_get.o clic_file.o clic_fits.o clic_mark.o	\
clic_mask.o clic_modify.o clic_modules.o clic_plot.o clic_print.o	\
clic_set.o clic_show.o clic_table.o sub_table.o clic_variable.o		\
clic_write.o continuum.o convert.o copyw.o crall.o cubspl.o		\
cut_header.o cwall.o date.o eix.o file.o find.o fit.o fix.o gauss.o	\
get_first.o header.o ignore.o init_clic.o input.o liste.o message.o	\
newformat.o number.o out0.o clic_popup.o planet_flux.o rall.o rdump.o	\
modify_phases.o read_data.o read_data_sub.o read_gain.o read_spec.o	\
rix.o robs.o rrecord.o rsec.o rzero.o set_pass.o scaling.o		\
solve_baseline.o solve_cal.o solve_cal_ant.o solve_delay.o		\
solve_five.o solve_flux.o solve_focus.o solve_gain.o solve_pass.o	\
solve_pass_ant.o solve_pseudo.o solve_holo.o solve_panels.o		\
solve_point.o solve_skydip.o solve_corr.o sort.o store_cal.o		\
store_flag.o store_flux.o store_pass.o store_mon.o subset.o system.o	\
title.o titout.o zero.o util_clic.o polyant.o splinant.o		\
clic_monitor.o solve_holo_sub.o solve_mon.o plot_power.o clic_wvr.o	\
solve_wvr.o store_wvr.o clic_clone.o clic_grid_tp.o solve_tp.o		\
mod_telescope.o clic-package.o clic-message.o new_table.o		\
sg_line_table.o table_passband.o clic_index.o clic_blank.o

# Mathematical library dependency
ifeq ($(LINEAR),lapack)
  LINEAR_LIB_OBJECTS = singular.o mth_lapack.o
  LINEAR_LIB_DEPENDS = -llapack -lblas
else 
  ifeq ($(LINEAR),nag)
    LINEAR_LIB_OBJECTS = mth_nag.o
    LINEAR_LIB_DEPENDS = -lnag
  else	
    LINEAR_LIB_OBJECTS = singular.o mth_none.o
    LINEAR_LIB_DEPENDS = 
  endif
endif

# ALMA SDM filler
ifeq ($(SDM_PRESENT),yes)
  SDM_LIB_F_OBJECTS = write_sdm.o write_sdm_tables.o alma_sdm.o		\
  sdm_correlatormode.o sdm_feed.o sdm_receiver.o sdm_antenna.o		\
  sdm_field.o sdm_scan.o sdm_beam.o sdm_focusmodel.o sdm_source.o	\
  sdm_configdescription.o sdm_freqoffset.o sdm_datadescription.o	\
  sdm_enumerations.o sdm_history.o sdm_spectralwindow.o sdm_doppler.o	\
  sdm_modules.o sdm_observation.o sdm_station.o sdm_ephemeris.o		\
  sdm_pointingmodel.o sdm_switchcycle.o sdm_polarization.o		\
  sdm_execblock.o sdm_processor.o sdm_weather.o sdm_state.o		\
  sdm_pointing.o sdm_totalpower.o sdm_syscal.o sdm_main.o sdm_focus.o	\
  sdm_calatmosphere.o sdm_caldevice.o sdm_calholography.o run_sdm.o	\
  sdm_data.o read_sdm.o sdm_library.o read_sdm_tables.o			\
  read_sdm_holotables.o write_sdm_holotables.o sdm_squarelawdetector.o	\
  sdm_holography.o sdm_sbsummary.o sdm_almaradiometer.o
  SDM_LIB_INCLUDES = sdm_identifiers.inc sdm_modules.f90 sdm_enumerations.f90
  SDM_LIB_DEPENDS = -lasdmStandalone -lalmaEnumerationsStandalone -lasdmBinaries -lstdc++ -lxml2 -lboost_regex
else
  SDM_LIB_F_OBJECTS = 
  SDM_LIB_INCLUDES = 
  SDM_LIB_DEPENDS = 
endif

# Obsolescent TIFITS filler
ifeq ($(CFITSIO_PRESENT),yes)
  TIFITS_LIB_OBJECTS = write_fitsti.o read_fitsti.o			\
  check_fits_datapar.o get_fits_calibr.o get_fits_data.o		\
  get_fits_datapar.o get_fits_gain.o get_fits_passband.o		\
  write_fits_data.o write_fits_datapar.o write_fits_dobs.o rescale.o	\
  printerror.o f_tform.o write_fits_holodata.o write_fits_passband.o	\
  write_fits_gain.o write_fits_calibr.o init_alma_fits.o		\
  get_fits_holodata.o run_tifits.o
else
  TIFITS_LIB_OBJECTS =
endif

# Sew dependencies together
LIB_F_OBJECTS = $(CLIC_LIB_OBJECTS) $(LINEAR_LIB_OBJECTS) $(SDM_LIB_F_OBJECTS) $(TIFITS_LIB_OBJECTS)
LIB_INCLUDES = $(CLIC_LIB_INCLUDES) $(SDM_LIB_INCLUDES)
LIB_DEPENDS = -lclassic $(ASTRO_LIBS) $(GREG_LIBS) \
              $(LINEAR_LIB_DEPENDS) $(SDM_LIB_DEPENDS)
ADD_LIBS += $(GREG_SYS_LIBS)

# Uncomment the next line if you want to compile CLIC for 64 antennas.
# LOCAL_CPPFLAGS = -D CLIC64="clic64"

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

include $(gagadmdir)/Makefile.lib

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

include $(builddir)/Makefile.deps

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