package CMT

author arnault@lal.in2p3.fr

tag CMTr15 CMTr14
tag CMTr16 CMTr14
tag CMTr18 CMTr16
tag CMTr0  CMTr18

#
#  Automatic detection of some system features.
#


# Getting info on the hardware
macro cmt_hardware_query_command "uname -m" \
      Darwin "uname -p" \
      SunOS "uname -p" \
      HP-UX "uname -m | sed -e 's#/##g'" 

macro cmt_hardware `$(cmt_hardware_query_command)` WIN32 "WIN32"

apply_tag $(cmt_hardware)


# Getting info about the OS
macro cmt_system_version_query_command "uname -r " \
      Linux "${CMTROOT}/mgr/cmt_linux_version.sh" \
      SunOS "uname -r | sed -e 's#^#sunos#'" \
      OSF1  "uname -r | sed -e 's#^#OSF#'" \
      Darwin "system_profiler -detailLevel -2 | grep 'System Version' | sed -e 's#[^.0-9 ]##g' -e 's#  *# #g' | cut -d ' ' -f2 | sed -e 's#^#mac#' " \
      HP-UX "uname -r | sed -e 's#^#hpux#'" \
      CYGWIN "uname -r | sed -e 's#[(].*##' -e 's#^#Cygwin#'" \
      LynxOS "uname -r | sed -e 's#^#LynxOS#'"

macro_append cmt_system_version_query_command " | ${CMTROOT}/mgr/cmt_filter_version.sh" \
             WIN32 ""

macro cmt_system_version   `$(cmt_system_version_query_command)`   WIN32 "XP"

apply_tag $(cmt_system_version)


# Getting info about the C++ compiler
macro cmt_compiler_version_query_command "${CMTROOT}/mgr/cmt_gcc_version.sh | grep '^gcc'" \
      Linux "${CMTROOT}/mgr/cmt_gcc_version.sh" \
      SunOS "${CMTROOT}/mgr/cmt_CC_version.sh" \
      OSF1  "${CMTROOT}/mgr/cmt_cxx_version.sh" \
      Darwin "${CMTROOT}/mgr/cmt_dcc_version.sh" \
      HP-UX "echo aCC" \
      LynxOS "${CMTROOT}/mgr/cmt_gcc_version.sh"

macro_append cmt_compiler_version_query_command " | ${CMTROOT}/mgr/cmt_filter3_version.sh" \
             rhel3 " | ${CMTROOT}/mgr/cmt_filter3_version.sh" \
             cel3  " | ${CMTROOT}/mgr/cmt_filter3_version.sh" \
             WIN32 ""

macro cmt_compiler_version `$(cmt_compiler_version_query_command)` WIN32 "cl"

apply_tag $(cmt_compiler_version)

tag OSF1           Unix
tag Linux          Unix
tag HP-UX          Unix
tag Darwin         Unix
tag LynxOS         Unix
tag AIX            Unix
tag SunOS          Unix

tag CYGWIN_NT-5.1  Unix CYGWIN

tag alpha          OSF1
tag alpha_dux40    alpha
tag alpha-debug    alpha debug

tag LynxOS-VGPW2   LynxOS
tag LynxOS-PowerPC LynxOS
tag RIO806X        LynxOS
tag VMTR2X         LynxOS

tag hp9000s780     HP-UX
tag hp9000s700     HP-UX
tag hp700_ux101    HP-UX
tag hp_ux102       HP-UX

tag Linux-i686     Linux
tag i386_redhat51  Linux
tag i386_linux22   Linux

tag rs_aix42       AIX

tag sun4u          SunOS
tag sun4x_57       SunOS

tag rhel3          Linux
tag cel3           Linux
tag slc3           Linux

# Alternate possible tags for VisualC
tag VisualC        WIN32
tag VisualC        Win32
tag WIN32          VisualC

# Some alternate definitions for debug on VisualC
tag VisualCdbg     WIN32 windebug
tag VisualD        WIN32 windebug
tag VisualDbg      WIN32 windebug
tag VisualDebug    WIN32 windebug
tag VisualD        VisualC windebug
tag VisualDbg      VisualC windebug
tag Win32Debug     VisualC windebug

# VSNET tags #
tag VC7            vsnet
tag VC7debug       vsnet windebug

tag_exclude WIN32 Unix
tag_exclude Win32 Unix

#
#  Global PATH variables management
#

path_remove  PATH      "CMT/v" \
             WIN32     "CMT\v"

