eliminate rmkdir and generate directory dependencies the right way.
[reactos.git] / reactos / tools / rbuild / rbuild.mak
index 9c2f371..d82505d 100644 (file)
-RBUILD_BASE = $(TOOLS_BASE)$(SEP)rbuild\r
+RBUILD_BASE = $(TOOLS_BASE_)rbuild\r
+RBUILD_BASE_ = $(RBUILD_BASE)$(SEP)\r
+RBUILD_INT = $(INTERMEDIATE_)$(RBUILD_BASE)\r
+RBUILD_INT_ = $(RBUILD_INT)$(SEP)\r
+RBUILD_OUT = $(OUTPUT_)$(RBUILD_BASE)\r
+RBUILD_OUT_ = $(RBUILD_OUT)$(SEP)\r
+\r
+$(RBUILD_INT): $(TOOLS_INT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+\r
+ifneq ($(INTERMEDIATE),$(OUTPUT))\r
+$(RBUILD_OUT): $(TOOLS_OUT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+endif\r
+\r
+\r
+RBUILD_BACKEND_BASE = $(RBUILD_BASE_)backend\r
+RBUILD_BACKEND_BASE_ = $(RBUILD_BACKEND_BASE)$(SEP)\r
+RBUILD_BACKEND_INT = $(INTERMEDIATE_)$(RBUILD_BACKEND_BASE)\r
+RBUILD_BACKEND_INT_ = $(RBUILD_BACKEND_INT)$(SEP)\r
+RBUILD_BACKEND_OUT = $(OUTPUT)$(RBUILD_BACKEND_BASE)\r
+RBUILD_BACKEND_OUT_ = $(RBUILD_BACKEND_OUT)$(SEP)\r
+\r
+$(RBUILD_BACKEND_INT): $(RBUILD_INT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+\r
+ifneq ($(INTERMEDIATE),$(OUTPUT))\r
+$(RBUILD_BACKEND_OUT): $(RBUILD_OUT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+endif\r
+\r
+\r
+RBUILD_MINGW_BASE = $(RBUILD_BACKEND_BASE_)mingw\r
+RBUILD_MINGW_BASE_ = $(RBUILD_MINGW_BASE)$(SEP)\r
+RBUILD_MINGW_INT = $(INTERMEDIATE_)$(RBUILD_MINGW_BASE)\r
+RBUILD_MINGW_INT_ = $(RBUILD_MINGW_INT)$(SEP)\r
+RBUILD_MINGW_OUT = $(OUTPUT)$(RBUILD_MINGW_BASE)\r
+RBUILD_MINGW_OUT_ = $(RBUILD_MINGW_OUT)$(SEP)\r
+\r
+$(RBUILD_MINGW_INT): $(RBUILD_BACKEND_INT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+\r
+ifneq ($(INTERMEDIATE),$(OUTPUT))\r
+$(RBUILD_MINGW_OUT): $(RBUILD_BACKEND_OUT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
+endif\r
+\r
+\r
+RBUILD_DEVCPP_BASE = $(RBUILD_BACKEND_BASE_)devcpp\r
+RBUILD_DEVCPP_BASE_ = $(RBUILD_DEVCPP_BASE)$(SEP)\r
+RBUILD_DEVCPP_INT = $(INTERMEDIATE_)$(RBUILD_DEVCPP_BASE)\r
+RBUILD_DEVCPP_INT_ = $(RBUILD_DEVCPP_INT)$(SEP)\r
+RBUILD_DEVCPP_OUT = $(OUTPUT)$(RBUILD_DEVCPP_BASE)\r
+RBUILD_DEVCPP_OUT_ = $(RBUILD_DEVCPP_OUT)$(SEP)\r
 \r
-RBUILD_BASE_DIR = $(INTERMEDIATE)$(RBUILD_BASE)\r
-RBUILD_BASE_DIR_EXISTS = $(RBUILD_BASE_DIR)$(SEP)$(EXISTS)\r
+$(RBUILD_DEVCPP_INT): $(RBUILD_BACKEND_INT)\r
+       $(ECHO_MKDIR)\r
+       ${mkdir} $@\r
 \r
-$(RBUILD_BASE_DIR_EXISTS): $(TOOLS_BASE_DIR_EXISTS)\r
+ifneq ($(INTERMEDIATE),$(OUTPUT))\r
+$(RBUILD_DEVCPP_OUT): $(RBUILD_BACKEND_OUT)\r
        $(ECHO_MKDIR)\r
-       ${mkdir} $(RBUILD_BASE_DIR)\r
-       @echo . >$@\r
+       ${mkdir} $@\r
+endif\r
+\r
 \r
 RBUILD_TARGET = \\r
-       $(RBUILD_BASE_DIR)$(SEP)rbuild$(EXEPOSTFIX)\r
+       $(EXEPREFIX)$(RBUILD_OUT_)rbuild$(EXEPOSTFIX)\r
 \r
 RBUILD_TEST_TARGET = \\r
-       $(RBUILD_BASE_DIR)$(SEP)rbuild_test$(EXEPOSTFIX)\r
+       $(EXEPREFIX)$(RBUILD_OUT_)rbuild_test$(EXEPOSTFIX)\r
 \r
-RBUILD_BACKEND_MINGW_BASE_SOURCES = \\r
-       backend$(SEP)mingw$(SEP)mingw.cpp \\r
-       backend$(SEP)mingw$(SEP)modulehandler.cpp\r
+RBUILD_BACKEND_MINGW_BASE_SOURCES = $(addprefix $(RBUILD_MINGW_BASE_), \\r
+       mingw.cpp \\r
+       modulehandler.cpp \\r
+       )\r
 \r
-RBUILD_BACKEND_DEVCPP_BASE_SOURCES = \\r
-       backend$(SEP)devcpp$(SEP)devcpp.cpp\r
+RBUILD_BACKEND_DEVCPP_BASE_SOURCES = $(addprefix $(RBUILD_DEVCPP_BASE_), \\r
+       devcpp.cpp \\r
+       )\r
 \r
-RBUILD_BACKEND_BASE_SOURCES = \\r
+RBUILD_BACKEND_SOURCES = \\r
        $(RBUILD_BACKEND_MINGW_BASE_SOURCES) \\r
        $(RBUILD_BACKEND_DEVCPP_BASE_SOURCES) \\r
-       backend$(SEP)backend.cpp\r
-\r
-RBUILD_BASE_SOURCES = \\r
-       $(RBUILD_BACKEND_BASE_SOURCES) \\r
-       automaticdependency.cpp \\r
-       bootstrap.cpp \\r
-       cdfile.cpp \\r
-       compilerflag.cpp \\r
-       define.cpp \\r
-       exception.cpp \\r
-       include.cpp \\r
-       linkerflag.cpp \\r
-       module.cpp \\r
-       project.cpp \\r
-       ssprintf.cpp \\r
-       stubbedcomponent.cpp \\r
-       XML.cpp\r
+       $(RBUILD_BACKEND_BASE_)backend.cpp\r
 \r
 RBUILD_COMMON_SOURCES = \\r
-       $(addprefix $(RBUILD_BASE)$(SEP), $(RBUILD_BASE_SOURCES)) \\r
+       $(RBUILD_BACKEND_SOURCES) \\r
+       $(addprefix $(RBUILD_BASE_), \\r
+               automaticdependency.cpp \\r
+               bootstrap.cpp \\r
+               cdfile.cpp \\r
+               compilerflag.cpp \\r
+               define.cpp \\r
+               exception.cpp \\r
+               include.cpp \\r
+               linkerflag.cpp \\r
+               module.cpp \\r
+               project.cpp \\r
+               ssprintf.cpp \\r
+               stubbedcomponent.cpp \\r
+               XML.cpp \\r
+               )\r
 \r
 RBUILD_SPECIAL_SOURCES = \\r
-       $(RBUILD_BASE)$(SEP)rbuild.cpp\r
+       $(RBUILD_BASE_)rbuild.cpp\r
 \r
 RBUILD_SOURCES = \\r
        $(RBUILD_COMMON_SOURCES) \\r
        $(RBUILD_SPECIAL_SOURCES)\r
 \r
 RBUILD_COMMON_OBJECTS = \\r
-       $(addprefix $(ROS_INTERMEDIATE), $(RBUILD_COMMON_SOURCES:.cpp=.o))\r
+       $(addprefix $(INTERMEDIATE_), $(RBUILD_COMMON_SOURCES:.cpp=.o))\r
 \r
 RBUILD_SPECIAL_OBJECTS = \\r
-       $(addprefix $(ROS_INTERMEDIATE), $(RBUILD_SPECIAL_SOURCES:.cpp=.o))\r
+       $(addprefix $(INTERMEDIATE_), $(RBUILD_SPECIAL_SOURCES:.cpp=.o))\r
 \r
 RBUILD_OBJECTS = \\r
        $(RBUILD_COMMON_OBJECTS) \\r
@@ -76,15 +139,15 @@ RBUILD_TESTS = \
        tests$(SEP)symboltest.cpp\r
 \r
 RBUILD_TEST_SPECIAL_SOURCES = \\r
-       $(addprefix $(RBUILD_BASE)$(SEP), $(RBUILD_TESTS)) \\r
-       $(RBUILD_BASE)$(SEP)tests$(SEP)alltests.cpp\r
+       $(addprefix $(RBUILD_BASE_), $(RBUILD_TESTS)) \\r
+       $(RBUILD_BASE_)tests$(SEP)alltests.cpp\r
 \r
 RBUILD_TEST_SOURCES = \\r
        $(RBUILD_COMMON_SOURCES) \\r
        $(RBUILD_TEST_SPECIAL_SOURCES)\r
 \r
 RBUILD_TEST_SPECIAL_OBJECTS = \\r
-       $(addprefix $(ROS_INTERMEDIATE), $(RBUILD_TEST_SPECIAL_SOURCES:.cpp=.o))\r
+       $(addprefix $(INTERMEDIATE_), $(RBUILD_TEST_SPECIAL_SOURCES:.cpp=.o))\r
 \r
 RBUILD_TEST_OBJECTS = \\r
        $(RBUILD_COMMON_OBJECTS) \\r
@@ -97,26 +160,98 @@ RBUILD_HOST_LFLAGS = -g
 .PHONY: rbuild\r
 rbuild: $(RBUILD_TARGET)\r
 \r
-$(RBUILD_TARGET): $(RBUILD_OBJECTS) $(RBUILD_BASE_DIR_EXISTS)\r
+$(RBUILD_TARGET): $(RBUILD_OBJECTS) $(RBUILD_OUT)\r
        $(ECHO_LD)\r
-       ${host_gpp} $(RBUILD_OBJECTS) $(RBUILD_HOST_LFLAGS) -o $(RBUILD_TARGET)\r
+       ${host_gpp} $(RBUILD_OBJECTS) $(RBUILD_HOST_LFLAGS) -o $@\r
 \r
-$(RBUILD_COMMON_OBJECTS): %.o: %.cpp\r
+$(RBUILD_INT_)automaticdependency.o: $(RBUILD_BASE_)automaticdependency.cpp $(RBUILD_INT)\r
        $(ECHO_CC)\r
        ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
 \r
-$(RBUILD_SPECIAL_OBJECTS): %.o: %.cpp\r
+$(RBUILD_INT_)bootstrap.o: $(RBUILD_BASE_)bootstrap.cpp $(RBUILD_INT)\r
        $(ECHO_CC)\r
        ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
 \r
-$(RBUILD_TEST_TARGET): $(RBUILD_TEST_OBJECTS) $(RBUILD_BASE_DIR_EXISTS)\r
-       $(ECHO_LD)\r
-       ${host_gpp} $(RBUILD_TEST_OBJECTS) $(RBUILD_HOST_LFLAGS) -o $(RBUILD_TEST_TARGET)\r
+$(RBUILD_INT_)cdfile.o: $(RBUILD_BASE_)cdfile.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)compilerflag.o: $(RBUILD_BASE_)compilerflag.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)define.o: $(RBUILD_BASE_)define.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)exception.o: $(RBUILD_BASE_)exception.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)include.o: $(RBUILD_BASE_)include.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
 \r
-$(RBUILD_TEST_SPECIAL_OBJECTS): %.o: %.cpp\r
+$(RBUILD_INT_)linkerflag.o: $(RBUILD_BASE_)linkerflag.cpp $(RBUILD_INT)\r
        $(ECHO_CC)\r
        ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
 \r
+$(RBUILD_INT_)module.o: $(RBUILD_BASE_)module.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)project.o: $(RBUILD_BASE_)project.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)rbuild.o: $(RBUILD_BASE_)rbuild.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)ssprintf.o: $(RBUILD_BASE_)ssprintf.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)stubbedcomponent.o: $(RBUILD_BASE_)stubbedcomponent.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_INT_)XML.o: $(RBUILD_BASE_)XML.cpp $(RBUILD_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_BACKEND_INT_)backend.o: $(RBUILD_BACKEND_BASE_)backend.cpp $(RBUILD_BACKEND_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_MINGW_INT_)mingw.o: $(RBUILD_MINGW_BASE_)mingw.cpp $(RBUILD_MINGW_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_MINGW_INT_)modulehandler.o: $(RBUILD_MINGW_BASE_)modulehandler.cpp $(RBUILD_MINGW_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+$(RBUILD_DEVCPP_INT_)devcpp.o: $(RBUILD_DEVCPP_BASE_)devcpp.cpp $(RBUILD_DEVCPP_INT)\r
+       $(ECHO_CC)\r
+       ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+#$(RBUILD_COMMON_OBJECTS): %.o: %.cpp $(RBUILD_INT)\r
+#      $(ECHO_CC)\r
+#      ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+#$(RBUILD_SPECIAL_OBJECTS): %.o: %.cpp $(RBUILD_INT)\r
+#      $(ECHO_CC)\r
+#      ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
+#$(RBUILD_TEST_TARGET): $(RBUILD_TEST_OBJECTS) $(RBUILD_OUT)\r
+#      $(ECHO_LD)\r
+#      ${host_gpp} $(RBUILD_TEST_OBJECTS) $(RBUILD_HOST_LFLAGS) -o $@\r
+\r
+#$(RBUILD_TEST_SPECIAL_OBJECTS): %.o: %.cpp $(RBUILD_INT)\r
+#      $(ECHO_CC)\r
+#      ${host_gpp} $(RBUILD_HOST_CXXFLAGS) -c $< -o $@\r
+\r
 \r
 \r
 .PHONY: rbuild_test\r