view Makefile.msvc-win32 @ 2492:8512aa0133ab

* added logic to only use the first timepoint of a 4D time dimension file
author rotor <rotor>
date Tue, 11 Aug 2009 13:49:19 +0000
parents e30fdeeb284c
children
line wrap: on
line source

# 
# Makefile for MINC using Microsoft Visual C/C++ (on Windows, natch).
#
# Written for Microsoft's NMAKE utility, but appears to work 
# more-or-less correctly with GNU Make for Windows (as in Cygwin).
#
# Builds all of the MINC command-line utilities, along with the
# MINC libraries MINC2.DLL and VOLUME_IO2.DLL
#
# Assumes that the environment variable NETCDF_ROOT points to 
# the location of netcdf.lib and netcdf.h.  This could be made
# more flexible to allow the library and header to reside in 
# different directories.
#
# $Header: /private-cvsroot/minc/Makefile.msvc-win32,v 6.6 2008-04-11 05:19:26 rotor Exp $
#
PROGS = worldtovoxel.exe \
	voxeltoworld.exe \
	minc_modify_header.exe \
	mincaverage.exe \
	minccalc.exe \
	mincconcat.exe \
	mincconvert.exe \
	minccopy.exe \
	mincdump.exe \
	mincexpand.exe \
	mincextract.exe \
	mincgen.exe \
	mincinfo.exe \
	minclookup.exe \
	mincmakescalar.exe \
	mincmakevector.exe \
	mincmath.exe \
	mincresample.exe \
	mincreshape.exe \
	mincstats.exe \
	minctoraw.exe \
	invert_raw_image.exe \
	mincwindow.exe \
	rawtominc.exe \
	xfmconcat.exe \
	xfminvert.exe \
        ecattominc.exe \
        minctoecat.exe \
        mnc2nii.exe \
        nii2mnc.exe \
        upet2mnc.exe \
        dcm2mnc.exe


MINC_HDRS = \
	libsrc\minc.h \
	libsrc\minc_basic.h \
	libsrc\minc_private.h \
	libsrc\minc_routines.h \
	libsrc\minc_structures.h \
	libsrc\minc_useful.h \
	libsrc\minc_varlists.h \
	libsrc\nd_loop.h \
	libsrc\ParseArgv.h \
	libsrc\time_stamp.h \
	libsrc\type_limits.h \
	libsrc\voxel_loop.h \
	libsrc\minc_error.h \
	libsrc\minc_config.h \
	libsrc\minc_compat.h

MINC_OBJS = \
	libsrc\ParseArgv.obj \
	libsrc\dim_conversion.obj \
	libsrc\image_conversion.obj \
	libsrc\minc_convenience.obj \
	libsrc\minc_error.obj \
	libsrc\nd_loop.obj \
	libsrc\netcdf_convenience.obj \
	libsrc\time_stamp.obj \
	libsrc\value_conversion.obj \
	libsrc\voxel_loop.obj \
	libsrc\hdf_convenience.obj \
	libsrc\minc_compat.obj

MINC2_OBJS = \
	libsrc2\convert.obj \
	libsrc2\datatype.obj \
	libsrc2\dimension.obj \
	libsrc2\free.obj \
	libsrc2\grpattr.obj \
	libsrc2\hyper.obj \
	libsrc2\label.obj \
	libsrc2\m2util.obj \
	libsrc2\record.obj \
	libsrc2\slice.obj \
	libsrc2\valid.obj \
	libsrc2\volprops.obj \
	libsrc2\volume.obj

VOLIO_OBJS = \
	volume_io/Geometry/colour.obj \
	volume_io/Geometry/colour_def.obj \
	volume_io/Geometry/gaussian.obj \
	volume_io/Geometry/inverse.obj \
	volume_io/Geometry/newton.obj \
	volume_io/Geometry/points.obj \
	volume_io/Geometry/splines.obj \
	volume_io/Geometry/tensors.obj \
	volume_io/Geometry/transforms.obj \
	volume_io/MNI_formats/gen_xf_io.obj \
	volume_io/MNI_formats/gen_xfs.obj \
	volume_io/MNI_formats/grid_transforms.obj \
	volume_io/MNI_formats/mni_io.obj \
	volume_io/MNI_formats/tag_points.obj \
	volume_io/MNI_formats/thin_plate_spline.obj \
	volume_io/Prog_utils/alloc.obj \
	volume_io/Prog_utils/alloc_check.obj \
	volume_io/Prog_utils/arrays.obj \
	volume_io/Prog_utils/files.obj \
	volume_io/Prog_utils/print.obj \
	volume_io/Prog_utils/progress.obj \
	volume_io/Prog_utils/string.obj \
	volume_io/Prog_utils/time.obj \
	volume_io/Volumes/evaluate.obj \
	volume_io/Volumes/get_hyperslab.obj \
	volume_io/Volumes/input_free.obj \
	volume_io/Volumes/input_mnc.obj \
	volume_io/Volumes/input_volume.obj \
	volume_io/Volumes/multidim_arrays.obj \
	volume_io/Volumes/output_mnc.obj \
	volume_io/Volumes/output_volume.obj \
	volume_io/Volumes/set_hyperslab.obj \
	volume_io/Volumes/volume_cache.obj \
	volume_io/Volumes/volumes.obj