path_prepend PATH      "${CMTROOT}/${CMTBIN}" \
             WIN32     "%CMTROOT%\%CMTBIN%"

path_remove  CLASSPATH  "CMT"
path_append  CLASSPATH  "${CMTROOT}/java" \
             WIN32      "%CMTROOT%\java"

path_append include    ""
path_append lib        ""

macro debug_option "-g" \
      SunOS        "-G" \
      WIN32        "/G"

#
#  C environment
#

macro cc              "gcc" \
      insure          "insure" \
      alpha           "cc" \
      alphat          "cc" \
      HP-UX           "aCC" \
      hp700_ux101     "gcc" \
      AIX             "xlc" \
      SunOS           "cc" \
      VisualC         "cl.exe" \
      Darwin          "cc"

macro cdebugflags     "" \
      debug           "$(debug_option)"

macro cflags          "" \
      LynxOS-VGPW2    "-X" \
      insure          "-std1" \
      HP-UX           "+Z" \
      hp700_ux101     "-fpic -ansi" \
      alpha           "-std1" \
      alphat          "-std1" \
      SunOS           "-KPIC" \
      VisualC         '/nologo /DWIN32 /MD /W3 $(includes) /c'

macro pp_cflags       "" \
      LynxOS-VGPW2    "-DVGPW2" \
      HP-UX           "-D_HPUX_SOURCE" \
      alphat          "-DCTHREADS" \
      AIX             "-D_ALL_SOURCE -D_BSD"

macro ccomp           "$(cc) -c $(includes) $(cdebugflags) $(cflags) $(pp_cflags)" \
      VisualC         "cl.exe $(cdebugflags) $(cflags) $(pp_cflags)"

macro clinkflags      ""

macro clink           "$(cc) $(clinkflags) $(cdebugflags)" \
      VisualC         "link.exe /nologo /machine:IX86 "


#
#  Developper Studio environment
#

macro msdevdll          "" \
      VisualC           "/dll"

macro msdevdllflags   "" \
      VisualC         '/MT /D "_USRDLL" /D "WDLL_EXPORTS"' \
      VisualD         '/MTd /D "_USRDLL" /D "WDLL_EXPORTS"'

macro vsCONFIG        "" \
      VC7             "Release" \
      VC7debug        "Debug"

macro vsOptimize      "" \
      VC7             "2" \
      VC7debug        "0"


#
#  C++ environment
#

macro ppcmd           "-I" \
      rs_aix41        "-WF,-I" \
      VisualC         "/I "

macro preproc         "g++ -MD -c " \
      insure          "insure" \
      alpha           "cxx" \
      OSF1            "g++" \
      HP-UX           "aCC" \
      hp700_ux101     "g++" \
      hp_ux102        "aCC" \
      AIX             "xlC" \
      Linux           "c++ -MD -c " \
      SunOS           "CC" \
      VisualC         "cl.exe" \
      Darwin          "c++"

macro cpp             "g++" \
      insure          "insure" \
      alpha           "cxx" \
      OSF1            "g++" \
      HP-UX           "aCC" \
      hp700_ux101     "g++" \
      hp_ux102        "aCC" \
      AIX             "xlC" \
      Linux           "c++" \
      SunOS           "CC" \
      VisualC         "cl.exe" \
      Darwin          "c++"

macro cppdebugflags   "" \
      debug           "$(debug_option)"

macro cppflags        "" \
      alpha           "-nocompress -std arm -msg_quiet" \
      OSF1            "-fpic" \
      hp9000s780      "+Z" \
      hp700_ux101     "-fpic" \
      HP-UX           "+Z -Wc,-ansi_for_scope,on" \
      hp_ux102        "-z +p -Wc,-ansi_for_scope,on +O2 +Onoinitcheck" \
      Linux           "-pipe -ansi -pedantic -W -Wall -Wwrite-strings -Wpointer-arith -Woverloaded-virtual " \
      SunOS           "-KPIC" \
      VisualC         '/nologo /DWIN32 /MD /W3 $(includes) /c /EHsc'

macro pp_cppflags     "" \
      HP-UX           "-D_HPUX_SOURCE" \
      Linux           "-D_GNU_SOURCE"

macro cppcomp         "$(cpp) -c $(includes) $(cppdebugflags) $(cppflags) $(pp_cppflags)" \
      VisualC         "cl.exe $(cppdebugflags) $(cppflags) $(pp_cppflags)"

