#!/bin/sh # # Copyright (c) 2004-2005 The Trustees of Indiana University. # All rights reserved. # Copyright (c) 2004-2005 The Trustees of the University of Tennessee. # All rights reserved. # Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # $COPYRIGHT$ # # Additional copyrights may follow # # $HEADER$ # # This is a simple makefile for windows which makes all the components # which are required for super computing. Too lazy to open up visual # studio each and every time to compile a component, so just adding # this to the svn repository # topdir := $(shell cygpath -m $(CURDIR))/../.. gen_base = ${topdir}/src/win32/generated_include copy_base = ${topdir}/src/mca/ prefix = ${topdir}/Debug installdir = ${prefix}/lib # list of components to build with the c compiler C_SUBDIRS = \ allocator/bucket \ coll/basic \ llm/hostfile/src \ ns/proxy/src \ pcmclient/env \ pcmclient/seed \ pcmclient/singleton \ topo/unity/src # list of components to build with the cpp compiler # (because of the problem with OBJ_CLASS_INSTANCE) CPP_SUBDIRS = \ allocator/basic \ ptl/self \ ptl/tcp/src \ oob/tcp/ \ pml/teg/src \ ns/replica/src \ gpr/proxy/ \ gpr/replica/ #list of components that are not working as yet CPP_EXCLUDE = pcm/wmi CC = cl INCL = \ /I"${topdir}/src/win32/generated_include" \ /I"${topdir}/src/win32" \ /I"${topdir}/include" \ /I"${topdir}/src" \ /I"${topdir}/src/event/compat/" \ /I"${topdir}/src/event" \ /I"${topdir}/src/event/WIN32-Code/" CFLAGS = \ /DWIN32 \ /DOMPI_BUILDING=0 \ /DHAVE_CONFIG_H \ /DOMPI_SYSCONFDIR="\"${installdir}/share\"" \ /EHsc \ /MLd \ /W0 \ /Wp64 \ /ZI \ /Zi \ /TC \ /D_MBCS \ /Gm \ /Od \ /LDd \ /nologo \ /c CPPFLAGS = \ /DWIN32 \ /TP \ /DOMPI_BUILDING=0 \ /DHAVE_CONFIG_H \ /DOMPI_SYSCONFDIR="\"${installdir}/share\"" \ /EHsc \ /MLd \ /W0 \ /Wp64 \ /ZI \ /Zi \ /D_MBCS \ /Gm \ /Od \ /LDd \ /nologo \ /c # link with ompi.lib to resolve external symbols OMPILIB = \ "${topdir}/src/libmpi.lib" LINK = link LINKFLAGS = \ /DLL \ /OPT:NOICF \ /OPT:NOREF \ /DEFAULTLIB:${OMPILIB} \ /nologo ADDLIBS = \ ws2_32.lib \ kernel32.lib \ user32.lib \ gdi32.lib \ winspool.lib \ comdlg32.lib \ advapi32.lib \ shell32.lib \ ole32.lib \ oleaut32.lib \ uuid.lib \ odbc32.lib \ odbccp32.lib all: \ clibs \ cpplibs prebuild: @cp '${gen_base}/coll-basic-version.h' '${copy_base}/coll/basic/' @cp '${gen_base}/io-romio-version.h' '${copy_base}/io/romio/' @cp '${gen_base}/pcmclient-env-version.h' '${copy_base}/pcmclient/env/' @cp '${gen_base}/pcmclient-seed-version.h' '${copy_base}/pcmclient/seed/' @cp '${gen_base}/pcmclient-singleton-version.h' '${copy_base}/pcmclient/singleton/' @cp '${gen_base}/llm-hostfile-version.h' '${copy_base}/llm/hostfile/' @cp '${gen_base}/topo-unity-version.h' '${copy_base}/topo/unity/' clibs: ${C_SUBDIRS} prebuild @for dirs in ${C_SUBDIRS}; do \ (libname=`echo mca_$${dirs}.dll | sed 's/\/src[\/]*//g' | sed 's/\//_/g' | sed 's/_\./\./g'` ; cd $$dirs; ${CC} ${CFLAGS} ${INCL} *.c; ${LINK} ${LINKFLAGS} ${ADDLIBS} /OUT:$${libname} *.obj); \ done cpplibs: ${CPP_SUBDIRS} prebuild @for dirs in ${CPP_SUBDIRS}; do \ (libname=`echo mca_$${dirs}.dll | sed 's/\/src[\/]*//g' | sed 's/\//_/g' | sed 's/_\./\./g'` ; cd $$dirs; ${CC} ${CPPFLAGS} ${INCL} *.c; ${LINK} ${LINKFLAGS} ${ADDLIBS} /OUT:$${libname} *.obj); \ done install: @echo -n "Installing components ......................." @for dirs in ${CPP_SUBDIRS}; do \ (dll=`echo mca_$${dirs}.dll | sed 's/\/src//g' | sed 's/\//_/g'`; exp=`echo $${dll} | sed 's/dll/exp/g`; lib=`echo $${dll} | sed 's/dll/lib/g`; \ install -p ${CURDIR}/$${dirs}/$${dll} ${install_dir}/$${dll}; \ if test -f ${CURDIR}/$${dirs}/$${lib}; then install -c ${CURDIR}/$${dirs}/$${lib} ${install_dir}/$${lib}; fi; \ if test -f ${CURDIR}/$${dirs}/$${exp}; then install -c ${CURDIR}/$${dirs}/$${exp} ${install_dir}/$${exp}; fi;); \ done @for dirs in ${C_SUBDIRS}; do \ (dll=`echo mca_$${dirs}.dll | sed 's/\/src//g' | sed 's/\//_/g'`; exp=`echo $${dll} | sed 's/dll/exp/g`; lib=`echo $${dll} | sed 's/dll/lib/g`; \ install -p ${CURDIR}/$${dirs}/$${dll} ${install_dir}/$${dll}; \ if test -f ${CURDIR}/$${dirs}/$${lib}; then install -c ${CURDIR}/$${dirs}/$${lib} ${install_dir}/$${lib}; fi; \ if test -f ${CURDIR}/$${dirs}/$${exp}; then install -c ${CURDIR}/$${dirs}/$${exp} ${install_dir}/$${exp}; fi;); \ done @echo "done" .PHONY: clean clean: @for dirs in ${C_SUBDIRS}; do \ (echo "Entering $$dirs"; cd $$dirs; rm -rf *.lib *.obj *.exp;); \ done @for dirs in ${CPP_SUBDIRS}; do \ (echo "Entering $$dirs"; cd $$dirs; rm -rf *.lib *.obj *.exp;); \ done