# Unfortunately the CVS tree does not reflect the desired file organization
# of the software, so we have to fix that up here:

VOLIO_HDRS = \
	volume_io\Include\volume_io\alloc.h \
	volume_io\Include\volume_io\arrays.h \
	volume_io\Include\volume_io\basic.h \
	volume_io\Include\volume_io\def_math.h \
	volume_io\Include\volume_io\files.h \
	volume_io\Include\volume_io\geometry.h \
	volume_io\Include\volume_io\geom_structs.h \
	volume_io\Include\volume_io\multidim.h \
	volume_io\Include\volume_io\progress.h \
	volume_io\Include\volume_io\string_funcs.h \
	volume_io\Include\volume_io\system_dependent.h \
	volume_io\Include\volume_io\transforms.h \
	volume_io\Include\volume_io\vol_io_prototypes.h \
	volume_io\Include\volume_io\volume_cache.h \
	volume_io\Include\volume_io\volume.h

ACR_NEMA_OBJS = \
        conversion\Acr_nema\acr_io.obj \
        conversion\Acr_nema\element.obj \
        conversion\Acr_nema\file_io.obj \
        conversion\Acr_nema\group.obj \
        conversion\Acr_nema\message.obj \
        conversion\Acr_nema\value_repr.obj

ACR_NEMA_HDRS = \
        conversion\Acr_nema\acr_nema.h \
        conversion\Acr_nema\acr_nema\acr_io.h \
        conversion\Acr_nema\acr_nema\element.h \
        conversion\Acr_nema\acr_nema\file_io.h \
        conversion\Acr_nema\acr_nema\group.h \
        conversion\Acr_nema\acr_nema\message.h \
        conversion\Acr_nema\acr_nema\value_repr.h

INCLUDES = -I$(NETCDF_ROOT) -I$(HDF5_ROOT)/include -Ilibsrc \
           -Iprogs/Proglib -Ivolume_io/Include -Iconversion/Acr_nema

DEFINES = -DDLL_NETCDF -D_POSIX_ -DMINC2 -DWIN32 -D_HDF5USEDLL_ \
        -DHAVE_CONFIG_H -D_USE_MATH_DEFINES
NETCDF_LIB = $(NETCDF_ROOT)/netcdf.lib
HDF5_LIB = $(HDF5_ROOT)/dll/hdf5dll.lib
LIBS = minc2.lib volume_io2.lib $(NETCDF_LIB) $(HDF5_LIB)
CFLAGS = $(INCLUDES) $(DEFINES)

.SUFFIXES: .obj

.c.obj:
	cl /nologo $(CFLAGS) -c -Fo$*.obj $<

all: $(PROGS) minc2.dll volume_io2.dll

clean:
	-del /s *.obj
	-del *.exp
	-del *.lib
	-del *.dll
	-del *.exe
	-del *.map

LINK = link

$(PROGS): minc2.dll volume_io2.dll

$(MINC_OBJS):  libsrc\config.h $(MINC_HDRS)

$(MINC2_OBJS): libsrc2\minc2.h libsrc2\minc2_private.h

minc2.dll: $(MINC_OBJS) $(MINC2_OBJS)
	link /dll /nologo /map:minc2.map /out:minc2.dll $(MINC_OBJS) $(MINC2_OBJS) $(NETCDF_LIB) $(HDF5_LIB) ws2_32.lib

volume_io2.dll: $(VOLIO_OBJS) minc2.dll
	link /dll /nologo /map:volume_io2.map /out:volume_io2.dll $(VOLIO_OBJS) minc2.lib $(NETCDF_LIB) $(HDF5_LIB)

$(VOLIO_OBJS): $(VOLIO_HDRS)

libsrc\config.h: libsrc\config.h.msvc-win32
	copy libsrc\config.h.msvc-win32 libsrc\config.h

WORLDTOVOXEL_OBJS = progs/coordinates/worldtovoxel.obj
worldtovoxel.exe: $(WORLDTOVOXEL_OBJS)
	$(LINK) $(WORLDTOVOXEL_OBJS) $(LIBS) 

