AMREX_HOME ?= ../../../amrex PICSAR_HOME ?= ../../../picsar OPENBC_HOME ?= ../../../openbc_poisson USE_MPI = TRUE USE_PARTICLES = TRUE include $(AMREX_HOME)/Tools/GNUMake/Make.defs ifndef USE_PYTHON_MAIN USE_PYTHON_MAIN = FALSE endif ifeq ($(USE_PYTHON_MAIN),TRUE) CXXFLAGS += -fPIC ifeq ($(USE_OMP),TRUE) LDFLAGS += -fopenmp endif CFLAGS += -fPIC FFLAGS += -fPIC F90FLAGS += -fPIC USERSuffix = .Lib DEFINES += -DWARPX_USE_PY endif -include Make.package include $(WARPX_HOME)/Source/Make.package include $(AMREX_HOME)/Src/Base/Make.package include $(AMREX_HOME)/Src/Particle/Make.package include $(AMREX_HOME)/Src/Boundary/Make.package include $(AMREX_HOME)/Src/AmrCore/Make.package include $(PICSAR_HOME)/src/Make.package DEFINES += -DPICSAR_NO_ASSUMED_ALIGNMENT DEFINES += -DWARPX ifeq ($(USE_OPENBC_POISSON),TRUE) include $(OPENBC_HOME)/Make.package DEFINES += -DFFT_FFTW -DMPIPARALLEL -DUSE_OPENBC_POISSON endif ifeq ($(USE_PSATD),TRUE) FFTW_HOME ?= NOT_SET ifneq ($(FFTW_HOME),NOT_SET) VPATH_LOCATIONS += $(FFTW_HOME)/include INCLUDE_LOCATIONS += $(FFTW_HOME)/include LIBRARY_LOCATIONS += $(FFTW_HOME)/lib endif USERSuffix += .PSATD DEFINES += -DWARPX_USE_PSATD DEFINES += -DFFTW # PICSAR uses it LIBRARIES += -lfftw3_mpi -lfftw3 -lfftw3_omp endif ifeq ($(STORE_OLD_PARTICLE_ATTRIBS),TRUE) DEFINES += -DWARPX_STORE_OLD_PARTICLE_ATTRIBS endif ifeq ($(DO_ELECTROSTATIC),TRUE) include $(AMREX_HOME)/Src/LinearSolvers/C_to_F_MG/Make.package include $(AMREX_HOME)/Src/LinearSolvers/F_MG/FParallelMG.mak include $(AMREX_HOME)/Src/F_BaseLib/FParallelMG.mak DEFINES += -DWARPX_DO_ELECTROSTATIC endif # job_info support CEXE_sources += AMReX_buildInfo.cpp CEXE_headers += $(AMREX_HOME)/Tools/C_scripts/AMReX_buildInfo.H INCLUDE_LOCATIONS += $(AMREX_HOME)/Tools/C_scripts ifeq ($(USE_PYTHON_MAIN),TRUE) ifeq ($(shell uname),Darwin) SHARED_OPTION = -dynamiclib else SHARED_OPTION = -shared endif installwarpx: libwarpx$(DIM)d.so mv libwarpx$(DIM)d.so pywarpx python setup.py install --with-libwarpx $(DIM) $(PYINSTALLOPTIONS) libwarpx$(DIM)d.a: $(objForExecs) @echo Making static library $@ ... $(SILENT) $(AR) -crv $@ $^ $(SILENT) $(RM) AMReX_buildInfo.cpp @echo SUCCESS libwarpx$(DIM)d.so: $(objForExecs) @echo Making dynamic library $@ ... $(SILENT) $(CXX) $(SHARED_OPTION) -fPIC -o $@ $^ $(LDFLAGS) $(libraries) $(SILENT) $(RM) AMReX_buildInfo.cpp @echo SUCCESS clean:: $(SILENT) $(RM) -rf build $(SILENT) $(RM) -f libwarpx?d.a $(SILENT) $(RM) -f libwarpx?d.so $(SILENT) $(RM) -f pywarpx/libwarpx?d.so else ifdef WarpxBinDir all: $(executable) $(SILENT) $(RM) AMReX_buildInfo.cpp @if [ ! -d $(WarpxBinDir) ]; then mkdir -p $(WarpxBinDir); fi $(SILENT) mv -f $(executable) $(WarpxBinDir)/ @if [ -d $(executable).dSYM ]; then $(RM) -r $(WarpxBinDir)/$(executable).dSYM; mv -f $(executable).dSYM $(WarpxBinDir)/; fi @echo SUCCESS else all: $(executable) $(SILENT) $(RM) AMReX_buildInfo.cpp @echo SUCCESS endif endif AMReX_buildInfo.cpp: $(AMREX_HOME)/Tools/C_scripts/makebuildinfo_C.py \ --amrex_home "$(AMREX_HOME)" \ --COMP "$(COMP)" --COMP_VERSION "$(COMP_VERSION)" \ --CXX_comp_name "$(CXX)" --CXX_flags "$(CXXFLAGS) $(CPPFLAGS) $(includes)" \ --F_comp_name "$(F90)" --F_flags "$(F90FLAGS)" \ --link_flags "$(LDFLAGS)" --libraries "$(libraries)" \ --GIT ". $(AMREX_HOME) $(PICSAR_HOME)" include $(AMREX_HOME)/Tools/GNUMake/Make.rules clean:: $(SILENT) $(RM) AMReX_buildInfo.cpp