macro cpplinkflags    ""

macro cpplink         "$(cpp) $(cpplinkflags) $(cppdebugflags)" \
      VisualC         "link.exe /nologo /machine:I386"

macro cpp_linkopts    "" \
      OSF1            " -lstdc++ " \
      alpha           " /usr/lib/cmplrs/cxx/libcxx.a -lcxxstd -lexc -lm " \
      alphat          " /usr/lib/cmplrs/cxx/libcxx.a -lcxxstd -lexc -lm "

#
#  Fortran environment
#

macro for             "f77" \
      HP-UX           "fort77" \
      rs_aix41        "xlf" \
      Linux           "g77"

macro fflags          "$(debug_option)" \
      VisualC         ""

macro fcomp           "$(for) -c $(fincludes) $(fflags) $(pp_fflags)" \
      VisualC         ""

macro flink           "$(for) $(flinkflags)"

#
#  Java environment
#

macro javacomp        "javac -classpath $(src):$(CLASSPATH) "
macro javacopy        "cp"    VisualC "copy"
macro jar             "jar"

#
#  X11 environment
#

macro X11_cflags      "-I/usr/include" \
      HP-UX           "-I/usr/include/X11R5" \
      SunOS           "-I/usr/motif/usr/include" \
      VisualC         ""

macro Xm_cflags       "-I/usr/include" \
      HP-UX           "-I/usr/include/Motif1.2" \
      SunOS           "-I/usr/motif/usr/include" \
      VisualC         ""

####      hp9000s700      "/usr/lib/Motif1.2/libXm.sl /usr/lib/X11R5/libXt.sl /usr/lib/X11R5/libX11.sl"

macro X_linkopts      ""\
      alpha           "-lXm -lXmu -lXt -lXext -lX11 -ldnet_stub -lm -lots"\
      OSF1            "-lXm -lXmu -lXt -lXext -lX11 -ldnet_stub -lm -lots"\
      insure          "-lXm -lXmu -lXt -lXext -lX11 -ldnet_stub -lm -lots"\
      HP-UX           "-L/usr/lib -lXm -L/usr/contrib/X11R6/lib -lXmu -lXt -lXext -lX11" \
      SunOS           "-L/usr/motif/usr/lib -lXm -lXt -lX11 -lm"\
      LynxOS          "-lXt -lX11 -lm"\
      Linux           "-L/usr/X11R6/lib -lXm -lXt -lXext -lX11 -lm"\
      RIO806X         "-lXm -lXt -lXext -lX11 -lm"\
      VGPW2           "-lXm -lXt -lXext -lX11 -lm"\
      m68k            "-lXm -lXt -lXext -lX11 -lm"\
      IRIX            "/usr/lib/libXm.so /usr/lib/libXt.so /usr/lib/libX11.so -lm -lPW"\
      AIX             "/usr/lib/libXm.a /usr/lib/libXt.a /usr/lib/libX11.a -lm" \
      VisualC         ""

#
# Lex environment
#

macro lexflags        ""
macro lex             "lex $(lexflags)" \
      i686            "flex $(lexflags)"

#
# Yacc environment
#

macro yaccflags       " -l -d " \
      VisualC         ""

macro yacc            "yacc $(yaccflags)"

#
#  Archive environment
#

macro ar              "ar -clr" \
      SunOS           "ar clr" \
      VGPW2           "ar clr" \
      m68k            "ar clr" \
      LynxOS          "ar clr" \
      RIO806X         "ar clr" \
      Linux           "ar r" \
      VisualC         "lib.exe /nologo "

macro ranlib          "ranlib" \
      SunOS           "ar ts" \
      VGPW2           "ar ts" \
      m68k            "ranlib" \
      RIO806X         "ranlib" \
      LynxOS          "ar ts" \
      IRIX            "ar ts"

macro make_shlib    "echo" \
      HP-UX         "${CMTROOT}/mgr/cmt_make_shlib_common.sh extract" \
      OSF1          "${CMTROOT}/mgr/cmt_make_shlib_common.sh noextract" \
      Linux         "${CMTROOT}/mgr/cmt_make_shlib_common.sh extract" \
      CYGWIN        "${CMTROOT}/mgr/cmt_make_shlib_common.sh extract" \
      SunOS         "${CMTROOT}/mgr/cmt_make_shlib_common.sh extract" \
      Darwin        "${CMTROOT}/mgr/cmt_make_shlib_common.sh extract" \
      VisualC       "%CMTROOT%\mgr\cmt_make_shlib.bat"

