Skip to content

Commit

Permalink
Changes to support concurrent compilation.
Browse files Browse the repository at this point in the history
	Change on 2013/09/13 by kstanger <kstanger@google.com>
-------------
Created by MOE: http://code.google.com/p/moe-java
MOE_MIGRATED_REVID=52277666
  • Loading branch information
tomball committed Oct 8, 2013
1 parent aa05807 commit d7215e4
Show file tree
Hide file tree
Showing 5 changed files with 43 additions and 50 deletions.
9 changes: 4 additions & 5 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
#
# Author: Tom Ball

.PHONY: translator jre_emul dist test
.PHONY: translator dist test

J2OBJC_ROOT = .

Expand All @@ -31,6 +31,7 @@ J2OBJC = $(DIST_DIR)/j2objc
default: dist

$(J2OBJC): scripts/j2objc.sh
@mkdir -p $(@D)
@install -C $< $@

install-scripts: $(J2OBJC)
Expand All @@ -54,16 +55,14 @@ translator: annotations_dist java_deps_dist
jre_emul_jar_dist: annotations_dist
@cd jre_emul && $(MAKE) emul_jar_dist

jre_emul_dist: translator_dist jre_emul

jre_emul:
jre_emul_dist: translator_dist
@cd jre_emul && $(MAKE) dist

junit_dist: translator_dist jre_emul_dist
@cd junit && $(MAKE) dist

# MOE:begin_strip
jsr305_dist: translator_dist jre_emul_dist
jsr305_dist: translator_dist jre_emul_dist java_deps_dist
@cd jsr305 && $(MAKE) dist
# MOE:end_strip

Expand Down
54 changes: 22 additions & 32 deletions jre_emul/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,8 @@ $(MAIN_LIB): $(MAIN_LIB_OBJS)

dist_includes: translate $(BUILD_DIR)/.jre_dist_includes

$(BUILD_DIR)/.jre_dist_includes: $(TRANSLATED_HEADERS) $(SOURCE_HEADERS) | $(DIST_INCLUDE_DIR)
$(BUILD_DIR)/.jre_dist_includes: $(TRANSLATED_HEADERS) $(SOURCE_HEADERS) | \
$(DIST_INCLUDE_DIR) translate
(cd $(EMULATION_CLASS_DIR) && tar cf - $(SOURCE_HEADERS:$(EMULATION_CLASS_DIR)/%=%)) \
| (cd $(DIST_INCLUDE_DIR); tar xfp -)
(cd $(TRANSLATED_SOURCE_DIR) && tar cf - \
Expand All @@ -617,7 +618,7 @@ $(BUILD_DIR)/.jre_dist_includes: $(TRANSLATED_HEADERS) $(SOURCE_HEADERS) | $(DIS
touch $@

$(ARCH_BUILD_DIR)/.includes: $(TRANSLATED_HEADERS) $(SOURCE_HEADERS) | \
$(ARCH_BUILD_DIR) $(ARCH_INCLUDE_DIR)
$(ARCH_BUILD_DIR) $(ARCH_INCLUDE_DIR) translate
(cd $(EMULATION_CLASS_DIR) && tar cf - $(SOURCE_HEADERS:$(EMULATION_CLASS_DIR)/%=%)) \
| (cd $(ARCH_INCLUDE_DIR); tar xfp -)
(cd $(TRANSLATED_SOURCE_DIR) && tar cf - \
Expand All @@ -634,66 +635,55 @@ DIRS_TO_MAKE = $(BUILD_DIR) $(ARCH_BUILD_DIR) $(ARCH_INCLUDE_DIR) \
$(sort $(DIRS_TO_MAKE)):
@mkdir -p $@

$(TRANSLATED_SOURCE_DIR)/%.m: %.java
$(TRANSLATED_SOURCE_DIR)/%.h $(TRANSLATED_SOURCE_DIR)/%.m: %.java | pre_translate
@echo "$?" >> $(JAVA_SOURCE_LIST)
@echo "$(@:.m=.h)" >> $(OBJC_OUT_LIST)
@echo "$@" >> $(OBJC_OUT_LIST)
@if [ -e $@ ]; then touch $@; fi
@echo "$(TRANSLATED_SOURCE_DIR)/$*.h" >> $(OBJC_OUT_LIST)
@echo "$(TRANSLATED_SOURCE_DIR)/$*.m" >> $(OBJC_OUT_LIST)
@if [ -e $(TRANSLATED_SOURCE_DIR)/$*.h ]; then touch $(TRANSLATED_SOURCE_DIR)/$*.h; fi
@if [ -e $(TRANSLATED_SOURCE_DIR)/$*.m ]; then touch $(TRANSLATED_SOURCE_DIR)/$*.m; fi

define compile_rules
$(1)/%.o: $(3)/%.$(4)
$(1)/%.o: $(3)/%.$(4) | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) -I$$(EMULATION_CLASS_DIR) \
-I$$(TRANSLATED_SOURCE_DIR)

$(1)/%.plist: $(3)/%.$(4)
$(1)/%.plist: $(3)/%.$(4) | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) $$(STATIC_ANALYZER_FLAGS) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)
endef

