#  Usage: make -f ../Makefile_ortep3 (in XXXX_build directory)
#  Copy source files to ./build/ortep-build and build ortep executable there
#
#  Note: make sure that the correct version of gcc/gfortran is found in PATH!
#    In the author's environment: (as of 2019/08/15)
#    Mac: export PATH=/usr/local/gcc8/bin:$PATH
#    Win: enable_brew

ifeq ($(TARGET_PLATFORM),)
  ifeq ($(findstring darwin,$(OSTYPE)),darwin)
    export TARGET_PLATFORM=MAC
  else
    export TARGET_PLATFORM=MSW
  endif
endif

ifeq ($(TARGET_PLATFORM),MAC)
  FFLAGS=-std=legacy -isysroot /Developer/SDKs/MacOSX10.6.sdk -mmacosx-version-min=10.6 -arch x86_64
  LIBQUADMATH=/usr/local/gcc8/lib/libquadmath.a
# FLDFLAGS= -nodefaultlibs -lgfortran-static -lgcc -lc -lm -lSystem -lSystemStubs -lgfortranbegin
# FSTATICFLAGS= -static-libgcc -Wl,-Bstatic -lgfortran -lquadmath -Wl,-Bdynamic -lm
  FSTATICFLAGS= -static-libgfortran -static-libgcc $(LIBQUADMATH)
  FLDFLAGS= -lgcc -lc -lm -lSystem $(FSTATICFLAGS)
  EXE_SUFFIX=
  FORTRAN=gfortran
else
  ifeq ($(TARGET_ARCH),x86_64)
    CROSS_PREFIX=x86_64-w64-mingw32-
  else
    CROSS_PREFIX=i686-w64-mingw32-
  endif
  FFLAGS=-std=legacy 
  FSTATICFLAGS= -static-libgcc -Wl,-Bstatic -lgfortran -lquadmath -lpthread -Wl,-Bdynamic -lm
  FLDFLAGS=-Wl,--stack=33554432 $(FSTATICFLAGS)
  EXE_SUFFIX=.exe
  FORTRAN = gcc
endif
export FFLAGS
export FLDFLAGS

OPWD = $(PWD)
TEPDIR = $(OPWD)/../ortep3
BUILDDIR = build/ortep-build
TEPNAME = ortep3_modified

ortep3/ortep3$(EXE_SUFFIX) : $(BUILDDIR)/ortep3$(EXE_SUFFIX)
	(mkdir -p ortep3; cp -p $(BUILDDIR)/ortep3$(EXE_SUFFIX) ortep3)

$(BUILDDIR)/ortep3$(EXE_SUFFIX) : $(TEPDIR)/$(TEPNAME).f
	(mkdir -p $(OPWD)/$(BUILDDIR); cp -p $(TEPDIR)/$(TEPNAME).f $(OPWD)/$(BUILDDIR)/)
	(cd $(OPWD)/$(BUILDDIR) && $(CROSS_PREFIX)$(FORTRAN) $(FFLAGS) -fno-automatic -O -w -c $(TEPNAME).f && $(CROSS_PREFIX)$(FORTRAN) -o ortep3$(EXE_SUFFIX) $(TEPNAME).o $(FFLAGS) $(FLDFLAGS) -O -w)

clean :
	rm -rf $(BUILDDIR)
