Up to Installation and compilation
Hello, everyone I'm trying to compile and install OASIS-MCT(oasis3-mct-OASIS3-MCT_5.0), but I'm having some problems.I just finished downloading the source code, followed the instructions in Chapter 6 of the manual, switched to the oasis3-MCT/util/make dir directory, and was ready to start compiling, but without doing anything else, I directly typed the command "make -f TopMakefileOasis3 help" into the terminal, and got an error saying " make:***no rule to make target '/home/fvcom/oasis3-mct-OASIS3 MCT_5.0/util/make_dir/make.intel_nemo_lenovo'. stop." Please ask how to solve this problem, by the way, I would like to consult a more detailed compilation steps (my computer is a virtual machine Ubuntu-20.04.6-live-server-amd64, the compiler has gcc, g++, gfortran, Intel oneAPI HPC Toolkit I'm not sure if I need to make a make.intel_nemo_lenovo file and then run the "make -f TopMakefileOasis3 help" command under the location of the file, but I'm not sure if I need to make a make.intel_nemo_lenovo file and then run "make -f TopMakefileOasis3 help" under the location of the file.) Hope to hear from you soon!
I'm the one who asked the question above.
I've generally found my previous compilation problem, but now I have a new one: when I use the command "make -f TopMakefileOasis3", I get an error saying: Compilation of the OASIS3-MCT static Compilation of the OASIS3-MCT static libraries
Build output to /home/20cl91p02/NEXTGEN/OA/oasis3-mct/util/make_dir/COMP.log
Build errors to /home/20cl91p02/NEXTGEN/OA/oasis3-mct/util/make_dir/COMP.err
gmake[1]: Entering directory '/home/fvcom/oasis3-mct/util/make_dir'
=> Creating directories for compiling the static libraries
in /home/20cl91p02/NEXTGEN/OA/oasis3_mct_install/build/lib
mkdir: cannot create directory '/home/20cl91p02': Permission denied
gmake[1]: *** [TopMakefileOasis3:143: makedirs-static] Error 1
gmake[1]: Leaving directory '/home/fvcom/oasis3-mct/util/make_dir'
make: *** [TopMakefileOasis3:91: static-libs-fortran] Error 2
The associated COMP.log shows: checking whether the compiler supports GNU Fortran... yes
checking whether /usr/bin/mpif90 -Wall -I/usr/include accepts -g... checking for Fortran flag to compile... yes
checking for Fortran flag to compile .F90 files... F90 files... none
checking for mpif90... yes checking for Fortran flag to compile . /usr/bin/mpif90 -Wall -I/usr/include
checking for MPI_Init... checking for MPI_Init... yes
checking for mpif.h... yes checking for mpif.h... yes
Checking Compiler Version
checking how to get the version output from /usr/bin/mpif90 -Wall -I/usr/include ... --version
Checking for Fortran flag to compile preprocessed .F files... --version checking for Fortran flag to compile preprocessed .
checking how to define symbols for preprocessed Fortran... -F files... none checking how to define symbols for preprocessed Fortran...
checking build system type... x86_64-pc-linux-gnu
x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu
checking how to get verbose linking output from /usr/bin/mpif90 -Wall -I/usr/include ... -v
checking for Fortran libraries of /usr/bin/mpif90 -Wall -I/usr/include ... -L/usr/lib/mpif90 -Wall -I/usr/include ... -L/usr/lib/x86_64-linux-gnu/openmpi/lib -L/opt/intel/oneapi/mpi/2021.6.0//libfabric/lib/... /lib -L/opt/intel/oneapi/mpi/2021.6.0//lib/... /lib -L/opt/intel/oneapi/compiler/2022.1.0/linux/lib/... /lib -L/usr/lib/gcc/x86_64-linux-gnu/9 -L/usr/lib/gcc/x86_64-linux-gnu/9/... /... /... /.../.../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/9/... /.../... /... /... /... /.../.../.../lib -L/lib/x86_64-linux-gnu -L/lib/... /... /... /... /lib -L/lib/x86_64-linux-gnu -L/usr/lib/... /lib -L/opt/intel/oneapi/tbb/2021.6.0/env/... /lib/intel64/gcc4.8 -L/opt/intel/oneapi/mpi/2021.6.0//libfabric/lib -L/opt/intel/oneapi/mpi/2021.6.0//lib/release -L/opt/intel/oneapi /mpi/2021.6.0//lib -L/opt/intel/oneapi/compiler/2022.1.0/linux/compiler/lib/intel64_lin -L/opt/intel/oneapi/compiler/2022.1.0/linux/ lib -L/opt/intel/oneapi/clck/2021.6.0/lib/intel64 -L/usr/lib/gcc/x86_64-linux-gnu/9/... /... /... -lmpi_usempif08 -lmpi_usempi_ignore_tkr -lmpi_mpifh -lmpi -lgfortran -lm -lquadmath -lpthread
checking for dummy main to link with Fortran libraries... checking for dummy main to link with Fortran libraries....
checking for Fortran name-mangling scheme... lower case, underscore, no extra underscore
Hostname=ubuntu
Machine=x86_64
OS=Linux
Fortran Compiler is GNU
checking if Fortran compiler supports allow-mismatch flag... checking if Fortran compiler supports allow-mismatch flag...
checking if Fortran compiler supports mismatch_all flag... no checking if Fortran compiler supports mismatch_all flag.
checking for ranlib... no checking for ranlib... ranlib
Output Variables: {CC=gcc -I/usr/include } {CFLAGS=-g -O2} {FC=/usr/bin/mpif90 -Wall -I/usr/include } {FCFLAGS=} {PROGFCFLAGS=} {CPPDEFS= - - DSYSLINUX -DCPRGNU} {OPT=-OO DSYSLINUX -DCPRGNU} {OPT=-O2} {DEBUG=} {REAL8=} {BIT64=} {ENDIAN=} {MPIFC=/usr/bin/mpif90 -Wall -I/usr/include } {MPILIBS=} {MPIHEADER=} { INCLUDEFLAG=-I} {INCLUDEPATH=} {AR=ar cq} {RANLIB=ranlib} {BABELROOT=} {COMPILER_ROOT=} {PYTHON=} {PYTHONOPTS=} {FORT_SIZE=} {prefix=NONE} { SRCDIR=} {FC_DEFINE=-D}
configure: creating . /config.status
config.status: creating Makefile.conf
config.status: creating config.h
config.status: config.h is unchanged
Please check the Makefile.conf
Please check the Makefile.conf
make[3]: Nothing to be done for 'all'.
make[3]: Nothing to be done for 'all'.
/usr/bin/mpif90 -Wall -I/usr/include -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/psmile.MPI1 -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/pio -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/mct -Duse_comm_MPI1 -D__VERBOSE -DTREAT_OVERLAY -I/usr/include -c /home/fvcom/oasis3-mct/lib/script/src/remap_ conserv.F90
make[1]: Entering directory '/home/fvcom/compile_oa3-mct/build/lib/scrip'
/usr/bin/mpif90 -Wall -I/usr/include -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/psmile.MPI1 -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/pio -I/home/fvcom/oasis3-mct/... /compile_oa3-mct/build/lib/mct -Duse_comm_MPI1 -D__VERBOSE -DTREAT_OVERLAY -I/usr/include -c /home/fvcom/oasis3-mct/lib/script/src/remap_ conserv.F90
make[1]: Leaving directory '/home/fvcom/compile_oa3-mct/build/lib/scrip'
What can I do to fix this?
Hello, To start with, I see the error message: " mkdir: cannot create directory '/home/20cl91p02': Permission denied" at the beginning of your mail. Can you fix that first and then see what happens? Regards, Sophie
/home/20cl91p02': Permission denied" this is an example directory (it's in my system) :) First change the directory in the TopMakefileOasis3 file GIVE your own directory.
Hi, Another thing is /home/fvcom/oasis3-mct/util/make_dir/ you find some file make.intel@example file. you need to set COUPLE and ARCHDIR example # COUPLE : path for oasis3-mct main directory #Change the line below COUPLE = /home/20cl91p02/NEXTGEN/OA/oasis3-mct # # ARCHDIR : directory created when compiling #Change the line below ARCHDIR = /home/20cl91p02/NEXTGEN/OA/oasis3_mct_install you can take some help from https://www.cerfacs.fr/site-oasis/forum/oa_main.php?c=146 or you can send me an email. Thanks #Subhadeep Maishal #Email: subhadeepmaishal@kgpian.iitkgp.ac.in
Thank you very much for your detailed answers, I benefited a lot!
##############################################################################
# This is the top makefile for compiling OASIS3-MCT coupling library including
# static and shared versions of mct/mpeu, scrip, psmile
# (i.e. interpolation and communication), and c-bindings
# Platform dependent settings, compiler options, cpp keys,
# paths has to be set in an include file indicated in make.inc.
# Extra targets and paths are defined in the automatically included make.common
# for basic help:
# gmake -f TopMakefileOasis3 help
########################################################################################
include makeubuntu.inc
include make.common
########################################################################################
SHELL = /bin/sh
ifeq ($(MAKE),make)
MAKEf = $(MAKE) --no-print-directory -f TopMakefileOasis3
else
MAKEf = $(MAKE) -f TopMakefileOasis3
endif
# Defining path for FORTRAN and C sources
LIBSRC = $(COUPLE)/lib
# Log and error files for compiling
LOGSTATIC = $(COUPLE)/util/make_dir/COMP.log
ERRSTATIC = $(COUPLE)/util/make_dir/COMP.err
# Log and error files for compiling the shared libraries
LOGSHARED = $(COUPLE)/util/make_dir/COMP-shared.log
ERRSHARED = $(COUPLE)/util/make_dir/COMP-shared.err
# Log and error files for installing PyOasis
LOGPYO = $(COUPLE)/util/make_dir/COMP-pyoasis.log
ERRPYO = $(COUPLE)/util/make_dir/COMP-pyoasis.err
########################################################################################
# For backwards compatibility
default: static-libs-fortran
oasis3_psmile: static-libs-fortran
oasis3-psmile: static-libs-fortran
makedirs: makedirs-static
makemct: makemct-static
makelibs: makescrip-static
makepsmile: makepsmile-static
cleanlibs: clean-static
########################################################################################
.DEFAULT:
@echo " "
@echo "make: *** No rule to make target \`$@\`. Stop."
@$(MAKEf) help
help:
@echo " "
@echo "TopMakefileOasis3 recommended targets:"
@echo " static-libs = static oasis libraries including fortran and c-bindings"
@echo " shared-libs = shared (dynamic) oasis libraries including fortran and c-bindings"
@echo " pyoasis = builds and installs shared-libs plus higher and intermediate python classes"
@echo " realclean = cleans and resets the build"
@echo "TopMakefileOasis3 alternative targets:"
@echo " oasis3-psmile = static-libs-fortran (for backwards compatibility)"
@echo " static-libs-fortran = static oasis libraries for fortran only"
@echo " shared-libs-fortran = shared (dynamic) oasis libraries for fortran only"
@echo " "
########################################################################################
static-and-shared-libs-fortran: static-libs-fortran shared-libs-fortran
static-libs-fortran: check-vars
@echo ""
@echo "Compilation of the OASIS3-MCT static libraries"
@echo "Build output to $(LOGSTATIC)"
@echo "Build errors to $(ERRSTATIC)"
@rm -f $(LOGSTATIC) $(ERRSTATIC)
$(call check_defined, AR, static lib. archiver command)
$(call check_defined, ARFLAGS, static lib. archiver options)
@$(MAKEf) makedirs-static
@$(MAKEf) makemct-static
@$(MAKEf) makescrip-static
@$(MAKEf) makepsmile-static
@(echo "DONE" ; echo "")
shared-libs-fortran: check-vars
@echo ""
@echo "Compilation of the OASIS3-MCT shared libraries"
@echo "Build output to $(LOGSHARED)"
@echo "Build errors to $(ERRSHARED)"
@rm -f $(LOGSHARED) $(ERRSHARED)
$(call check_defined, DYNOPT LDDYNOPT, shared lib. compilation options)
@$(MAKEf) makedirs-shared
@$(MAKEf) makemct-shared
@$(MAKEf) makescrip-shared
@$(MAKEf) makepsmile-shared
@(echo "DONE" ; echo "")
static-libs: static-libs-fortran
@echo "Compilation of the OASIS3-MCT C bindings static libraries"
@echo "Build output to $(LOGSTATIC)"
@echo "Build errors to $(ERRSTATIC)"
@$(MAKEf) makecbindings-static
@(echo "DONE" ; echo "")
shared-libs: shared-libs-fortran
@echo "Compilation of the OASIS3-MCT C bindings shared libraries"
@echo "Build output to $(LOGSHARED)"
@echo "Build errors to $(ERRSHARED)"
@$(MAKEf) makecbindings-shared
@(echo "DONE" ; echo "")
pyoasis: shared-libs
@echo "Installation of PyOasis"
@echo "Build output to $(LOGPYO)"
@echo "Build errors to $(ERRPYO)"
@rm -f $(LOGPYO) $(ERRPYO)
$(call check_defined, MPIRUN, mpi launcher mnemonic helper)
@$(MAKEf) makedirs-py
@$(MAKEf) makepyoasis
@(echo "DONE" ; echo "")
realclean: check-vars
$(MAKEf) clean-static clean-shared clean-pyoasis
########################################################################################
# Rules for creating build and library directories
makedirs-static:
@echo "=> Creating directories for compiling the static libraries"
@echo " in $(LIBBUILD)"
@mkdir -p $(LIBBUILD)/scrip
@mkdir -p $(LIBBUILD)/mctdir
@mkdir -p $(LIBBUILD)/mct
@mkdir -p $(LIBBUILD)/psmile.$(CHAN)
@mkdir -p $(LIBBUILD)/cbindings
@mkdir -p $(ARCHDIR)/include
@mkdir -p $(ARCHDIR)/lib
makedirs-shared:
@echo "=> Creating directories for compiling the shared libraries"
@echo " in $(LIBBUILDSHARED)"
@mkdir -p $(LIBBUILDSHARED)/scrip
@mkdir -p $(LIBBUILDSHARED)/mctdir
@mkdir -p $(LIBBUILDSHARED)/mct
@mkdir -p $(LIBBUILDSHARED)/psmile.$(CHAN)
@mkdir -p $(LIBBUILDSHARED)/cbindings
@mkdir -p $(ARCHDIR)/include
@mkdir -p $(ARCHDIR)/lib
makedirs-py:
@echo "=> Creating pyoasis installation path"
@mkdir -p $(ARCHDIR)/python/pyoasis
########################################################################################
# Rules for cleaning
clean-static:
@echo cleaning oasis3-mct static libraries
rm -r -f $(LIBBUILD)/scrip
rm -r -f $(LIBBUILD)/mct
rm -r -f $(LIBBUILD)/mctdir
rm -r -f $(LIBBUILD)/psmile.$(CHAN)
rm -r -f $(ARCHDIR)/include
rm -r -f $(LIBBUILD)/cbindings
rm -f $(ARCHDIR)/lib/libscrip.a
rm -f $(ARCHDIR)/lib/libmct.a
rm -f $(ARCHDIR)/lib/libmpeu.a
rm -f $(ARCHDIR)/lib/libpsmile.$(CHAN).a
rm -f $(ARCHDIR)/lib/liboasis.cbind.a
clean-shared:
@echo cleaning oasis3-mct shared libraries
rm -r -f $(LIBBUILDSHARED)/scrip
rm -r -f $(LIBBUILDSHARED)/mct
rm -r -f $(LIBBUILDSHARED)/mctdir
rm -r -f $(LIBBUILDSHARED)/psmile.$(CHAN)
rm -r -f $(LIBBUILDSHARED)/cbindings
rm -r -f $(ARCHDIR)/include
rm -f $(ARCHDIR)/lib/libscrip.so
rm -f $(ARCHDIR)/lib/libmct.so
rm -f $(ARCHDIR)/lib/libmpeu.so
rm -f $(ARCHDIR)/lib/libpsmile.$(CHAN).so
rm -f $(ARCHDIR)/lib/liboasis.cbind.so
clean-pyoasis:
@echo cleaning pyoasis
rm -r -f $(ARCHDIR)/python
########################################################################################
# Rules for compiling mpeu/mct library
makemct-static:
@echo "=> Configuring libraries mpeu and mct"
@(cd $(LIBBUILD)/mctdir; cp -f -r -p $(LIBSRC)/mct/* .;\
./configure MPIFC="$(F90) $(STATOPT)" FC="$(F90) $(STATOPT)" CC="$(CC) " \
1>> $(LOGSTATIC) 2>> $(ERRSTATIC) ;)
@echo "=> Compiling libraries mpeu and mct"
@(cd $(LIBBUILD)/mctdir; \
$(MAKE) 1>> $(LOGSTATIC) 2>> $(ERRSTATIC) ;)
@echo "=> Installing libraries mpeu and mct"
@(cd $(LIBBUILD)/mctdir; \
cp -f ./*/lib*.a $(ARCHDIR)/lib/; \
cp -f ./*/*.o $(LIBBUILD)/mct/; \
cp -f ./*/*.mod $(LIBBUILD)/mct/; \
cp -f ./*/*.mod $(ARCHDIR)/include/;)
makemct-shared:
@echo "=> Configuring shared libraries mpeu and mct"
@(cd $(LIBBUILDSHARED)/mctdir; cp -f -r -p $(LIBSRC)/mct/* .;\
./configure MPIFC="$(F90) $(DYNOPT)" FC="$(F90) $(DYNOPT)" CC="$(CC) $(DYNOPT)" \
1>> $(LOGSHARED) 2>> $(ERRSHARED) ;)
@echo "=> Compiling shared libraries mpeu and mct"
@(cd $(LIBBUILDSHARED)/mctdir; \
$(MAKE) 1>> $(LOGSHARED) 2>> $(ERRSHARED) ; )
@echo "=> Creating shared library libmpeu.so"
@(cd $(LIBBUILDSHARED)/mctdir ; \
$(F90) $(DYNOPT) $(LDFLAGS) $(LDDYNOPT) \
-o $(ARCHDIR)/lib/libmpeu.so ./mpeu/*.o $(NETCDF_LIBRARY); )
@echo "=> Creating shared library libmct.so"
@(cd $(LIBBUILDSHARED)/mctdir ; \
$(F90) $(DYNOPT) $(LDFLAGS) $(LDDYNOPT) \
-o $(ARCHDIR)/lib/libmct.so ./mct/*.o -L$(ARCHDIR)/lib -lmpeu $(NETCDF_LIBRARY); )
@echo "=> Installing shared libraries mpeu and mct"
@(cd $(LIBBUILDSHARED)/mctdir ; \
cp -f ./*/*.o $(LIBBUILDSHARED)/mct/; \
cp -f ./*/*.mod $(LIBBUILDSHARED)/mct/; \
cp -f ./*/*.mod $(ARCHDIR)/include/;)
########################################################################################
# Rules for compiling the libraries scrip
makescrip-static:
@echo "=> Compiling library scrip"
@(cd $(LIBBUILD)/scrip; cp -f $(LIBSRC)/scrip/src/Makefile .;\
$(modifmakefile) ; $(MAKE) all 1>> $(LOGSTATIC) 2>> $(ERRSTATIC) )
@echo "=> Installing scrip modules"
@(cd $(LIBBUILD)/scrip ; \
cp -f *.mod $(ARCHDIR)/include/;)
makescrip-shared:
@echo "=> Compiling shared library scrip"
@(cd $(LIBBUILDSHARED)/scrip; cp -f $(LIBSRC)/scrip/src/Makefile .;\
$(modifmakefile) ; $(MAKE) shared 1>> $(LOGSHARED) 2>> $(ERRSHARED) )
@echo "=> Installing scrip modules"
@(cd $(LIBBUILDSHARED)/scrip ; \
cp -f *.mod $(ARCHDIR)/include/;)
########################################################################################
# Rules for compiling the libraries psmile
makepsmile-static:
@echo "=> Compiling library psmile"
@(cd $(LIBBUILD)/psmile.$(CHAN) ; \
cp -f $(LIBSRC)/psmile/src/Makefile . ; $(modifmakefile) ; \
$(MAKE) all 1>> $(LOGSTATIC) 2>> $(ERRSTATIC) ; )
@echo "=> Installing library psmile"
@(cd $(LIBBUILD)/psmile.$(CHAN) ; \
cp -f *.mod $(ARCHDIR)/include ; )
makepsmile-shared:
@echo "=> Compiling shared library psmile"
@(cd $(LIBBUILDSHARED)/psmile.$(CHAN) ; \
cp -f $(LIBSRC)/psmile/src/Makefile . ; $(modifmakefile) ; \
$(MAKE) shared 1>> $(LOGSHARED) 2>> $(ERRSHARED) ; )
@echo "=> Installing shared library psmile"
@(cd $(LIBBUILDSHARED)/psmile.$(CHAN) ; \
cp -f *.mod $(ARCHDIR)/include ; )
########################################################################################
# Rules for compiling the oasis C bindings
makecbindings-static:
@echo "=> Compiling the C bindings static"
@(cd $(LIBBUILD)/cbindings ; \
cp -f -r -p $(LIBSRC)/cbindings/Makefile .; $(modifmakefile) ; \
$(MAKE) libstatic 1>> $(LOGSTATIC) 2>> $(ERRSTATIC) )
@echo "=> Installing cbindings modules"
@(cd $(LIBBUILD)/cbindings ; \
cp -f *.mod $(ARCHDIR)/include/;)
makecbindings-shared:
@echo "=> Compiling the C bindings shared"
@(cd $(LIBBUILDSHARED)/cbindings ; \
cp -f -r -p $(LIBSRC)/cbindings/Makefile .; $(modifmakefile) ; \
$(MAKE) libshared 1>> $(LOGSHARED) 2>> $(ERRSHARED) )
@echo "=> Installing cbindings modules"
@(cd $(LIBBUILDSHARED)/cbindings ; \
cp -f *.mod $(ARCHDIR)/include/;)
########################################################################################
# Rules for installing the PyOasis python modules
makepyoasis:
@echo "=> Installing the PyOasis Modules"
@(cp -f -r -p $(COUPLE)/pyoasis/src/* $(ARCHDIR)/python/pyoasis \
1>> $(LOGPYO) 2>> $(ERRPYO) )
@echo export PYOASIS_ROOT=${ARCHDIR} > ${ARCHDIR}/python/init.sh
@echo setenv PYOASIS_ROOT ${ARCHDIR} > ${ARCHDIR}/python/init.csh
@echo export LD_LIBRARY_PATH=\$${PYOASIS_ROOT}/lib:\$${LD_LIBRARY_PATH} >> ${ARCHDIR}/python/init.sh
@echo setenv LD_LIBRARY_PATH \$${PYOASIS_ROOT}/lib:\$${LD_LIBRARY_PATH} >> ${ARCHDIR}/python/init.csh
@echo export PYTHONPATH=\$${PYOASIS_ROOT}/python:\$${PYTHONPATH} >> ${ARCHDIR}/python/init.sh
@echo setenv PYTHONPATH \$${PYOASIS_ROOT}/python:\$${PYTHONPATH} >> ${ARCHDIR}/python/init.csh
@echo export MPIRUN4PY=\"${MPIRUN}\" >> ${ARCHDIR}/python/init.sh
@echo setenv MPIRUN4PY \"${MPIRUN}\" >> ${ARCHDIR}/python/init.csh
@echo
@echo =====================================================================
@echo The following lines have been put in the file
@echo \"${ARCHDIR}/python/init.sh\"
@echo
@cat ${ARCHDIR}/python/init.sh
@echo
@echo The following lines have been put in the file
@echo \"${ARCHDIR}/python/init.csh\"
@echo
@cat ${ARCHDIR}/python/init.csh
@echo
@echo Before using pyOASIS issue the command:
@echo \"source ${ARCHDIR}/python/init.sh\"
@echo or
@echo \"source ${ARCHDIR}/python/init.csh\"
@echo Alternatively, these lines could be added to your \"\~/.bashrc\" or \"\~/.cshrc\" file.
@echo =====================================================================
@echo
########################################################################################
# Rules for checks
check-vars:
$(call check_defined, COUPLE, Root of the source directory)
$(call check_defined, ARCHDIR, Root of the installation path)
$(call check_defined, CHAN, MPI flavour MPI1/MPI2)
$(call check_defined, MAKE, the make command make/make)
$(call check_defined, F90 F f90 f CC, compiler command)
$(call check_defined, F90FLAGS f90FLAGS FFLAGS fFLAGS CCFLAGS, \
compilation options)
# Params:
# 1. Variable name(s) to test.
# 2. (optional) Error message to print.
check_defined = \
$(strip $(foreach 1,$1, \
$(call __check_defined,$1,$(strip $(value 2)))))
__check_defined = \
$(if $(value $1),, \
$(error Undefined $1$(if $2, ($2))))
########################################################################################
# Some rules to modify/add variables in makefiles
modifmakefile = ( echo 'include $(COUPLE)/util/make_dir/make.inc' > infile;\
echo 'include $(COUPLE)/util/make_dir/make.common' >> infile;\
cat Makefile >> infile ; \
cp -f infile Makefile )
########################################################################################
above is TopMakefileOasis3
below is make.inc
###############################################################################
#
# CHAN : communication technique used in OASIS3 (MPI1/MPI2/NONE)
CHAN = MPI1
#
# Paths for libraries, object files and binaries
#
# COUPLE : path for oasis3-mct main directory
COUPLE = /home/fvcom/oasis3-mct
#
# ARCHDIR : directory created when compiling
ARCHDIR = /home/fvcom/oasis3_mct_install
#
# NETCDF library
NETCDF_INCLUDE = $(shell $(NETCDF_CONFIG) --fflags)
NETCDF_LIBRARY = $(shell $(NETCDF_CONFIG) --flibs)
#
# MPI library
MPIDIR =
MPIBIN =
MPI_INCLUDE =
MPILIB =
# Compiling and other commands
MAKE = make
F90 = mpiifort
F = $(F90)
f90 = $(F90)
f = $(F90)
CC = mpiicc -mt_mpi
LD = mpiifort
AR = ar
ARFLAGS = r
#
# CPP keys and compiler options
#
CPPDEF = -Duse_libMPI -Duse_comm_$(CHAN)
#
#
F90FLAGS_1 = -O2 -I. -mt_mpi
f90FLAGS_1 =
FFLAGS_1 =
fFLAGS_1 =
CCFLAGS_1 = -O2 -xAVX -mt_mpi
LDFLAGS = -mt_mpi
#
###################
#
# Additional definitions that should not be changed
#
FLIBS = $(NETCDF_LIBRARY)
# BINDIR : directory for executables
BINDIR = $(ARCHDIR)/bin
# LIBBUILD : contains a directory for each library
LIBBUILD = $(ARCHDIR)/build/lib
# INCPSMILE : includes all *o and *mod for each library
INCPSMILE = -I$(LIBBUILD)/psmile.$(CHAN) -I$(LIBBUILD)/mct -I$(LIBBUILD)/scrip
F90FLAGS = $(F90FLAGS_1) $(INCPSMILE) $(CPPDEF) -I$(NETCDF_INCLUDE)
f90FLAGS = $(f90FLAGS_1) $(INCPSMILE) $(CPPDEF) -I$(NETCDF_INCLUDE)
FFLAGS = $(FFLAGS_1) $(INCPSMILE) $(CPPDEF) -I$(NETCDF_INCLUDE)
fFLAGS = $(fFLAGS_1) $(INCPSMILE) $(CPPDEF) -I$(NETCDF_INCLUDE)
CCFLAGS = $(CCFLAGS_1) $(INCPSMILE) $(CPPDEF) -I$(NETCDF_INCLUDE)
#
#############################################################################
The error is reported as follows:
Compilation of the OASIS3-MCT static libraries
Build output to /home/fvcom/oasis3-mct/util/make_dir/COMP.log
Build errors to /home/fvcom/oasis3-mct/util/make_dir/COMP.err
=> Creating directories for compiling the static libraries
in /home/fvcom/oasis3_mct_install/build/lib
=> Configuring libraries mpeu and mct
=> Compiling libraries mpeu and mct
=> Installing libraries mpeu and mct
=> Compiling library scrip
make[1]: *** [TopMakefileOasis3:246: makescrip-static] Error 2
make: *** [TopMakefileOasis3:93: static-libs-fortran] Error 2
My problem has been solved, thank you very much!
Hi, can you help how did you solve your problems step by step? I've got the same issues as you. Can you help me to compile the models atmos.F90 and ocean.F90 and link them with OASIS3-MCT by typing make? Makefile:2: /util/make_dir/make.inc: No such file or directory make: * No rule to make target `/util/make_dir/make.inc'. Stop. Am i need to compile the OASIS environment at first step according to the manual Ch.6? Regarding compilation I am working on cluster with linux machine (I have openmpi, gfortran, ifort etc.) /storage/ekman/sharmar/OASIS_MCT_5.0/oasis3-mct/util/make_dir Output of "gmake -f TopMakefileOasis3 help" is very long, and finally it says: gmake: * [/storage/ekman/sharmar/OASIS_MCT_5.0/oasis3-mct/util/make_dir/make.] Error 2 Am I need to write in .bash_profile links for OASIS? Thanks in advance, Vitali
Hi Vitali, I don't think that you have the same issue than the one above in this issue. To compile oasis, you need to make a link between a header Makefile adapted to your platform and make.inc . To construct the header Makefile adapted to your platform, you can start from the examples existing in that directory (e.g. make.intel18.0.1.163_intelmpi2018.1.163_kraken). Let me know if this helps, Sophie