define compile_rules_no_arc
$(1)/java/util/HashMap.o: Classes/java/util/HashMap.m
$(1)/$(3:.m=.o): Classes/$(3) | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS_NO_ARC) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)

$(1)/java/util/HashMap.plist: Classes/java/util/HashMap.m
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) $$(STATIC_ANALYZER_FLAGS) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)

$(1)/java/util/LinkedHashMap.o: Classes/java/util/LinkedHashMap.m
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS_NO_ARC) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)

$(1)/java/util/LinkedHashMap.plist: Classes/java/util/LinkedHashMap.m
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) $$(STATIC_ANALYZER_FLAGS) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)

$(1)/IOSReference.o: Classes/IOSReference.m
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS_NO_ARC) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)

$(1)IOSReference.plist: Classes/IOSReference.m
$(1)/$(3:.m=.plist): Classes/$(3) | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) $$(STATIC_ANALYZER_FLAGS) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)
endef

define additional_compile_rules
$(1)/objc-sync.o: $(APPLE_ROOT)/objc-sync.m
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS_NO_ARC) \
-I$$(EMULATION_CLASS_DIR) -I$$(TRANSLATED_SOURCE_DIR)
endef

NON_ARC_SRCS = \
java/util/HashMap.m \
java/util/LinkedHashMap.m \
IOSReference.m

OBJC_SOURCE_DIRS = $(EMULATION_CLASS_DIR) $(TRANSLATED_SOURCE_DIR)
OBJC_EXTENSIONS = m mm
arch_compile_rules = $(foreach src_dir,$(OBJC_SOURCE_DIRS),$(foreach ext,$(OBJC_EXTENSIONS),\
$(eval $(call compile_rules,$(1),$(2),$(src_dir),$(ext))))) \
$(eval $(call compile_rules_no_arc,$(1),$(2)))
$(foreach src,$(NON_ARC_SRCS),$(eval $(call compile_rules_no_arc,$(1),$(2),$(src)))) \
$(eval $(call additional_compile_rules,$(1),$(2)))

$(call arch_compile_rules,$(CLASS_DIR),$(MACOSX_FLAGS))
$(call arch_compile_rules,$(IPHONE_BUILD_DIR),$(IPHONE_FLAGS))
Expand All @@ -703,7 +693,7 @@ ifdef TARGET_TEMP_DIR
$(call arch_compile_rules,$(TARGET_TEMP_DIR),$(ARCH_FLAGS) $(SDK_FLAGS))
endif

test: default
test: libs_dist $(DIST_DIR)/j2objcc
$(MAKE) -f tests.mk test

