#*******************************************************************************
# E.S.O. - VLT project
#
# "@(#) $Id: Makefile_Darwin,v 1.38 2004/07/15 16:38:35 vltsccm Exp $"
#
# Makefile of fposs
#
# who       when        what
# --------  ----------  --------------------------------------------------------
# jpr/pba   2016/06/22  PPRS-65719: Added support for Mac OSX.
# pbaksai   2014/07/22  CCB-000755: Support for 64 bits.
#                       - Added location of X11 lib.
# pbaksai   2014/07/10  CCB-000755: Support for 64 bits.
#                       - Fixed path for chmod command.
# rschmutz  2004-07-14  Added pafchecksum & crc32
# rschmutz  2004-05-22  Adapted to APR2004 (Tcl/Tk 8.4).
# rschmutz  28/01/03    Create configure_expert.
# rschmutz  23/11/02    This header created - previous history see below.
#
#*******************************************************************************
# REMARKS
#    None
#-------------------------------------------------------------------------------
#
#              C o n f i g u r e   M a k e f i l e   ( D a r w i n )
#
#   This is a specialised makefile used to build those parts of the 
#   AAO fibre configuration program 'configure' that require system-dependent
#   treatment. This version is for use on a MacOS X (Darwin) system. It has 
#   been developed on a MacOS X 10.1 system with Tcl/Tk 8.3 installed using
#   'fink', so the relevant include files and libraries are found in /sw.
#
#   Author(s): Keith Shortridge, AAO (KS)
#
#   History:
#
#    8th Aug 2002.  Original version, KS.
#   13th Sep 2002.  Now includes -D__macosx__ in all compliations, including 
#                   when building configure_full.
#
#*******************************************************************************
#  location of additional sources
#
X11_LIB := $(shell (test -f /usr/lib/libX11.so && echo /usr/lib) || \
                   (test -f /usr/lib/libX11.so.6 && echo /usr/lib) || \
                   (test -d /usr/X11R?/lib && echo /usr/X11R?/lib) || \
                   echo ../tcltk/lib)
X11_DIR = /usr/X11R6/include
TCL_LIB = /opt/local/lib
TCL_DIR = /opt/local/include
#TCL_LIB = /usr/lib
#TCL_DIR = /usr/include
SDS_SRC = sds
SLA_SRC = sla
DRAMA_SRC = drama
FPCOL_SRC = fpcol
PAFCHK_MODULE = ../../pafchk

#*******************************************************************************
#  Standard C settings. We use gcc-mp-5 with optimise selected and with the maximum
#  warnings . The DFLAMES_ONLY flag prevents the inclusion of code to support
#  the AAO's 2dF and 6dF instruments, limiting support to ESO's FLAMES system.

#COPT = -D__macosx__ -O -pthread -DPOSIX_THREADS
#COPT = -D__macosx__ -O
COPT = -D__macosx__ -g -O0 -std=c11
CWARNINGS = -Wall -ansi -DUSE_COMPAT_CONST -DUSE_INTERP_RESULT
CINCLUDES = -I$(SDS_SRC) -I$(DRAMA_SRC) -I$(SLA_SRC) -I$(FPCOL_SRC) -I$(PAFCHK_MODULE)/include -I$(X11_DIR) -I$(TCL_DIR) -I.
CFLAGS = -DFLAMES_ONLY -DDRAMA_BUILD $(CWARNINGS) $(COPT) $(CINCLUDES)
CC = /opt/local/bin/clang-mp-14
CC = /opt/local/bin/gcc-mp-12
CC = gcc

#*******************************************************************************
#  'configure' - the default taget for this Makefile - builds the
#  main FPOSS configure program.
   
TCL_FILES = configure.tcl mimic.tcl procs.tcl util.tcl

../bin/configure : ../lib/configure
	@echo "TCL_DIR = >$(TCL_DIR)<"
	@echo "TCL_LIB = >$(TCL_LIB)<"
	@echo "X11_DIR = >$(X11_DIR)<"
	@echo "X11_LIB = >$(X11_LIB)<"
	/bin/cp $(TCL_FILES) ../lib
	/bin/cp configure.sh ../bin/configure
	/bin/chmod +x ../bin/configure
	/bin/cp configure_expert.sh ../bin/configure_expert
	/bin/chmod +x ../bin/configure_expert
	/bin/rm -f ../lib/configure_expert
	/bin/ln -s configure ../lib/configure_expert

