diff --git a/weld/toolchain/gcc/compile.mk b/weld/toolchain/gcc/compile.mk
new file mode 100644
index 0000000..97dfd46
--- /dev/null
+++ b/weld/toolchain/gcc/compile.mk
@@ -0,0 +1,172 @@
+# Copyright 2015 Andrew Gottemoller.
+#
+# This software is a copyrighted work licensed under the terms of the
+# Weld license.  Please consult the file "WELD_LICENSE" for
+# details.
+
+# This makefile defines the set of rules for a header list
+
+
+# This makefile is included for each component definition so clear out
+# any variables used by this makefile
+c_toolchain_path       :=
+def_source_path        :=
+def_obj_output_path    :=
+source_file            :=
+source_name            :=
+def_source_file        :=
+obj_alias              :=
+obj_goal_list          :=
+obj_goal_file_list     :=
+compile_goal           :=
+compile_goal_path      :=
+full_compile_goal_path :=
+
+
+c_toolchain_path    := $(weld_path)/toolchain/gcc
+def_source_path     := $(def_path)/$(def_source_subdir)
+def_obj_output_path := $(obj_output_path)/$(name)
+
+
+# Add the weld project's lib and header paths to the specified lib
+# and include path lists
+lib_path_list     := $(lib_output_path) $(global_lib_path_list) $(lib_path_list)
+include_path_list := $(header_output_path) $(global_include_path_list) $(include_path_list)
+
+# Add the global definition list to the component definition's list
+definition_list := $(global_definition_list) $(definition_list)
+
+# Specify a default set of compiler flags in addition to those
+# flags specified by the component definition
+compiler_flag_list := -g                              \
+                      -fstrict-aliasing               \
+                      -funsigned-char                 \
+                      -Wall                           \
+                      -Winline                        \
+                      -Wmissing-field-initializers    \
+                      -Wsign-compare                  \
+                      -Wstrict-aliasing=1             \
+                      -pedantic                       \
+                      $(global_compiler_flag_list)    \
+                      $(compiler_flag_list)
+
+# Add the global link flags to the component definition's list
+link_flag_list := $(global_link_flag_list) $(link_flag_list)
+
+# Include settings for the specified language, platform, mode, and
+# architecture
+include $(c_toolchain_path)/lang/$(lang).mk
+include $(c_toolchain_path)/platform/$(platform).mk
+include $(c_toolchain_path)/mode/$(mode).mk
+include $(c_toolchain_path)/arch/$(arch).mk
+
+define source_file_rule
+
+    $(call debug_info,source specified: $(1))
+
+    source_file     := $(1)
+    source_name     := $$(notdir $(1))
+    def_source_file := $$(def_source_path)/$$(source_file)
+    obj_alias       := $$(name)/$$(basename $$(source_name)).o
+
+    obj_goal_list := $$(obj_alias) $$(obj_goal_list)
+
+    # Define an alias for the object file so the user can do
+    # "make name/foo.o" on the command line
+    vpath $$(obj_alias) $$(obj_output_path)
+
+    # Try to include the object's dependency file generated by
+    # a previous compile
+    -include $$(obj_output_path)/$$(obj_alias).d
+
+    # Set the target specific variables and dependencies for this
+    # object
+    $$(obj_alias) : def_source_file := $$(def_source_file)
+    $$(obj_alias) : obj_alias       := $$(obj_alias)
+    $$(obj_alias) : $$(def_deps)
+    $$(obj_alias) : $$(def_source_file)
+
+endef
+
+
+# Expand the source file rule for each source specified
+$(foreach file,$(source_list),$(eval $(call source_file_rule,$(file))))
+
+obj_goal_file_list     := $(addprefix $(obj_output_path)/,$(obj_goal_list))
+source_lib_file_list   := $(addsuffix .a,$(addprefix lib,$(source_lib_list)))
+full_compile_goal_path := $(dir $(compile_goal_path)/$(compile_goal))
+
+
+# Add the necessary output directories to the list of directories to create
+directory_list := $(def_obj_output_path) $(full_compile_goal_path) $(directory_list)
+
+
+# Create aliases for the compile goal and library names
+vpath %.a             $(lib_path_list)
+vpath $(compile_goal) $(compile_goal_path)
+
+# Add the component's compile goal as a dependency to this component's
+# compile target
+$(name)_def_compile : $(compile_goal)
+
+# The actual recipe for an object file
+$(obj_goal_list) : compile_command    := $(compile_command)
+$(obj_goal_list) : obj_output_path    := $(obj_output_path)
+$(obj_goal_list) : include_path_list  := $(include_path_list)
+$(obj_goal_list) : definition_list    := $(definition_list)
+$(obj_goal_list) : compiler_flag_list := $(compiler_flag_list)
+$(obj_goal_list) : | headers
+$(obj_goal_list) : | $(def_obj_output_path)
+$(obj_goal_list) :
+	$(call print_progress,$(obj_alias))
+	$(strip                                                                                       \
+        $(compile_command) -o $(call path_to_native,$(obj_output_path)/$(obj_alias))              \
+            -MD -MP -MF $(call path_to_native,$(obj_output_path)/$(obj_alias).d) -MQ $(obj_alias) \
+            $(compiler_flag_list)                                                                 \
+            $(addprefix -I,$(call path_to_native,$(include_path_list)))                           \
+            $(addprefix -D,$(definition_list))                                                    \
+            -c $(call path_to_native,$(def_source_file)))
+
+# The actual recipe for linking a library or binary
+$(compile_goal) : compile_command    := $(compile_command)
+$(compile_goal) : link_flag_list     := $(link_flag_list)
+$(compile_goal) : compile_goal       := $(compile_goal)
+$(compile_goal) : compile_goal_path  := $(compile_goal_path)
+$(compile_goal) : obj_goal_file_list := $(obj_goal_file_list)
+$(compile_goal) : lib_path_list      := $(lib_path_list)
+$(compile_goal) : lib_list           := $(lib_list)
+$(compile_goal) : static_lib_list    := $(static_lib_list)
+$(compile_goal) : source_lib_list    := $(source_lib_list)
+$(compile_goal) : $(obj_goal_list)
+$(compile_goal) : $(source_lib_file_list)
+$(compile_goal) : | $(full_compile_goal_path)
+$(compile_goal) :
+	$(call print_progress,$(compile_goal))
+    ifeq ($(type), lib)
+	    $(call remove_files,$(call path_to_native,$(compile_goal_path)/$(compile_goal)))
+	    $(strip                                                             \
+            ar rcs                                                          \
+                $(link_flag_list)                                           \
+                $(call path_to_native,$(compile_goal_path)/$(compile_goal)) \
+                $(call path_to_native,$(obj_goal_file_list)))
+    else
+	    $(strip                                                                                   \
+            $(compile_command) -o $(call path_to_native,$(compile_goal_path)/$(compile_goal))     \
+                $(link_flag_list)                                                                 \
+                $(addprefix -L,$(call path_to_native,$(lib_path_list)))                           \
+                $(call path_to_native,$(obj_goal_file_list))                                      \
+                -Wl,--start-group                                                                 \
+                $(addprefix -l,$(lib_list) $(source_lib_list))                                    \
+                $(addsuffix .a,$(addprefix -l:lib,$(static_lib_list)))                            \
+                -Wl,--end-group)
+    endif
+
+.PHONY : clean_$(name)_def_compile
+clean_$(name)_def_compile : def_obj_output_path := $(def_obj_output_path)
+clean_$(name)_def_compile : compile_goal        := $(compile_goal)
+clean_$(name)_def_compile : compile_goal_path   := $(compile_goal_path)
+clean_$(name)_def_compile :
+	$(call print_progress,$@)
+	$(call remove_files,$(def_obj_output_path)/*.o)
+	$(call remove_files,$(def_obj_output_path)/*.o.*)
+	$(call remove_files,$(compile_goal_path)/$(compile_goal))
