#--------------------------------------------------------------------------- # # Makefile for building the PyGan extension modules with pip # Author : A. Hebert (2024-1-7) # #--------------------------------------------------------------------------- # OS = $(shell uname -s | cut -d"_" -f1) ifeq ($(OS),AIX) DIRNAME = AIX else DIRNAME = $(shell uname -sm | sed 's/[ ]/_/') endif ifeq ($(intel),1) ifeq ($(INTELTOOLS),) $(error INTELTOOLS is not set) endif COMPILER = INTELTOOLS lib = ../lib/$(DIRNAME)_intel libGan = ../../Ganlib/lib/$(DIRNAME)_intel else ifeq ($(nvidia),1) ifeq ($(NVTOOLS),) $(error NVTOOLS is not set) endif COMPILER = NVTOOLS lib = ../lib/$(DIRNAME)_nvidia libGan = ../../Ganlib/lib/$(DIRNAME)_nvidia else ifeq ($(llvm),1) ifeq ($(LLVMTOOLS),) $(error LLVMTOOLS is not set) endif COMPILER = LLVMTOOLS lib = ../lib/$(DIRNAME)_llvm libGan = ../../Ganlib/lib/$(DIRNAME)_llvm else ifeq ($(FORTRANPATH),) $(error FORTRANPATH is not set) endif COMPILER = FORTRANPATH lib = ../lib/$(DIRNAME) libGan = ../../Ganlib/lib/$(DIRNAME) endif endif endif export COMPILER all: $(MAKE) donjon checkPython: ; @which python3 > /dev/null ganlib: clean sub-make-ganlib pygan-ganlib ifdef openmp @echo 'pygan_ganlib: openmp is defined' endif ifdef hdf5 @echo 'pygan_ganlib: hdf5 is defined' endif trivac: clean sub-make-trivac pygan-trivac ifdef openmp @echo 'pygan_trivac: openmp is defined' endif ifdef hdf5 @echo 'pygan_trivac: hdf5 is defined' endif dragon: clean sub-make-dragon pygan-dragon ifdef openmp @echo 'pygan_dragon: openmp is defined' endif ifdef hdf5 @echo 'pygan_dragon: hdf5 is defined' endif donjon: clean sub-make-donjon pygan-donjon ifdef openmp @echo 'pygan_donjon: openmp is defined' endif ifdef hdf5 @echo 'pygan_donjon: hdf5 is defined' endif sub-make-ganlib: $(MAKE) openmp=$(openmp) -C ../../Utilib/src $(MAKE) openmp=$(openmp) hdf5=$(hdf5) -C ../../Ganlib/src sub-make-trivac: sub-make-ganlib $(MAKE) openmp=$(openmp) hdf5=$(hdf5) -C ../../Trivac/src sub-make-dragon: sub-make-trivac $(MAKE) openmp=$(openmp) hdf5=$(hdf5) -C ../../Dragon/src sub-make-donjon: sub-make-dragon $(MAKE) openmp=$(openmp) hdf5=$(hdf5) -C ../../Donjon/src libGanlib.a: $(lib)/ sub-make-ganlib cp $(libGan)/libGanlib.a . ar -d libGanlib.a xabort_c.o mv libGanlib.a $(lib) $(lib)/: mkdir -p $(lib)/ pygan-ganlib: libGanlib.a sub-make-ganlib checkPython mkdir -p $(DIRNAME) cp *.[ch] $(DIRNAME) cp *.py $(DIRNAME) cd $(DIRNAME); ln -s setup_lcm.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py cd $(DIRNAME); ln -s setup_lifo.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py ifdef openmp export CODE_EMBEDDED=GANLIB_OMP; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages else export CODE_EMBEDDED=GANLIB; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages endif /bin/rm -r $(DIRNAME) pygan-trivac: libGanlib.a sub-make-trivac checkPython mkdir -p $(DIRNAME) cp *.[ch] $(DIRNAME) cp *.py $(DIRNAME) cd $(DIRNAME); ln -s setup_lcm.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py cd $(DIRNAME); ln -s setup_lifo.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py ifdef openmp export CODE_EMBEDDED=TRIVAC_OMP; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages else export CODE_EMBEDDED=TRIVAC; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages endif /bin/rm -r $(DIRNAME) pygan-dragon: libGanlib.a sub-make-dragon checkPython mkdir -p $(DIRNAME) cp *.[ch] $(DIRNAME) cp *.py $(DIRNAME) cd $(DIRNAME); ln -s setup_lcm.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py cd $(DIRNAME); ln -s setup_lifo.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py ifdef openmp export CODE_EMBEDDED=DRAGON_OMP; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages else export CODE_EMBEDDED=DRAGON; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages endif /bin/rm -r $(DIRNAME) pygan-donjon: libGanlib.a sub-make-donjon checkPython mkdir -p $(DIRNAME) cp *.[ch] $(DIRNAME) cp *.py $(DIRNAME) cd $(DIRNAME); ln -s setup_lcm.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py cd $(DIRNAME); ln -s setup_lifo.py setup.py; python3 -m pip install . --break-system-packages; rm setup.py ifdef openmp export CODE_EMBEDDED=DONJON_OMP; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages else export CODE_EMBEDDED=DONJON; cd $(DIRNAME); ln -s setup_cle2000.py setup.py; python3 -m pip install . --break-system-packages endif /bin/rm -r $(DIRNAME) clean: @echo 'clean PyGan' @echo '**********************************************' @echo '*** You should also clean Dragon or Donjon ***' @echo '**********************************************' /bin/rm -r -f ../lib /bin/rm -f sub-make*