../lib/configure : libsds.a configure.o config_method.o config.o FpilExtras.o \
           mess.o fpil.o fpilcons.o fpilmodel.o fpcolFpil.o fpcolBase.o \
           fpcolMdl.o fpcolMdlFit.o fpcolMdlCalModel.o \
           tdFparse.o tdFconvertSds.o \
           configversion.o convertPAF.o sla.o pafchkChecksum.o crc32.o
	$(CC) -o ../lib/configure configure.o config_method.o config.o FpilExtras.o \
           mess.o fpil.o fpilcons.o fpilmodel.o fpcolFpil.o fpcolBase.o \
           fpcolMdl.o fpcolMdlFit.o fpcolMdlCalModel.o \
           tdFparse.o tdFconvertSds.o \
           configversion.o convertPAF.o sla.o pafchkChecksum.o crc32.o \
	   libsds.a \
           -L$(TCL_LIB) -ltk -ltcl \
           -L$(X11_LIB) -lX11 -lm
              
#  These rules control the building of the SDS library, libsds.a
          
SDS_OBJECTS = arg.o ers_imp.o sds.o erssprintf.o ersvsprintf.o \
   sdsutil.o sdstclinit.o sdstcl.o
         
libsds.a : $(SDS_OBJECTS)
	ar -rv libsds.a $(SDS_OBJECTS)
	ranlib libsds.a

#  sdslist is a utility program for examining SDS files. It isn't needed
#  by configure, but can be a useful diagnostic tool.
   
sdslist : $(SDS_SRC)/sdslist.c $(SDS_SRC)/sdsutil.c $(DRAMA_SRC)/status.h \
          $(SDS_SRC)/sds.h libsds.a
	$(CC) $(CFLAGS) $(SDS_SRC)/sdslist.c $(SDS_SRC)/sdsutil.c -o sdslist libsds.a

#  Include file dependencies
   
arg.o : $(SDS_SRC)/arg.c $(DRAMA_SRC)/status.h $(DRAMA_SRC)/Ers.h \
        $(SDS_SRC)/sds.h $(SDS_SRC)/arg.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/arg.c

config.o : config.c $(DRAMA_SRC)/drama.h $(SDS_SRC)/sds.h $(SDS_SRC)/arg.h \
           $(DRAMA_SRC)/Ers.h tdFconfig.h config_err.h

config_method.o : config_method.c $(DRAMA_SRC)/status.h tdFconfigMethod.h \
                  config_err.h

configure.o : configure.c $(DRAMA_SRC)/drama.h $(DRAMA_SRC)/status.h \
              $(SDS_SRC)/sds.h $(DRAMA_SRC)/Ers.h $(DRAMA_SRC)/mess.h \
              $(SDS_SRC)/sdstcl.h $(SDS_SRC)/arg.h $(SDS_SRC)/arg_err.h \
              tdFconvert.h convertPAF.h $(SDS_SRC)/sds_err_msgt.h \
              $(SDS_SRC)/arg_err_msgt.h conf_err_msgt.h config_err_msgt.h \
              fpil_err_msgt.h conf_err.h $(FPCOL_SRC)/fpcolFpil.h

convertPAF.o : convertPAF.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h \
               $(SLA_SRC)/slalib.h $(SLA_SRC)/slamac.h tdFconvert.h \
               $(DRAMA_SRC)/Ers.h convertPAF.h

ers_imp.o : $(DRAMA_SRC)/ers_imp.c $(DRAMA_SRC)/Ers.h
	$(CC) $(CFLAGS) -c $(DRAMA_SRC)/ers_imp.c

erssprintf.o : $(DRAMA_SRC)/erssprintf.c $(DRAMA_SRC)/Ers.h
	$(CC) $(CFLAGS) -c $(DRAMA_SRC)/erssprintf.c

ersvsprintf.o : $(DRAMA_SRC)/ersvsprintf.c $(DRAMA_SRC)/Ers.h
	$(CC) $(CFLAGS) -c $(DRAMA_SRC)/ersvsprintf.c

fpcolBase.o : $(FPCOL_SRC)/fpcolBase.c $(FPCOL_SRC)/fpcolBase.h \
              $(FPCOL_SRC)/fpcolInstDescr.h
	$(CC) $(CFLAGS) -c $(FPCOL_SRC)/fpcolBase.c