macro shlibsuffix   "" \
      HP-UX         "sl" \
      OSF1          "so" \
      SunOS         "so" \
      Linux         "so" \
      CYGWIN        "dll" \
      Darwin        "dylib" \
      WIN32         "dll"

macro shlibbuilder  "" \
      HP-UX         "aCC" \
      OSF1          "ld" \
      SunOS         "CC" \
      Linux         "g++" \
      CYGWIN        "g++" \
      Darwin        "c++"

macro shlibflags    "" \
      HP-UX         "-Wl,-a,shared -b +Z -q -Wl,+s -Wl,+vallcompatwarnings" \
      OSF1          "-shared -expect_unresolved '*'" \
      Linux         "-shared" \
      CYGWIN        "-shared" \
      SunOS         "$(debug_option)" \
      VisualC       "" \
      Darwin        "-dynamiclib -flat_namespace -undefined suppress "

macro symlink       "/bin/ln -fs " \
      VisualC       ""

macro symunlink     "/bin/rm -f " \
      VisualC       ""

macro library_install_command "${symlink}" \
      VisualC                 "copy "

macro build_library_links  "$(cmtexe) build library_links -quiet -tag=$(tags)"
macro remove_library_links "$(cmtexe) remove library_links -quiet -tag=$(tags)"

#
# Prototype and dependency generation
#

macro cmtexe             "${CMTROOT}/${CMTBIN}/cmt.exe" \
      WIN32              "%CMTROOT%\%CMTBIN%\cmt.exe" 

##macro tags               "$(CMTEXTRATAGS)"

macro build_prototype    "$(cmtexe) build prototype"
macro build_dependencies "$(cmtexe) -quiet -tag=$(tags) build dependencies"
macro build_triggers     "$(cmtexe) build triggers"

macro implied_library_prefix "-l" \
      LynxOS                 "$(<PACKAGE>ROOT)/$(bin)/lib"

macro implied_library_suffix "" \
      VisualC                ".lib" \
      LynxOS                 ".a"

#
# Generic environments
#

macro SHELL           "/bin/sh" WIN32 "cmd"

macro q               '"'
macro src             "../src/" WIN32 "..\src\"
macro doc             "../doc/" WIN32 "..\doc\"
macro inc             "../src/" WIN32 "..\src\"
macro mgr             "../mgr/" WIN32 "..\mgr\"
##macro javabin         "../classes/"

macro application_suffix ".exe"
macro library_prefix "lib" WIN32 "" CYGWIN ""
macro library_suffix ""

macro lock_command "chmod -R a-w ../*" \   
      VisualC      "attrib /S /D +R ..\*"

macro unlock_command "chmod -R g+w ../*" \   
      VisualC      "attrib /S /D -R ..\*"

macro preprocessor_command "" \
      VisualC              ""

macro_append MAKEFLAGS " --no-print-directory "

#macro_prepend constituents " configclean "

#
# Remote definitions
#

macro gmake_hosts "lx1 rsplus lxtest as7 dxplus ax7 hp2 aleph hp1 hpplus papou1-fe atlas"

macro make_hosts  "virgo-control1 rio0a vmpc38a"

macro everywhere  "hosts" \
      LAL         "as7 lx1 virgo-control1 papou1-fe hp2 aleph hp1" \
      LHCb        "lxtest hpplus dxplus rsplus" \
      Atlas       "lxplus sundev" \
      Cascina     "ax7 vmpc38a rio0a"


#
#  Fragments
#

make_fragment make_header
make_fragment library_header
make_fragment application_header
make_fragment document_header
make_fragment java_header
make_fragment jar_header
make_fragment protos_header
make_fragment buildproto
make_fragment library
make_fragment library_no_share
make_fragment application
make_fragment jar
make_fragment java
make_fragment java_copy
make_fragment cleanup_header
make_fragment cleanup
make_fragment cleanup_library
make_fragment cleanup_application
make_fragment cleanup_java
make_fragment cleanup_objects

make_fragment fortran
make_fragment c
make_fragment cpp
make_fragment lex
make_fragment yacc

make_fragment fortran_library
make_fragment c_library
make_fragment cpp_library
make_fragment lex_library
make_fragment yacc_library

make_fragment dsw_header
make_fragment dsw_project
make_fragment dsw_trailer
make_fragment dsw_all_project_header
make_fragment dsw_all_project_dependency
make_fragment dsw_all_project_trailer

