#!/bin/sh # # Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana # University Research and Technology # Corporation. All rights reserved. # Copyright (c) 2004-2005 The University of Tennessee and The University # of Tennessee Research Foundation. All rights # reserved. # Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, # University of Stuttgart. All rights reserved. # Copyright (c) 2004-2005 The Regents of the University of California. # 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))/.. prefix = ${topdir}/src/Debug installdir = ${prefix} pkgdatadir = ${prefix}/share sysconfdir = ${prefix}/etc pkglibdir = ${prefix}/lib # list of components to build with the c compiler C_SUBDIRS = \ attribute \ class \ communicator \ datatype \ errhandler \ event \ event/WIN32-Code \ dps \ file \ group \ info \ util \ mpi/c \ mpi/runtime \ threads \ op \ proc \ request \ runtime \ mca/base \ mca/allocator/base \ mca/coll/base \ mca/gpr/base \ mca/gpr/base/data_type_support \ mca/gpr/base/pack_api_cmd \ mca/gpr/base/unpack_api_response \ mca/io/base \ mca/iof/base \ mca/errmgr/base \ mca/rml/base \ mca/rmgr/base \ mca/rmgr/base/data_type_support \ mca/rmaps/base \ mca/soh/base \ mca/soh/base/data_type_support \ mca/mpool/base \ mca/ns/base \ mca/ns/base/data_type_support \ mca/oob/base \ mca/pml/base \ mca/ptl/base \ mca/pls/base \ mca/pls/fork \ mca/pls/proxy \ mca/pls/rsh \ mca/ras/base \ mca/ras/host \ mca/rds/base \ mca/rds/hostfile \ mca/rds/resfile \ mca/topo/base \ mca/schema/base \ win32/generated_source \ win \ win32 EXTRA_DIRS = # # Files included by the dist that we don't want to compile # EXCLUDE_FILES = dt_arch.c \ epoll.c \ epoll_sub.c \ kqueue.c \ llm_base_parse_hostfile_lex.c \ misc.c \ poll.c \ rtsig.c \ stacktrace.c \ condition_spinlock.c # # A small function to extract the list of all files in these directories # SOURCE_FILES = $(foreach dir, ${C_SUBDIRS}, $(wildcard ${dir}/*.[c])) OBJECT_FILES = $(SOURCE_FILES:.c=.obj) DEBUG = Debug LINKED_SOURCE = $(foreach dir, ${DEBUG}, $(wildcard ${dir}/*.[c])) LINKED_OBJS = $(LINKED_SOURCE:.c=.obj) .SUFFIXES: .c .obj CC = cl CXX = $(CC) 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_SYSCONFDIR="\"${sysconfdir}\"" \ /DOMPI_PKGLIBDIR="\"${pkglibdir}\"" \ /DOMPI_PKGDATADIR="\"${pkgdatadir}\"" \ /DHAVE_CONFIG_H \ /D_WINDLL \ /EHsc \ /ML \ /W0 \ /Wp64 \ /TC \ /D_MBCS \ /Fo"${topdir}/src/Debug/" \ /nologo \ /c STATIC_LIBS = \ allocator \ coll\ ns\ gpr \ topo\ errmgr \ rml \ rmgr \ rmaps \ soh \ ptl\ oob\ pml\ pls\ ras \ rds \ schema \ iof CXXFLAGS = $(CFLAGS) $(INCL) LINK = link LINKFLAGS = \ /DLL \ /OPT:NOICF \ /OPT:NOREF \ /IMPLIB:libmpi.lib\ /nologo \ /OUT:libmpi.dll 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 .c.obj: $(CXX) $(CXXFLAGS) $*.c all: libmpi prebuild: @echo "Creating mca_base_parse_paramfile_lex.c" @/usr/bin/flex -t -Pmca_base_yy "${topdir}/src/mca/base/mca_base_parse_paramfile_lex.l" \ >"${topdir}/src/mca/base/mca_base_parse_paramfile_lex.c" 2>/dev/null @echo "Creating mca_rds_hostfile_lex.c" @/usr/bin/flex -t -Porte_rds_hostfile_ "${topdir}/src/mca/rds/hostfile/rds_hostfile_lex.l" \ > "${topdir}/src/mca/rds/hostfile/rds_hostfile_lex.c" 2>/dev/null @echo "Creating show_help_lex.c" @/usr/bin/flex -t -Popal_show_help_yy "${topdir}/src/opal/util/show_help_lex.l" \ > "${topdir}/src/opal/util/show_help_lex.c" 2>/dev/null @for dirs in ${STATIC_LIBS}; do \ (dir="mca/$${dirs}/base"; echo "Making Static components in $${dirs}"; comp_name="$${dirs}_static-components.h"; cp "${topdir}/src/win32/generated_include/$${comp_name}" "$${dir}/static-components.h";); \ done @echo "Creating Version Headers" @cp "${topdir}/src/win32/generated_include/pls-fork-version.h" "${topdir}/src/mca/pls/fork/pls-fork-version.h"; @cp "${topdir}/src/win32/generated_include/pls-proxy-version.h" "${topdir}/src/mca/pls/proxy/pls-proxy-version.h"; @cp "${topdir}/src/win32/generated_include/pls-rsh-version.h" "${topdir}/src/mca/pls/rsh/pls-rsh-version.h"; @for dirs in ${C_SUBDIRS}; do \ (echo "Entering $${dirs}"; cd $$dirs; if test -f .compile_files; then (more .compile_files| xargs -i'{}' ln -f '{}' ${topdir}/src/Debug/'{}'); else (ls *.c 2>/dev/null | xargs -i'{}' ln -f '{}' ${topdir}/src/Debug/'{}'); fi); \ done @for file in ${EXCLUDE_FILES}; do \ (echo "Removing $${file}"; cd ${topdir}/src/Debug/; rm -f $${file}); \ done @echo "done" libmpi: $(LINKED_OBJS) ${LINK} ${LINKFLAGS} ${ADDLIBS} $(LINKED_OBJS) install: @echo -n "Installing libmpi and include file ................" @install -d ${topdir}/src ${installdir}/lib @install -p ${topdir}/src/libmpi.lib ${installdir}/lib/libmpi.lib @install -p ${topdir}/src/libmpi.exp ${installdir}/lib/libmpi.exp @install -p ${topdir}/src/libmpi.dll ${installdir}/lib/libmpi.dll @install -d ${topdir}/include ${installdir}/include/ @install -p ${topdir}/include/ompi_config_bottom.h \ ${installdir}/include/ompi_config_bottom.h @install -p ${topdir}/src/win32/generated_include/ompi_config.h \ ${installdir}/include/ompi_config.h @install -p ${topdir}/include/mpi.h ${installdir}/include/mpi.h @install -p ${topdir}/include/ompi_stdint.h ${installdir}/include/ompi_stdint.h @install -d ${topdir}/src/win32 ${installdir}/include/win32 @install -p ${topdir}/src/win32/win_compat.h ${installdir}/include/win32/win_compat.h @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 ${C_PPSUBDIRS}; do \ (echo "Entering $$dirs"; cd $$dirs; rm -rf *.lib *.obj *.exp;); \ done @echo "Entering ${topdir}/src/Debug ... "; cd ${topdir}/src/Debug; rm -rf *.lib *.obj *.exp *.c;