| ##===- SingleSource/Makefile.singlesrc --------------------*- Makefile -*-===## |
| # |
| # This makefile builds all of the C programs in this directory in three |
| # different configurations: |
| # 1. By the native GCC compiler |
| # 2. To LLVM bytecode |
| # 3. To Sparc machine code, from bytecode, using LLC |
| # |
| # After building all of these different forms, the programs are run and the |
| # output is diff'd |
| # |
| # FIXME: There should be a way to specify libraries to link programs against |
| # FIXME: There should be a way to specify the command line for a program |
| # |
| # IDEA: This could be specified in the start of the .c file, in a comment block |
| # |
| ##===----------------------------------------------------------------------===## |
| |
| # Force lazy substitution. Additionally note that |
| # EXTRA_PROGRAMS_TO_SKIP is a variable that has been added so at the |
| # command line, a user can add an extra unittest to skip without |
| # affecting any of the current functionality in the test suite with |
| # respect to PROGRAMS_TO_SKIP. Since this functionality only occurs in |
| # the SingleSource part of the test suite I did not create an EXTRA |
| # PROGRAMS_TO_SKIP variable for the MultiSource/External directories |
| # of the test suite. |
| ALL_PROGRAMS_TO_SKIP = $(PROGRAMS_TO_SKIP) $(EXTRA_PROGRAMS_TO_SKIP) |
| |
| # If DISABLE_CXX is given, add any C++ programs to the list to skip. |
| ifdef DISABLE_CXX |
| CXX_SOURCES = $(filter %.cpp %.cc %.mm, $(Source)) |
| ALL_PROGRAMS_TO_SKIP += $(patsubst $(SourceDir)%,%,$(basename $(CXX_SOURCES))) |
| endif |
| |
| PROGRAMS_TO_TEST = $(filter-out $(ALL_PROGRAMS_TO_SKIP), \ |
| $(patsubst $(SourceDir)%,%,$(basename $(Source)))) |
| |
| include $(LEVEL)/Makefile.programs |
| .PRECIOUS: Output/%.linked.rll |
| |
| ifndef USE_PRECOMPILED_BYTECODE |
| Output/%.linked.rbc: Output/%.bc |
| -cp -f $< $@ |
| |
| Output/%.LOC.txt: $(SourceDir)/%.c |
| cat $< | wc -l > $@ |
| |
| Output/%.LOC.txt: $(SourceDir)/%.cpp |
| cat $< | wc -l > $@ |
| |
| Output/%.LOC.txt: $(SourceDir)/%.m |
| cat $< | wc -l > $@ |
| |
| Output/%.LOC.txt: $(SourceDir)/%.mm |
| cat $< | wc -l > $@ |
| endif |
| |
| Output/%.llvm.o: %.c Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| Output/%.llvm.o: %.m Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| Output/%.llvm.o: %.C Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| Output/%.llvm.o: %.cpp Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| Output/%.llvm.o: %.cc Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| Output/%.llvm.o: %.mm Output/.dir |
| $(RUNSAFELYLOCAL) /dev/null $@.compile \ |
| $(LCXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) -c $< -o $@ |
| .PRECIOUS: Output/%.llvm.o |
| |
| Output/%.simple: Output/%.llvm.o Output/.dir |
| -$(CP) $<.compile.time $@.compile.time |
| -$(LD_ENV_OVERRIDES) $(LCXX) -o $@ $< $(LDFLAGS) $(CFLAGS) $(X_TARGET_FLAGS) |
| |
| # FIXME: LIBS should be specified, not hardcoded to -lm |
| Output/%.native: $(SourceDir)/%.c Output/.dir |
| -$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native: $(SourceDir)/%.cpp Output/.dir |
| -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native: $(SourceDir)/%.m Output/.dir |
| -$(CC) $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native: $(SourceDir)/%.mm Output/.dir |
| -$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg: $(SourceDir)/%.c Output/.dir |
| -$(CC) -g $(CPPFLAGS) $(CFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg: $(SourceDir)/%.cpp Output/.dir |
| -$(CXX) -g $(CPPFLAGS) $(CXXFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg: $(SourceDir)/%.m Output/.dir |
| -$(CC) -g $(CPPFLAGS) $(CFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg: $(SourceDir)/%.mm Output/.dir |
| -$(CXX) -g $(CPPFLAGS) $(CXXFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg.opt: $(SourceDir)/%.c Output/.dir |
| -$(CC) -g $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg.opt: $(SourceDir)/%.cpp Output/.dir |
| -$(CXX) -g $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg.opt: $(SourceDir)/%.m Output/.dir |
| -$(CC) -g $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.native.dbg.opt: $(SourceDir)/%.mm Output/.dir |
| -$(CXX) -g $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg: $(SourceDir)/%.c Output/.dir |
| -$(LCC) -g $(CPPFLAGS) $(CFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg: $(SourceDir)/%.cpp Output/.dir |
| -$(LCXX) -g $(CPPFLAGS) $(CXXFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg: $(SourceDir)/%.m Output/.dir |
| -$(LCC) -g $(CPPFLAGS) $(CFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg: $(SourceDir)/%.mm Output/.dir |
| -$(LCXX) -g $(CPPFLAGS) $(CXXFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg.opt: $(SourceDir)/%.c Output/.dir |
| -$(LCC) -g $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg.opt: $(SourceDir)/%.cpp Output/.dir |
| -$(LCXX) -g $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg.opt: $(SourceDir)/%.m Output/.dir |
| -$(LCC) -g $(CPPFLAGS) $(CFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| Output/%.dbg.opt: $(SourceDir)/%.mm Output/.dir |
| -$(LCXX) -g $(CPPFLAGS) $(CXXFLAGS) $(OPTFLAGS) $(X_TARGET_FLAGS) $< -lm -o $@ $(LDFLAGS) |
| |
| bugpoint-gccas bugpoint-opt bugpoint-jit bugpoint-llc bugpoint-llc-beta: |
| @echo "The $@ target doesn't work in SingleSource. Try:" |
| @echo " 'make Output/[programname].$@' instead." |