# This Makefile fragment is used to build GASNet libraries # it is not meant to be used directly # @configure_input@ .PHONY: do-libgasnet-seq do-libgasnet-par do-libgasnet-parsync \ do-libgasnet_tools-seq do-libgasnet_tools-par do-libgasnet_tools \ do-libgasnet check-exports do-pthreads-error do-tools-make-fragment VPATH=$(srcdir) thread_defines = @GASNET_THREAD_DEFINES@ SEPARATE_CC = @SEPARATE_CC@ @USE_PLPA_TRUE@PLPA_INCLUDES = -I$(top_srcdir)/other/plpa/src/libplpa @USE_PLPA_TRUE@PLPA_SOURCES = $(top_srcdir)/other/plpa/src/libplpa/plpa_api_probe.c \ @USE_PLPA_TRUE@ $(top_srcdir)/other/plpa/src/libplpa/plpa_dispatch.c @USE_PSHM_TRUE@PSHM_SOURCES = $(top_srcdir)/gasnet_pshm.c @HAVE_PTHREAD_FALSE@PTHREADS_ERROR_CHECK = $(MAKE) do-pthreads-error @HAVE_PTHREAD_TRUE@PTHREADS_ERROR_CHECK = : TOOLLIBINCLUDES = \ -I$(srcdir) \ -I$(top_srcdir) \ -I$(top_builddir) \ -I$(top_srcdir)/other \ $(PLPA_INCLUDES) LIBINCLUDES = $(TOOLLIBINCLUDES) \ -I$(top_srcdir)/other/kinds \ -I$(top_srcdir)/extended-ref/coll \ -I$(top_srcdir)/extended-ref/vis \ -I$(top_srcdir)/extended-ref/ratomic \ -I$(top_srcdir)/extended-ref TOOLLIBDEFINES = \ @GASNET_EXTRA_DEFINES@ \ $(LIBGASNET_THREAD_DEFINES) \ $(MANUAL_DEFINES) LIBDEFINES = \ $(TOOLLIBDEFINES) \ -DGASNET_$(THREAD_MODEL) @BUILDCONFIG_DEBUG_FALSE@ TOOLLIB_DEBUGFLAGS = -DNDEBUG TOOLLIBCFLAGS = \ -DGASNETI_BUILDING_TOOLS \ @GASNET_OPT_CFLAGS@ \ @DEVWARN_CFLAGS@ \ @MISC_CFLAGS@ \ @MISC_CPPFLAGS@ \ $(TOOLLIBDEFINES) \ $(TOOLLIB_DEBUGFLAGS) \ $(TOOLLIBINCLUDES) \ $${keeptmps:+@KEEPTMP_CFLAGS@} \ $(MANUAL_CFLAGS) LIBCFLAGS = \ -DGASNETI_BUILDING_CONDUIT \ @GASNET_OPT_CFLAGS@ \ @DEVWARN_CFLAGS@ \ @MISC_CFLAGS@ \ @MISC_CPPFLAGS@ \ @GASNET_PSHM_CFLAGS@ \ $(LIBDEFINES) \ $(CONDUIT_EXTRALIBCFLAGS) \ $(LIBINCLUDES) \ $${keeptmps:+@KEEPTMP_CFLAGS@} \ $(MANUAL_CFLAGS) libgasnet_tools_sources = \ $(top_srcdir)/gasnet_tools.c \ $(PLPA_SOURCES) libgasnet_sources = \ $(CONDUIT_SOURCELIST) \ $(libgasnet_tools_sources) \ $(PSHM_SOURCES) \ $(top_srcdir)/extended-ref/vis/gasnet_refvis.c \ $(top_srcdir)/extended-ref/ratomic/gasnet_refratomic.c\ $(top_srcdir)/extended-ref/coll/gasnet_refcoll.c \ $(top_srcdir)/extended-ref/coll/gasnet_putget.c \ $(top_srcdir)/extended-ref/coll/gasnet_eager.c \ $(top_srcdir)/extended-ref/coll/gasnet_rvous.c \ $(top_srcdir)/extended-ref/coll/gasnet_team.c \ $(top_srcdir)/extended-ref/coll/gasnet_hashtable.c \ $(top_srcdir)/extended-ref/coll/gasnet_reduce.c \ $(top_srcdir)/extended-ref/coll/gasnet_bootstrap.c \ $(top_srcdir)/other/kinds/gasnet_refkinds.c \ $(top_srcdir)/gasnet_event.c \ $(top_srcdir)/gasnet_legacy.c \ $(top_srcdir)/gasnet_internal.c \ $(top_srcdir)/gasnet_am.c \ $(top_srcdir)/gasnet_trace.c \ $(top_srcdir)/gasnet_mmap.c \ $(top_srcdir)/gasnet_tm.c \ $(top_srcdir)/gasnet_diagnostic.c libgasnet_objects = \ `for file in $(libgasnet_sources) ; do echo \`basename $$file .c\`.o ; done` \ $(CONDUIT_SPECIAL_OBJS) $(KINDS_SPECIAL_OBJS) libgasnet_tools_dependencies = \ $(CONFIG_HEADER) \ $(top_srcdir)/*.[ch] \ $(top_srcdir)/other/*.h libgasnet_dependencies = \ $(libgasnet_tools_dependencies) \ $(srcdir)/*.[ch] \ $(top_srcdir)/extended-ref/*/*.[ch] \ $(top_srcdir)/extended-ref/*.[ch] \ $(top_srcdir)/other/kinds/*.[ch] \ $(top_srcdir)/tests/test.h \ $(CONDUIT_SOURCELIST) \ $(CONDUIT_EXTRAHEADERS) \ $(CONDUIT_EXTRADEPS) # A tools-only git clone is *always* dirty, but we don't want to see the # string '-dirty' in version info of distributed tarballs and resuting installs. @TOOLSONLY_MODE_TRUE@GIT_DESCRIBE_DIRTY = # empty @TOOLSONLY_MODE_FALSE@GIT_DESCRIBE_DIRTY = --dirty # library targets THREAD_MODEL=SEQ THREAD_MODEL_LC=`echo "$(THREAD_MODEL)" | @AWK@ '{print tolower($$0)}'` LIBGASNET_NAME=libgasnet-$(CONDUIT_NAME) do-libgasnet: $(CONDUIT_SPECIAL_OBJS) $(KINDS_SPECIAL_OBJS) @mkdir -p .$(THREAD_MODEL) @libgasnet_objects="$(libgasnet_objects)" ; libgasnet_objects=`echo $$libgasnet_objects` ; \ pwd=`@PWD_PROG@`; keeptmps='$(KEEPTMPS)'; \ if test -z '$(KEEPTMPS)'; then rmcmd="&& rm -f $$libgasnet_objects"; fi; \ unset GASNET_DESC; \ if test -d $(top_srcdir)/.git ; then \ GASNET_DESC=`( cd $(top_srcdir) && $${GIT=git} describe --long --always $(GIT_DESCRIBE_DIRTY) ) 2>/dev/null | head -n 1`; \ fi; \ if test -z "$$GASNET_DESC" && test -f $(top_srcdir)/version.git ; then \ GASNET_DESC=`cat $(top_srcdir)/version.git` || exit $$? ; \ fi; \ unset DESCFLAG; \ if test -n "$$GASNET_DESC"; then \ DESCFLAG="-DGASNETI_GIT_HASH='$$GASNET_DESC'"; \ fi; \ if test -n '$(SEPARATE_CC)' ; then \ compcmd="for file in $(libgasnet_sources) ; do $(CC) $(LIBCFLAGS) $$DESCFLAG -c "'$$file'" || exit "'$$?'" ; done" ; \ else \ compcmd="$(CC) $(LIBCFLAGS) $$DESCFLAG -c $(libgasnet_sources)" ; \ fi ; \ cmd="$$compcmd && \ $(AR) cru $$pwd/$(LIBGASNET_NAME)-$(THREAD_MODEL_LC).a $$libgasnet_objects && \ $(RANLIB) $$pwd/$(LIBGASNET_NAME)-$(THREAD_MODEL_LC).a $$rmcmd"; \ echo " --- BUILDING $(LIBGASNET_NAME)-$(THREAD_MODEL_LC).a --- " ; \ echo $$cmd ; cd .$(THREAD_MODEL) ; eval $$cmd @test -n '$(KEEPTMPS)' || rm -Rf .$(THREAD_MODEL) set_dirs = top_srcdir=`cd $(top_srcdir); @PWD_PROG@` \ top_builddir=`cd $(top_builddir); @PWD_PROG@` \ srcdir=`cd $(srcdir); @PWD_PROG@` \ builddir=`@PWD_PROG@` do-libgasnet-seq: $(libgasnet_dependencies) $(CONDUIT_SEQ_HOOK) @$(MAKE) THREAD_MODEL=SEQ \ LIBGASNET_THREAD_DEFINES= \ $(set_dirs) do-libgasnet do-libgasnet-par: $(libgasnet_dependencies) $(CONDUIT_PAR_HOOK) @$(PTHREADS_ERROR_CHECK) @$(MAKE) THREAD_MODEL=PAR \ LIBGASNET_THREAD_DEFINES="$(thread_defines)" \ $(set_dirs) do-libgasnet do-libgasnet-parsync: $(libgasnet_dependencies) $(CONDUIT_PARSYNC_HOOK) @$(PTHREADS_ERROR_CHECK) @$(MAKE) THREAD_MODEL=PARSYNC \ LIBGASNET_THREAD_DEFINES="$(thread_defines)" \ $(set_dirs) do-libgasnet do-libgasnet_tools: @keeptmps="$(KEEPTMPS)" ; \ $(MAKE) \ LIBCFLAGS="$(TOOLLIBCFLAGS)" \ LIBGASNET_NAME=libgasnet_tools \ libgasnet_sources="$(libgasnet_tools_sources)" \ do-libgasnet do-libgasnet_tools-seq: $(libgasnet_tools_dependencies) @$(MAKE) THREAD_MODEL=SEQ \ LIBGASNET_THREAD_DEFINES=-DGASNETT_THREAD_SINGLE \ $(set_dirs) do-libgasnet_tools do-libgasnet_tools-par: $(libgasnet_tools_dependencies) @$(PTHREADS_ERROR_CHECK) @$(MAKE) THREAD_MODEL=PAR \ LIBGASNET_THREAD_DEFINES="$(thread_defines) -DGASNETT_THREAD_SAFE" \ $(set_dirs) do-libgasnet_tools fragment_deps = $(top_builddir)/other/gasnet_tools-fragment.mak $(top_builddir)/other/gasnet_tools-fragment.mak: $(top_srcdir)/other/gasnet_tools-fragment.mak.in cd "$(top_builddir)/other" && $(MAKE) gasnet_tools-fragment.mak gasnet_tools-par.mak : $(fragment_deps) @$(PTHREADS_ERROR_CHECK) $(MAKE) do-tools-make-fragment thread_model=par THREAD_MODEL=PAR gasnet_tools-seq.mak: $(fragment_deps) $(MAKE) do-tools-make-fragment thread_model=seq THREAD_MODEL=SEQ do-tools-make-fragment: force rm -f gasnet_tools-$(thread_model).mak @echo Building gasnet_tools-$(thread_model).mak... ; \ AUTOGENMSG='WARNING: This file is automatically generated - do NOT edit directly' ; \ cat $(top_builddir)/other/gasnet_tools-fragment.mak | \ sed -e 's@#THREAD_MODEL#@$(THREAD_MODEL)@g' \ -e 's@#thread_model#@$(thread_model)@g' \ -e "s@#AUTOGEN#@$${AUTOGENMSG}@g" \ > gasnet_tools-$(thread_model).mak || exit 1 pkgconfig_tools = $(top_srcdir)/other/pkgconfig-tools.pc gasnet_tools-seq.pc: gasnet_tools-seq.mak $(pkgconfig_tools) @$(MAKE) do-pkgconfig-tools thread_model=seq pkgconfig_file="$@" FRAGMENT="$<" gasnet_tools-par.pc: gasnet_tools-par.mak $(pkgconfig_tools) @$(PTHREADS_ERROR_CHECK) @$(MAKE) do-pkgconfig-tools thread_model=par pkgconfig_file="$@" FRAGMENT="$<" do-pkgconfig-tools: force rm -f $(pkgconfig_file) @echo Building $(pkgconfig_file) from $$FRAGMENT... @echo '# WARNING: This file is automatically generated - do NOT edit directly' > $(pkgconfig_file) @echo '# Copyright 2023, The Regents of the University of California' >> $(pkgconfig_file) @echo '# Terms of use are as specified in license.txt' >> $(pkgconfig_file) @echo '# See the GASNet README for instructions on using these variables' >> $(pkgconfig_file) @VARS="GASNETTOOLS_CC GASNETTOOLS_CPPFLAGS GASNETTOOLS_CFLAGS \ GASNETTOOLS_CXX GASNETTOOLS_CXXFLAGS \ GASNETTOOLS_LD GASNETTOOLS_LDFLAGS GASNETTOOLS_LIBS \ GASNET_PREFIX" ; \ $(MAKE) --no-print-directory -f $(top_srcdir)/other/Makefile-echovar.mak VARS="$$VARS" echovars-preserve-unset \ >> $(pkgconfig_file) @unset GASNET_DESC; \ if test -d $(top_srcdir)/.git ; then \ GASNET_DESC=`( cd $(top_srcdir) && $${GIT=git} describe --long --always $(GIT_DESCRIBE_DIRTY) ) 2>/dev/null | head -n 1`; \ fi; \ if test -z "$$GASNET_DESC" && test -f $(top_srcdir)/version.git ; then \ GASNET_DESC=`cat $(top_srcdir)/version.git` || exit $$? ; \ fi; \ if expr "x$$GASNET_DESC" : 'xgex-$(VERSION)-0-' >/dev/null 2>&1; then unset GASNET_DESC; fi; \ cat $(pkgconfig_tools) | \ sed -e 's@#thread_model#@$(thread_model)@g' \ -e "s@#version#@$(VERSION)$${GASNET_DESC:+ ($$GASNET_DESC)}@g" \ >> $(pkgconfig_file) do-pthreads-error: @echo "ERROR: pthreads support was not detected at configure time" @echo " try re-running configure with --enable-pthreads" @exit 1 # bug1613: avoid automake infinite recursion here, because top-level Makefile includes this # fragment and also provides the rules for rebuilding config.status #cd $(top_builddir)/other && $(MAKE) Makefile-libgasnet.mak $(top_builddir)/other/Makefile-libgasnet.mak: $(top_srcdir)/other/Makefile-libgasnet.mak.in cd $(top_builddir) && CONFIG_FILES=other/Makefile-libgasnet.mak CONFIG_HEADERS= ./config.status @GNU_NM_TRUE@check-exports: $(libraries) @GNU_NM_TRUE@ @echo Checking libgasnet exports... @GNU_NM_TRUE@ @if test x$(CHECK_EXPORTS) = x0; then \ @GNU_NM_TRUE@ echo Skipped by user request ; \ @GNU_NM_TRUE@ exit 0 ; \ @GNU_NM_TRUE@ fi ; \ @GNU_NM_TRUE@ failed=0 ; \ @GNU_NM_TRUE@ for lib in $(libraries) ; do \ @GNU_NM_TRUE@ echo ; \ @GNU_NM_TRUE@ echo $$lib: ; \ @GNU_NM_TRUE@ @NM@ --defined-only $$lib | \ @GNU_NM_TRUE@ @PERL@ -pe 's/ \.refptr\.//' | \ @GNU_NM_TRUE@ grep -v -e ' [\._]*gasnet_' -e ' [\._]*gasnet[tiecX]_' -e ' [\._]*gex_' \ @GNU_NM_TRUE@ -e ' [\._]*fh_' -e ' [\._]*firehose_' \ @GNU_NM_TRUE@ -e ' [\._]*fh[ic]_' -e ' [\._]*fhsmp_' -e ' [\._]*fhuni_' \ @GNU_NM_TRUE@ -e ' [\._]*myxml_' -e ' [\._]*smp_coll_' \ @GNU_NM_TRUE@ -e ' [\._]*emutls_' -e 'get_pc_thunk' \ @GNU_NM_TRUE@ -e ' D bg_[a-z]' -e ' D _uci_' -e ' D _parse[A-Z][a-z]' \ @GNU_NM_TRUE@ -e __FUNCTION__ -e __PRETTY_FUNCTION__ -e ' [\._]*DWinfo' \ @GNU_NM_TRUE@ -e ' [\._][\._]*debug_' \ @GNU_NM_TRUE@ -e ' [\._]*stab' -e ' [\._]*gnu_dev_' -e '^00* W ' | \ @GNU_NM_TRUE@ @PERL@ -n -e 'print if /^[0-9a-fA-F]+\s+[A-Z]\s+/' > .$$lib.exp; \ @GNU_NM_TRUE@ if test -s .$$lib.exp ; then \ @GNU_NM_TRUE@ cat .$$lib.exp ; \ @GNU_NM_TRUE@ echo FAILED ; \ @GNU_NM_TRUE@ failed=1 ; \ @GNU_NM_TRUE@ else \ @GNU_NM_TRUE@ echo PASSED ; \ @GNU_NM_TRUE@ fi ; \ @GNU_NM_TRUE@ rm -f .$$lib.exp ; \ @GNU_NM_TRUE@ done ; exit $$failed @GNU_NM_FALSE@check-exports: $(libraries) @GNU_NM_FALSE@ @echo check-exports test SKIPPED check-pkgconfig: @echo Checking pkgconfig... @if test x$(CHECK_PKGCONFIG) = x0; then \ echo SKIPPED: by user request ; \ exit 0 ; \ elif ! pkg-config --atleast-pkgconfig-version=0.16.0 > /dev/null ; then \ echo SKIPPED: No working pkg-config found ; \ exit 0 ; \ fi ; \ validate=--validate ; \ if test -z "`pkg-config --help 2>&1 | grep -e --validate`" ; then \ validate=--cflags ; \ fi ; \ for file in $(CHECK_FILES) ; do \ echo ; \ echo $$file: ; \ if pkg-config $$validate $$file ; then \ echo PASSED ; \ else \ echo FAILED ; exit 1 ; \ fi ; \ done