VOXELTOWORLD_OBJS = progs/coordinates/voxeltoworld.obj
voxeltoworld.exe: $(VOXELTOWORLD_OBJS)
	$(LINK) $(VOXELTOWORLD_OBJS) $(LIBS) 

MINC_MODIFY_HEADER_OBJS = progs/minc_modify_header/minc_modify_header.obj
minc_modify_header.exe: $(MINC_MODIFY_HEADER_OBJS)
	$(LINK) $(MINC_MODIFY_HEADER_OBJS) $(LIBS) 

MINCAVERAGE_OBJS = progs/mincaverage/mincaverage.obj
mincaverage.exe: $(MINCAVERAGE_OBJS)
	$(LINK) $(MINCAVERAGE_OBJS) $(LIBS) 

MINCCALC_OBJS = \
	progs/minccalc/minccalc.obj \
	progs/minccalc/gram.obj \
	progs/minccalc/lex.obj \
	progs/minccalc/eval.obj \
	progs/minccalc/ident.obj \
	progs/minccalc/node.obj \
	progs/minccalc/optim.obj \
	progs/minccalc/scalar.obj \
	progs/minccalc/sym.obj \
	progs/minccalc/vector.obj

minccalc.exe: $(MINCCALC_OBJS)
	$(LINK) $(MINCCALC_OBJS) $(LIBS) 

MINCCONCAT_OBJS = progs/mincconcat/mincconcat.obj
mincconcat.exe: $(MINCCONCAT_OBJS)
	$(LINK) $(MINCCONCAT_OBJS) $(LIBS) 

MINCCONVERT_OBJS = progs/mincconvert/mincconvert.obj
mincconvert.exe: $(MINCCONVERT_OBJS)
	$(LINK) $(MINCCONVERT_OBJS) $(LIBS) 

MINCCOPY_OBJS = progs/minccopy/minccopy.obj
minccopy.exe: $(MINCCOPY_OBJS)
	$(LINK) $(MINCCOPY_OBJS) $(LIBS) 

MINCDUMP_OBJS = \
	progs/mincdump/mincdump.obj \
	progs/mincdump/vardata.obj \
	progs/mincdump/dumplib.obj
        
mincdump.exe: $(MINCDUMP_OBJS)
	$(LINK) $(MINCDUMP_OBJS) $(LIBS) 

MINCEXPAND_OBJS = progs/mincexpand/mincexpand.obj
mincexpand.exe: $(MINCEXPAND_OBJS)
	$(LINK) $(MINCEXPAND_OBJS) $(LIBS) 

MINCEXTRACT_OBJS = progs/mincextract/mincextract.obj
mincextract.exe: $(MINCEXTRACT_OBJS)
	$(LINK) $(MINCEXTRACT_OBJS) $(LIBS) 

MINCGEN_OBJS = \
	progs/mincgen/escapes.obj \
	progs/mincgen/genlib.obj \
	progs/mincgen/getfill.obj \
	progs/mincgen/init.obj \
	progs/mincgen/load.obj \
	progs/mincgen/main.obj \
	progs/mincgen/ncgentab.obj \
	progs/mincgen/ncgenyy.obj

mincgen.exe: $(MINCGEN_OBJS)
	$(LINK) $(MINCGEN_OBJS) $(LIBS) 

MINCINFO_OBJS = progs/mincinfo/mincinfo.obj
mincinfo.exe: $(MINCINFO_OBJS)
	$(LINK) $(MINCINFO_OBJS) $(LIBS) 

MINCLOOKUP_OBJS = progs/minclookup/minclookup.obj
minclookup.exe: $(MINCLOOKUP_OBJS)
	$(LINK) $(MINCLOOKUP_OBJS) $(LIBS) 

MINCMAKESCALAR_OBJS = progs/mincmakescalar/mincmakescalar.obj
mincmakescalar.exe: $(MINCMAKESCALAR_OBJS)
	$(LINK) $(MINCMAKESCALAR_OBJS) $(LIBS) 

MINCMAKEVECTOR_OBJS = progs/mincmakevector/mincmakevector.obj
mincmakevector.exe: $(MINCMAKEVECTOR_OBJS)
	$(LINK) $(MINCMAKEVECTOR_OBJS) $(LIBS) 

MINCMATH_OBJS = progs/mincmath/mincmath.obj
mincmath.exe: $(MINCMATH_OBJS)
	$(LINK) $(MINCMATH_OBJS) $(LIBS) 

MINCRESAMPLE_OBJS = \
	progs/mincresample/mincresample.obj \
	progs/mincresample/resample_volumes.obj \
	progs/Proglib/convert_origin_to_start.obj

mincresample.exe: $(MINCRESAMPLE_OBJS)
	$(LINK) $(MINCRESAMPLE_OBJS) $(LIBS) 

