#
# 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: /software/source/minc/Makefile.msvc-win32,v 6.5 2005/07/18 22:19:01 bert 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\minc_globdef.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)
syntax highlighted by Code2HTML, v. 0.9.1