Difference between revisions of "Real World Mozilla Makefile Lab"

From CDOT Wiki
Jump to: navigation, search
(Hints)
(Resources)
 
(10 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Dive into Mozilla]] > [[Dive into Mozilla Day 2]] > Makefile Lab
+
[[Real World Mozilla]] > [[Real World Mozilla Day 2]] > Makefile Lab
  
 
== Overview ==
 
== Overview ==
Line 20: Line 20:
 
# You will know you are done when the following commands result in nled.exe being produced:
 
# You will know you are done when the following commands result in nled.exe being produced:
  
 +
$ make
 
  $ make clean
 
  $ make clean
  $ make
+
 
 +
 
 +
or, if you want to combine this into one line:
 +
 
 +
  $ make && make clean
  
 
== Hints ==
 
== Hints ==
* [http://msdn2.microsoft.com/en-us/library/8we9bhf4(VS.80).aspx CL /c option]
+
* [http://msdn2.microsoft.com/en-us/library/8we9bhf4(VS.80).aspx CL -c option]
* [http://msdn2.microsoft.com/en-us/library/yb8e9b8y(VS.80).aspx CL /Fo option]
+
* [http://msdn2.microsoft.com/en-us/library/yb8e9b8y(VS.80).aspx CL -Fo option]
* To create the executable (nled.ext) you must link all .obj files '''and''' user32.lib
+
* The default extension for object files on win32 is '''.obj''' vs. .o on Unix
 +
* To create the executable (nled.exe) you must link all .obj files ''and'' '''user32.lib'''
 
* Running make with the '''-n''' option will show you all the commands make is going to run, which is helpful when debugging makefiles:
 
* Running make with the '''-n''' option will show you all the commands make is going to run, which is helpful when debugging makefiles:
  
Line 33: Line 39:
 
== Resources ==
 
== Resources ==
 
* [http://benjamin.smedbergs.us/blog/2007-01-12/mozillabuild-rc1/ MozillaBuild RC1 for Win32]
 
* [http://benjamin.smedbergs.us/blog/2007-01-12/mozillabuild-rc1/ MozillaBuild RC1 for Win32]
* [http://webtools.mozilla.org/build/config.cgi MOZCONFIG Build Configurator]
+
* [http://www.gnu.org/software/make/manual/ GNU Make Manual]
 +
* [http://www.eng.hawaii.edu/Tutor/Make/ Make Tutorial]
 +
* [[Makefile.in Template for In-Tree Extensions]]

Latest revision as of 13:05, 1 April 2008

Real World Mozilla > Real World Mozilla Day 2 > Makefile Lab

Overview

This lab is designed to give you first-hand experience creating a simple Makefile and using Make to build software. While the Mozilla build system is much more complex than this example, the ideas learned here will get you started understanding how Mozilla is built.

For nostalgic reasons we will work with the source code to Evan Weaver's nled editor, written in C.

Instructions

The lab machines have already been set-up to use MSVC 8 and MozillaBuild RC1. You only need to run Mozilla-Build MSVC 8.bat (there is a link on the desktop) to begin (i.e., you shouldn't need to install anything).

  1. Download and extract the nled source code
  2. Start Mozilla-Build MSVC8.bat to get a proper build environment
  3. Move to the directory where you extracted the source
  4. Using a text editor, create a file in this directory named Makefile
  5. Examine all the .c files to determine dependencies with the .h files
  6. Write targets and rules for each of the object files and the final executable
  7. Write a clean target in order to delete all .obj and .exe files
  8. You will know you are done when the following commands result in nled.exe being produced:
$ make
$ make clean


or, if you want to combine this into one line:

$ make && make clean

Hints

  • CL -c option
  • CL -Fo option
  • The default extension for object files on win32 is .obj vs. .o on Unix
  • To create the executable (nled.exe) you must link all .obj files and user32.lib
  • Running make with the -n option will show you all the commands make is going to run, which is helpful when debugging makefiles:
$ make -n

Resources