MINCRESHAPE_OBJS = \
	progs/mincreshape/mincreshape.obj \
	progs/mincreshape/copy_data.obj 

mincreshape.exe: $(MINCRESHAPE_OBJS)
	$(LINK) $(MINCRESHAPE_OBJS) $(LIBS) 

MINCSTATS_OBJS = progs/mincstats/mincstats.obj
mincstats.exe: $(MINCSTATS_OBJS)
	$(LINK) $(MINCSTATS_OBJS) $(LIBS) 

MINCTORAW_OBJS = progs/minctoraw/minctoraw.obj
minctoraw.exe: $(MINCTORAW_OBJS)
	$(LINK) $(MINCTORAW_OBJS) $(LIBS) 

INVERT_RAW_IMAGE_OBJS = progs/mincview/invert_raw_image.obj
invert_raw_image.exe: $(INVERT_RAW_IMAGE_OBJS)
	$(LINK) $(INVERT_RAW_IMAGE_OBJS) $(LIBS) 

MINCWINDOW_OBJS = progs/mincwindow/mincwindow.obj
mincwindow.exe: $(MINCWINDOW_OBJS) 
	$(LINK) $(MINCWINDOW_OBJS) $(LIBS) 

RAWTOMINC_OBJS = \
	progs/rawtominc/rawtominc.obj \
	progs/Proglib/convert_origin_to_start.obj

rawtominc.exe: $(RAWTOMINC_OBJS)
	$(LINK) $(RAWTOMINC_OBJS) $(LIBS) 

XFMCONCAT_OBJS = progs/xfm/xfmconcat.obj
xfmconcat.exe: $(XFMCONCAT_OBJS)
	$(LINK) $(XFMCONCAT_OBJS) $(LIBS) 

XFMINVERT_OBJS = progs/xfm/xfminvert.obj
xfminvert.exe: $(XFMINVERT_OBJS)
	$(LINK) $(XFMINVERT_OBJS) $(LIBS)

ECATTOMINC_OBJS = \
        conversion/ecattominc/ecat_file.obj \
        conversion/ecattominc/ecattominc.obj \
        conversion/ecattominc/insertblood.obj \
        conversion/ecattominc/machine_indep.obj

$(ECATTOMINC_OBJS): conversion/ecattominc/ecat_file.h \
                    conversion/ecattominc/machine_indep.h \
                    conversion/ecattominc/ecat_header_definition.h

ecattominc.exe: $(ECATTOMINC_OBJS)
	$(LINK) $(ECATTOMINC_OBJS) $(LIBS) WS2_32.LIB
                           
MINCTOECAT_OBJS = \
        conversion/minctoecat/ecat_write.obj \
        conversion/minctoecat/minctoecat.obj \
        conversion/minctoecat/machine_indep.obj

$(MINCTOECAT_OBJS): conversion/minctoecat/ecat_write.h \
                    conversion/minctoecat/machine_indep.h

minctoecat.exe: $(MINCTOECAT_OBJS)
	$(LINK) $(MINCTOECAT_OBJS) $(LIBS)

NII2MNC_OBJS = \
        conversion/nifti1/nii2mnc.obj \
        conversion/nifti1/nifti1_io.obj

NII2MNC_OBJS: conversion/nifti1/nifti1.h \
              conversion/nifti1/nifti1_io.h

nii2mnc.exe: $(NII2MNC_OBJS)
	$(LINK) $(NII2MNC_OBJS) $(LIBS)

MNC2NII_OBJS = \
        conversion/nifti1/mnc2nii.obj \
        conversion/nifti1/nifti1_io.obj

MNC2NII_OBJS: conversion/nifti1/nifti1.h \
              conversion/nifti1/nifti1_io.h

mnc2nii.exe: $(MNC2NII_OBJS)
	$(LINK) $(MNC2NII_OBJS) $(LIBS)

UPET2MNC_OBJS = \
        conversion/micropet/upet2mnc.obj

upet2mnc.exe: $(UPET2MNC_OBJS)
	$(LINK) $(UPET2MNC_OBJS) $(LIBS)

$(ACR_NEMA_OBJS): $(ACR_NEMA_HDRS)

DCM2MNC_OBJS = \
       conversion/dcm2mnc/dcm2mnc.obj \
       conversion/dcm2mnc/dicom_to_minc.obj \
       conversion/dcm2mnc/dicom_read.obj \
       conversion/dcm2mnc/minc_file.obj \
       conversion/dcm2mnc/progress.obj \
       conversion/dcm2mnc/siemens_to_dicom.obj \
       conversion/dcm2mnc/string_to_filename.obj \
       $(ACR_NEMA_OBJS)

dcm2mnc.exe: $(DCM2MNC_OBJS)
	$(LINK) $(DCM2MNC_OBJS) $(LIBS)