make_fragment dsp_library_header
make_fragment dsp_shared_library_header
make_fragment dsp_application_header
make_fragment dsp_windows_header
make_fragment dsp_contents
make_fragment dsp_trailer
make_fragment dsp_all

# vsnet fragments
make_fragment vcproj_library_header
make_fragment vcproj_application_header
make_fragment vcproj_all
make_fragment vcproj_trailer
make_fragment vcproj_contents
make_fragment vcproj_directory_header
make_fragment vcproj_directory_trailer

make_fragment sln_header
make_fragment sln_project
make_fragment sln_trailer
make_fragment sln_project_config
make_fragment sln_dependency_project

make_fragment sln_dependency_header
make_fragment sln_dependency_trailer

#### all packages have same GUID, and the "all" project as well

macro GUID_all     "" vsnet {DD1EDB1B-B098-44F8-8012-3039B5A56FEF}
macro package_GUID "" vsnet {8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}

make_fragment make_setup
make_fragment make_setup_header

make_fragment constituents_header
make_fragment group
make_fragment constituent
make_fragment constituents_trailer

make_fragment dependencies
make_fragment dependencies_and_triggers

make_fragment readme_header
make_fragment readme
make_fragment readme_doc
make_fragment readme_use
make_fragment readme_trailer

make_fragment tex -header=tex_header -suffix=ps

make_fragment check_application
make_fragment check_java
make_fragment check_application_header

make_fragment application_launcher -header=application_launcher_header

make_fragment install_includes -header=install_includes_header

macro install_command "cp " \
      WIN32           "xcopy /S /E /Y " 

macro uninstall_command "/bin/rm -f " \
      WIN32             "del "

macro cmt_installarea_command "ln -fs " \
      WIN32                   "xcopy /S /E /Y "

macro cmt_uninstallarea_command "/bin/rm -f " \
      WIN32                     "del "

macro cmt_install_area_command "$(cmt_installarea_command)"
macro cmt_uninstall_area_command "$(cmt_uninstallarea_command)"

macro cmt_install_action       "$(CMTROOT)/mgr/cmt_install_action.sh" \
      WIN32                    "$(CMTROOT)\mgr\cmt_install_action.bat"

macro cmt_installdir_action    "$(CMTROOT)/mgr/cmt_installdir_action.sh" \
      WIN32                    "$(CMTROOT)\mgr\cmt_installdir_action.bat"

macro cmt_uninstall_action     "$(CMTROOT)/mgr/cmt_uninstall_action.sh" \
      WIN32                    "$(CMTROOT)\mgr\cmt_uninstall_action.bat"

macro cmt_uninstalldir_action  "$(CMTROOT)/mgr/cmt_uninstalldir_action.sh" \
      WIN32                    "$(CMTROOT)\mgr\cmt_uninstalldir_action.bat"

macro cmt_installdir_excludes  "" WIN32 "$(CMTROOT)\mgr\cmt_installdir_excludes.txt"

action make "gmake $(cmt_args)" Darwin "make $(cmt_args)" CYGWIN "make $(cmt_args)" WIN32 "nmake /f nmake $(cmt_args)"

macro mkdir  "mkdir" \
      LynxOS "mkdir -f"

#-----------------------------------------------------------------
# Generic copy facility
#   It is customized through the parameter:
#     install_dir="<path where to install the sources>"
#
make_fragment installer -header=installer_header


#-----------------------------------------------------------------
# Generic usage of the cmt expand model facility
#   the fragment is customized through the following parameters:
#    model="<model text string>"
#    out="<output file name>"
#
make_fragment generator -header=generator_header

#-----------------------------------------------------------------
# Generic action runner
#
make_fragment cmt_action_runner -header=cmt_action_runner_header

#
# The supported languages
#

language fortran -suffix=f -suffix=F -preprocessor_command=$(ppcmd) -linker=$(flink)
language c       -suffix=c -prototypes -linker=$(clink)
language c++     -suffix=C -suffix=cc -suffix=cxx -suffix=cpp -fragment=cpp -linker=$(cpplink)
language java    -suffix=java -linker=java
language yacc    -suffix=y -prototypes -linker=$(clink)
language lex     -suffix=l -prototypes -linker=$(clink)

#
# Protocol level for the CVS pluggin
#

macro cmt_cvs_protocol_level "v1r1"

#
# The CMTPATH patterns for installation areas
#