clean:
Expand Down
6 changes: 3 additions & 3 deletions jre_emul/tests.mk
Original file line number Diff line number Diff line change
Expand Up @@ -256,15 +256,14 @@ FAILING_MATH_TESTS = \
org/apache/harmony/tests/java/math/BigIntegerXorTest.java \
tests/api/java/math/BigIntegerTest.java \

JAVA_SOURCE_LIST = $(TMPDIR).tests.list
JAVA_SOURCE_LIST = $(BUILD_DIR)/jre_emul.tests.list

SUPPORT_OBJS = $(SUPPORT_SOURCES:%.java=$(TESTS_DIR)/%.o)
TEST_OBJS = $(TEST_SOURCES:%.java=$(TESTS_DIR)/%.o)

TEST_RESOURCES_SRCS = \
org/apache/harmony/luni/tests/test_resource.txt \
org/apache/harmony/luni/tests/java/io/testfile-utf8.txt
TEST_RESOURCES_TOP = $(BUILD_DIR)/org
TEST_RESOURCES_ROOT = apache_harmony/classlib/modules/luni/src/test/resources
TEST_RESOURCES = $(TEST_RESOURCES_SRCS:%=$(TESTS_DIR)/%)

Expand Down Expand Up @@ -316,6 +315,7 @@ clean:
@rm -rf $(TESTS_DIR)

pre_translate:
@mkdir -p $(BUILD_DIR)
@rm -f $(JAVA_SOURCE_LIST)
@touch $(JAVA_SOURCE_LIST)

Expand Down Expand Up @@ -355,7 +355,7 @@ $(TESTS_DIR)/%.h $(TESTS_DIR)/%.m: $(REGEX_TEST_ROOT)/%.java
$(TESTS_DIR)/%.h $(TESTS_DIR)/%.m: $(CONCURRENT_TEST_ROOT)/%.java
@echo $? >> $(JAVA_SOURCE_LIST)

$(TESTS_DIR)/%.o: $(TESTS_DIR)/%.m
$(TESTS_DIR)/%.o: $(TESTS_DIR)/%.m | translate
@mkdir -p `dirname $@`
../dist/j2objcc -g -I$(TESTS_DIR) -c $? -o $@ \
-Wno-objc-redundant-literal-use -Wno-format \
Expand Down
18 changes: 11 additions & 7 deletions junit/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ OBJS = $(JUNIT_SOURCES:%.java=%.o) \
IPHONE_SDK_DIR = $(shell bash ../scripts/sysroot_path.sh --iphoneos)
SIMULATOR_SDK_DIR = $(shell bash ../scripts/sysroot_path.sh --iphonesimulator)

JAVA_SOURCE_LIST = $(TMPDIR).classes.list
JAVA_SOURCE_LIST = $(BUILD_DIR)/junit.classes.list
EXTRACTED_JAVA = $(JUNIT_SOURCES:%=$(JAVA_SRC_DIR)/%) \
$(HAMCREST_SOURCES:%=$(JAVA_SRC_DIR)/%) \
$(JAVA_SRC_DIR)/$(ORG_JUNIT_TEST_SRC)
Expand Down Expand Up @@ -209,17 +209,21 @@ translate: pre_translate $(EXTRACTED_JAVA) $(TRANSLATED_OBJC)
fi

pre_translate:
@mkdir -p $(BUILD_DIR)
@rm -f $(JAVA_SOURCE_LIST)
@touch $(JAVA_SOURCE_LIST)

$(EXTRACTED_JAVA): $(JUNIT_SRC_JAR) $(HAMCREST_SRC_JAR)
$(BUILD_DIR)/.extracted: $(JUNIT_SRC_JAR) $(HAMCREST_SRC_JAR)
@mkdir -p $(JAVA_SRC_DIR)
unzip -q -o -d $(JAVA_SRC_DIR) $(JUNIT_SRC_JAR) $(JUNIT_SOURCES) \
$(ORG_JUNIT_TEST_SRC)
unzip -q -o -d $(JAVA_SRC_DIR) $(HAMCREST_SRC_JAR) $(HAMCREST_SOURCES)
@touch $(EXTRACTED_JAVA)
@touch $@