fpcolFpil.o : $(FPCOL_SRC)/fpcolFpil.c $(FPCOL_SRC)/fpcolFpil.h \
              $(DRAMA_SRC)/drama.h $(SDS_SRC)/sds.h \
              $(DRAMA_SRC)/Ers.h $(FPCOL_SRC)/fpDefines.h \
              $(FPCOL_SRC)/fpcolBase.h $(FPCOL_SRC)/fpcolFpil.h \
              $(FPCOL_SRC)/fpcolMdl.h $(FPCOL_SRC)/fpcolInstDescr.h
	$(CC) $(CFLAGS) -c $(FPCOL_SRC)/fpcolFpil.c
    
fpil.o : fpil.c fpil.h fpil_err.h

fpilcons.o : fpilcons.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h fpil.h fpil_err.h

FpilExtras.o : FpilExtras.c fpil.h

fpilmodel.o : fpilmodel.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h fpil.h \
              fpil_err.h

fpcolMdl.o : $(FPCOL_SRC)/fpcolMdl.c $(FPCOL_SRC)/fpcolMdl.h \
             $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h \
             $(SLA_SRC)/slalib.h $(SLA_SRC)/slamac.h $(DRAMA_SRC)/Ers.h
	$(CC) $(CFLAGS) -c $(FPCOL_SRC)/fpcolMdl.c

fpcolMdlFit.o : $(FPCOL_SRC)/fpcolMdlFit.c $(FPCOL_SRC)/fpcolMdl.h
	$(CC) $(CFLAGS) -c $(FPCOL_SRC)/fpcolMdlFit.c

fpcolMdlCalModel.o : $(FPCOL_SRC)/fpcolMdlCalModel.c \
                     $(FPCOL_SRC)/fpcolMdlCalModel.h
	$(CC) $(CFLAGS) -c $(FPCOL_SRC)/fpcolMdlCalModel.c

mess.o : $(DRAMA_SRC)/mess.c $(DRAMA_SRC)/status.h $(DRAMA_SRC)/drama.h \
         $(DRAMA_SRC)/mess.h
	$(CC) $(CFLAGS) -c $(DRAMA_SRC)/mess.c

sds.o : $(SDS_SRC)/sds.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/sds.c

sdslist.o : $(SDS_SRC)/sdslist.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/arg.c

sdstcl.o : $(SDS_SRC)/sdstcl.c $(SDS_SRC)/sdstcl.h $(SDS_SRC)/arg.h \
           $(DRAMA_SRC)/Ers.h $(SDS_SRC)/sds_err.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/sdstcl.c

sdstclinit.o : $(SDS_SRC)/sdstclinit.c $(SDS_SRC)/sdstcl.h \
               $(SDS_SRC)/arg_err.h $(DRAMA_SRC)/Ers.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/sdstclinit.c

sdstest.o : $(SDS_SRC)/sdstest.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/sdstest.c

sdsutil.o : $(SDS_SRC)/sdsutil.c $(DRAMA_SRC)/status.h $(SDS_SRC)/sds.h
	$(CC) $(CFLAGS) -c $(SDS_SRC)/sdsutil.c

sla.o : $(SLA_SRC)/sla.c $(SLA_SRC)/slalib.h $(SLA_SRC)/slamac.h
	$(CC) $(CFLAGS) -c $(SLA_SRC)/sla.c

tdFconvertSds.o : tdFconvertSds.c $(SDS_SRC)/sds.c $(DRAMA_SRC)/status.h \
                  $(SDS_SRC)/sds.h conf_err.h tdFconvert.h

tdFparse.o : tdFparse.c $(DRAMA_SRC)/status.h $(SLA_SRC)/slalib.h \
             $(DRAMA_SRC)/Ers.h \
             $(SDS_SRC)/sds.h tdFconvert.h conf_err.h

pafchkChecksum.o : $(PAFCHK_MODULE)/src/pafchkChecksum.c $(PAFCHK_MODULE)/include/pafchk.h 
	$(CC) $(CFLAGS) -c $(PAFCHK_MODULE)/src/pafchkChecksum.c

crc32.o :  $(PAFCHK_MODULE)/src/crc32.c $(PAFCHK_MODULE)/include/zconf.h $(PAFCHK_MODULE)/include/zlib.h
	$(CC)  -DFLAMES_ONLY -DDRAMA_BUILD $(CWARNINGS) $(COPT) -I$(PAFCHK_MODULE)/include -c $(PAFCHK_MODULE)/src/crc32.c

#*******************************************************************************
#___oOo___