macro cmt_installarea_prefix "InstallArea"

cmtpath_pattern \
  macro cmt_installarea_paths        " $(cmt_installarea_prefix)/$(CMTCONFIG)/bin" ; \
  macro_prepend use_linkopts         " $(cmt_installarea_linkopts) " ; \
  macro_append shlibbuilder          " $(cmt_installarea_linkopts) "

cmtpath_pattern \
  macro_append cmt_installarea_paths "" <project>_with_installarea " $(<project>_installarea_prefix)/$(CMTCONFIG)/lib" ; \
  macro_append cmt_installarea_paths "" <project>_with_installarea " $(<project>_installarea_prefix)/share/lib" ; \
  macro_append cmt_installarea_paths "" <project>_with_installarea " $(<project>_installarea_prefix)/share/bin"
  
macro CMT_PATH_remove_regexp "/[^/]*/" WIN32 "\\[^\\]*\\"
macro CMT_PATH_remove_share_regexp "/share/" WIN32 "\\share\\"

cmtpath_pattern \
  macro <project>_installarea_prefix "$(cmt_installarea_prefix)" ; \
  macro <project>_installarea_prefix_remove "$(<project>_installarea_prefix)" ; \
  path_remove_regexp PATH "" <project>_with_installarea "$(<project>_installarea_prefix_remove)$(CMT_PATH_remove_regexp)bin$" ; \
  path_remove_regexp PATH "" <project>_with_installarea "$(<project>_installarea_prefix_remove)$(CMT_PATH_remove_regexp)lib$" ; \
  path_remove_regexp LD_LIBRARY_PATH "" <project>_with_installarea "$(<project>_installarea_prefix_remove)/[^/]*/lib$"  ; \
  path_remove_regexp CLASSPATH "" <project>_with_installarea "$(<project>_installarea_prefix_remove)$(CMT_PATH_remove_share_regexp)lib$" ; \
  path_remove_regexp CLASSPATH "" <project>_with_installarea "$(<project>_installarea_prefix_remove)$(CMT_PATH_remove_share_regexp)bin$"

cmtpath_pattern \
  path_prepend PATH "" \
               <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${CMTCONFIG}/bin" \
               <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${CMTCONFIG}/bin" ; \
  path_prepend PATH "" \
               <project>_with_installarea&WIN32 "<path>/$(<project>_installarea_prefix)/${CMTCONFIG}/lib" \
               <project>_with_installarea&CYGWIN "<path>/$(<project>_installarea_prefix)/${CMTCONFIG}/lib" ; \
  path_prepend LD_LIBRARY_PATH "" \
               <project>_with_installarea&Unix "<path>/$(<project>_installarea_prefix)/${CMTCONFIG}/lib" ; \
  macro_prepend cmt_installarea_linkopts "" \
                <project>_without_installarea "" \
                <project>_with_installarea&Unix " -L<path>/$(<project>_installarea_prefix)/$(CMTCONFIG)/lib " \
                <project>_with_installarea&WIN32 " /LIBPATH:<path>\$(<project>_installarea_prefix)\$(CMTCONFIG)\lib "                 
    
set NEWCMTCONFIG "${cmt_hardware}-${cmt_system_version}-${cmt_compiler_version}"

#
# The cmt constituent
#

application cmt -s=../source cmt.cxx \
cmt_awk.cxx \
cmt_branch.cxx \
cmt_constituent.cxx \
cmt_deps_builder.cxx \
cmt_fragment.cxx \
cmt_generator.cxx \
cmt_include.cxx \
cmt_parser.cxx \
cmt_script.cxx \
cmt_string.cxx \
cmt_system.cxx \
cmt_tag.cxx \
cmt_use.cxx \
cmt_symbol.cxx \
cmt_error.cxx \
cmt_pattern.cxx \
cmt_language.cxx \
cmt_cvs.cxx \
cmt_group.cxx \
cmt_database.cxx \
cmt_lock.cxx \
cmt_triggers.cxx \
cmt_regexp.cxx \
cmt_model.cxx \
cmt_project.cxx \
cmt_syntax.cxx \
cmt_install_area.cxx \
cmt_cmtpath_pattern.cxx \
cmt_sequence.cxx \
cmt_generators.cxx \
cmt_scope_section.cxx \
cmt_log.cxx \
cmt_commands.cxx


macro all_constituents cmt

macro_append cpplink "" VisualC " advapi32.lib "