$(BUILD_DIR)/%.h $(BUILD_DIR)/%.m: $(JAVA_SRC_DIR)/%.java
$(EXTRACTED_JAVA): $(BUILD_DIR)/.extracted

$(BUILD_DIR)/%.h $(BUILD_DIR)/%.m: $(JAVA_SRC_DIR)/%.java | pre_translate
@echo "$?" >> $(JAVA_SOURCE_LIST)

ifdef TARGET_TEMP_DIR
Expand Down Expand Up @@ -249,17 +253,17 @@ $(EMULATION_SIMULATOR_LIB): $(SIMULATOR_OBJS)
endif

define compile_rules
$(1)/%.o: $(BUILD_DIR)/%.m
$(1)/%.o: $(BUILD_DIR)/%.m | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) -I$$(BUILD_DIR) \
-I$(ARCH_INCLUDE_DIR)

$(1)/%.o: $(OBJC_SOURCE_DIR)/%.m
$(1)/%.o: $(OBJC_SOURCE_DIR)/%.m | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) -I$$(BUILD_DIR) \
-I$$(ARCH_INCLUDE_DIR)

$(1)/$(ORG_JUNIT_TEST_OBJ): $(BUILD_DIR)/$(ORG_JUNIT_TEST_SRC:%.java=%.m)
$(1)/$(ORG_JUNIT_TEST_OBJ): $(BUILD_DIR)/$(ORG_JUNIT_TEST_SRC:%.java=%.m) | translate
@mkdir -p $$(@D)
$$(CLANG) -c $$? -o $$@ $(2) $$(OBJCFLAGS) -I$$(BUILD_DIR) \
-I$$(ARCH_INCLUDE_DIR)
Expand All @@ -281,7 +285,7 @@ $(JUNIT_LIB_DIST): $(JUNIT_LIB)
@mkdir -p $(@D)
install -m 0644 $< $@

$(ARCH_INCLUDE_DIR)/%.h: $(BUILD_DIR)/%.h
$(ARCH_INCLUDE_DIR)/%.h: $(BUILD_DIR)/%.h | translate
@mkdir -p $(@D)
install -m 0644 $< $@

Expand Down
6 changes: 3 additions & 3 deletions translator/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ deps:
cd ../java_deps && make dist; \
fi

$(J2OBJC_JAR): $(MANIFEST) $(RESOURCE_FILES) $(JAVA_SOURCES_FULL) | $(BUILD_DIR)
$(J2OBJC_JAR): $(MANIFEST) $(RESOURCE_FILES) $(JAVA_SOURCES_FULL) | $(BUILD_DIR) deps
@echo Building j2objc jar
@javac -Xlint:unchecked -sourcepath $(SOURCEPATH) -classpath $(CLASSPATH) \
-d $(CLASS_DIR) -encoding ISO-8859-1 -source 1.6 -target 1.6 -nowarn \
Expand Down Expand Up @@ -152,10 +152,10 @@ dist: deps $(J2OBJC_JAR_DIST)
clean:
@rm -rf $(BUILD_DIR) $(J2OBJC_JAR_DIST)

test: deps $(J2OBJC_JAR) compile-tests
test: compile-tests
java -classpath $(TEST_CLASSPATH) junit.textui.TestRunner com.google.devtools.j2objc.SmallTests

compile-tests:
compile-tests: $(J2OBJC_JAR) deps
@rm -rf $(TEST_DIR)
@mkdir -p $(TEST_DIR)
@javac -Xlint:unchecked -sourcepath src/test/java -classpath $(TEST_CLASSPATH) \
Expand Down

0 comments on commit d7215e4

Please sign in to comment.