{section: Introduction } This wiki page contains information regarding build modernization and consolidation using CMake. {section: Modifications} *: Compiles fully in C++, except std:u *: Proper use of externs *: Minimal linkage, explicitly specify *: Platform specific files are suffixed as to allow glob macros to add to target (.windows, .unix) *: Easy expansion with macros and functions, HTCondor specific macros are located under build/cmake *: Removal of object copying *: Full Windows and WiX support *: std:u isolation allowing full -02 -g on HTCondor *: addition clean,tests,& install targets *: support for grid:u on proper builds {section: Getting Started } 1.) For NON-PROPER builds, which includes windows, you will need to obtain CMake 2.8.3 or > for the target platform you are working on. On CSL machines, it is installed in /unsup/cmake. http://www.cmake.org/cmake/resources/software.html For PROPER *nix builds you will need cmake 2.8 or >. 2.) Checkout origin/master 3.) navigate to CONDOR_SRC 4.) UW Folks can type *./configure_uw* , while others should use *cmake .*, on windows run *cmake-gui* *NOTE(s):* *: If you are wanting to build directly on an NMI machine: run nmi_tools/glue/SubmitInfo.pm to find the platform-specific args (Configure Args) to pass to cmake. *: To see build options run either ccmake, cmake-gui, or cmake -i *: *configure_uw* sets the following variables: *:: -DUW_BUILD:BOOL=TRUE (Tries to build std:u && non-proper) *:: -D_DEBUG:BOOL=TRUE (Build debug executables for development & testing) *:: -DBUILDID:STRING=UW_development (Daemon Output will indicate development exe) *:: -DCMAKE_INSTALL_PREFIX:PATH=${PWD}/release_dir (localized install location) *: *For out of source builds* simply make a directory above CONDOR_SRC e.g. 7.5.5 and cd into it, then type: *:: *UW:* ../CONDOR_SRC/configure_uw ../CONDOR_SRC *:: *Everyone else:* cmake ../CONDOR_SRC *::: *Development Recommendation:* alias cmake='cmake -DCMAKE_INSTALL_PREFIX:PATH=${PWD}/release_dir -D_DEBUG:BOOL=TRUE -DBUILDID:STRING=YOUR_USERNAME_local' 5.) Now you can run make or open the visual studio solution file. *Windows: (2008 instructions)* Prior to building for the 1st time there are some prerequisites that you will need to configure. 1: Install git. Add it to your PATH. *::http://git-scm.com/download 1: Install 7-zip. Add it to your PATH. *::http://www.7-zip.org/download.html 2: Install Visual Studio. Add it to your PATH. *::Visual Studio 2008. Paid. *::: UW Madison staff can use MSDNAA: http://msdn04.e-academy.com/wiscmad_cs ; contact the CSL lab for an account if you don't have one. You'll get a .img file of the DVD. You can user 7-zip to extract the contents and install from there instead of burning a DVD or installing DVD emulation software. *::Visual Studio Express (Free to anyone) https://www.microsoft.com/express/Downloads/ 3: Install Perl. Add it to your PATH. *::http://www.activestate.com/activeperl/downloads 4: Install the .NET 2.0 redistributable (May not be necessary if already installed. May be installed by default on Vista and later?) *::https://www.microsoft.com/downloads/en/details.aspx?FamilyID=0856eacb-4362-4b0d-8edd-aab15c5e04f5&displaylang=en 5: Install the lastest platform SDK and reopen the solution. (Depends on .NET 2.0) *::http://msdn.microsoft.com/en-us/windows/bb980924 6: Install WiX 3.0 on your windows machine (Depends on Visual Studio). Add it to your PATH. *::http://wix.codeplex.com/ 7: Open Tools->Options under "Projects and Solutions" click on VC++ Directories and add the following to the *Executable* directories *::$(SolutionDir)\msconfig *::Move $(PATH) to the bottom as sometimes C:\cygwin\bin is in the $(PATH) which can cause issues with HTCondor's bundled binaries. 8: Open and build. {section: Installing} There is now officially an install target and release has been removed. {code} cmake -DCMAKE_INSTALL_PREFIX:PATH=/opt/condor/x.y.z ... make install {endcode} {section: Testing} The code has been restructured so *all* things test related are bundled under a single target, and all binaries relating to that target set their output to condor_tests. {code} make tests {endcode} Once built you can run all the batch tests as before. {section: Packaging} Packaging target have already been added simply run: {code} TBD as this has variants for UW, see VDT. {endcode} {section: TODO} see Ticket #779 #1248 #1676 #1783 #1819 {section: Windows Gotchas} {subsection: SDK corruption of VC setup} Installation of the new Microsoft SDK (6.1 aka Server 2008) can leave an existing VC 9.0 installation with a corrupted setup bat file. After installing the SDK, check the contents of =C:\Program Files\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat= {linebreak}If you see the lines: {code} @SET FrameworkDir=Framework32 @SET FrameworkVersion=v2.0.50727 {endcode} change them to: {code} @SET FrameworkDir=C:\Windows\Microsoft.NET\Framework @SET FrameworkVersion=v2.0.50727 @SET Framework35Version=v3.5 {endcode} Also, a portion of the PATH variable may have an incorrect entry which can lead to problems in the CMD interpreter. If in the same file you see a PATH entry like: {code} %FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 (Pre-Release Version); {endcode} change it to point to the correct version like: {code} %FrameworkDir%\%Framework35Version%\Microsoft .NET Framework 3.5 SP1; {endcode} {subsection: Environment variable expansion} The new =SetEnv.cmd= shipped in the 6.1 SDK requires that both command extensions and environment variable expansion be turned on. Either use the "CMD Shell" shortcut installed with the Windows SDK or ensure that CMD is launch with the /V:ON and /E:ON parameters. For example: {code} CMD /V:ON /E:ON {endcode} {section: Links} {link: http://www.cmake.org/cmake/help/documentation.html CMake Official Documentation} {link: http://www.google.com/codesearch Google Code Search for open source examples}