Makefile 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. NPROCS := 1
  2. OS := $(shell uname -s)
  3. ifeq ($(OS),Linux)
  4. NPROCS := $(shell grep -c ^processor /proc/cpuinfo)
  5. endif
  6. target = build-java $(patsubst %.java,%.class,$(wildcard classes/*.java))
  7. exec_target = java.manifest
  8. clean-extra = clean-classes
  9. compact_rule = sys.stack.size = 1M\nsys.brk.size = 16M\nglibc.heap_size = 4M\nsgx.enclave_size = 2G\nsgx.thread_num = 16\nsgx.heap_min = 0x80000000
  10. large_rule = sys.stack.size = 4M\nsys.brk.size = 64M\nglibc.heap_size = 16M\nsgx.enclave_size = 8G\nsgx.thread_num = 32\nsgx.heap_min = 0x40000000
  11. extra_rules = \
  12. -e 's:\$$(DEBUGTYPE):$(if $(DEBUG),inline,none):g' \
  13. -e 's:\$$(JAVA_HOME):$(JAVA_HOME):g' \
  14. -e 's:\$$(RESOURCE_RULE):$(if $(COMPACT),$(compact_rule),$(large_rule)):g'
  15. level = ../../
  16. include ../../Makefile
  17. TEST_CLASS = $(patsubst %.java,%,$(wildcard classes/*.java))
  18. USE_UBUNTU_SRC = no
  19. VERSION := 7
  20. ifeq ($(USE_UBUNTU_SRC),yes)
  21. ifeq ($(JRE_VERSION),7)
  22. JAVA_DIR = openjdk-7-7u79-2.5.5
  23. JAVA_HOME = openjdk-7-jre
  24. endif
  25. ifeq ($(JRE_VERSION),6)
  26. JAVA_DIR = openjdk-6-6b32-1.13.4
  27. JAVA_HOME = openjdk-6-jre
  28. endif
  29. ifndef JAVA_DIR
  30. $(error Unknown JRE Version)
  31. endif
  32. INSTALL_DIR = $(JAVA_DIR)/openjdk.build
  33. JRE_DIR = $(INSTALL_DIR)/j2sdk-image/jre
  34. JDK_DIR = $(INSTALL_DIR)/j2sdk-image
  35. JAVAC = $(JDK_DIR)/bin/javac
  36. TARGET = $(JAVA_HOME)/bin/java $(JAVAC)
  37. %/Makefile: %.tar.gz
  38. tar -xzf $<
  39. cd $(dir $@) && ./configure \
  40. --prefix=$(shell readlink -f $(INSTALL_DIR)) \
  41. --disable-docs \
  42. --enable-optimizations
  43. $(JRE_DIR)/bin/java $(JAVAC): $(JAVA_DIR)/Makefile
  44. cd $(JAVA_DIR) && make -j$(NPROCS) all $(MAKE_FLAGS)
  45. $(JAVA_HOME)/bin/java: $(JRE_DIR)/bin/java
  46. rm -rf $(JAVA_HOME)
  47. cp -rf $(JRE_DIR) $(JAVA_HOME)
  48. find $(JAVA_HOME) -type f -executable -exec strip --strip-debug {} \;
  49. distclean: clean
  50. rm -rf $(INSTALL_DIR) $(JAVA_HOME)
  51. else # USE_UBUNTU_SRC = no
  52. ifeq ($(VERSION),7)
  53. ICEDTEA_URL = http://icedtea.wildebeest.org/download/drops/icedtea7/2.7.0/
  54. JAVA_DIR = openjdk-7
  55. JAVA_SRC = $(JAVA_DIR) $(JAVA_DIR)/hotspot $(JAVA_DIR)/jdk $(JAVA_DIR)/jdk/src/share/lib/security/nss.cfg
  56. JAVA_HOME = openjdk-7-jre
  57. $(JAVA_DIR): openjdk.tar.bz2
  58. tar -xjf $<
  59. rm -rf $@
  60. mv $(shell tar -tjf $< | sed -e 's@/.*@@' | head -n 1) $@
  61. $(JAVA_DIR)/hotspot: hotspot.tar.bz2 | $(JAVA_DIR)
  62. tar -xjf $<
  63. rm -rf $@
  64. mv $(shell tar -tjf $< | sed -e 's@/.*@@' | head -n 1) $@
  65. $(JAVA_DIR)/jdk: jdk.tar.bz2 | $(JAVA_DIR)
  66. tar -xjf $<
  67. rm -rf $@
  68. cd $(shell tar -tjf $< | sed -e 's@/.*@@' | head -n 1) && patch -p1 < ../smaller-jdk.patch
  69. mv $(shell tar -tjf $< | sed -e 's@/.*@@' | head -n 1) $@
  70. openjdk.tar.bz2 hotspot.tar.bz2 jdk.tar.bz2:
  71. wget $(ICEDTEA_URL)$@
  72. $(JAVA_DIR)/jdk/src/share/lib/security/nss.cfg: $(JAVA_DIR)/jdk/src/share/lib/security/nss.cfg.in | $(JAVA_DIR)/jdk
  73. sed 's:@NSS_LIBDIR@:/usr/lib/x86_64-linux-gnu:g' $< > $@
  74. endif
  75. HOST_JAVA_HOME=$(subst /jre/bin/java,,$(shell readlink -f $(shell which java)))
  76. INSTALL_DIR = $(JAVA_DIR)/build/linux-amd64
  77. JRE_DIR = $(INSTALL_DIR)/j2sdk-image/jre
  78. JDK_DIR = $(INSTALL_DIR)/j2sdk-image
  79. JAVAC = $(JDK_DIR)/bin/javac
  80. $(JRE_DIR)/bin/java $(JAVAC): $(JAVA_SRC)
  81. cd $(JAVA_DIR) && \
  82. make \
  83. ALT_BOOTDIR=$(HOST_JAVA_HOME) \
  84. ALT_JDK_IMPORT_PATH=$(HOST_JAVA_HOME) \
  85. ANT=/usr/bin/ant \
  86. INSANE="true" \
  87. FT2_CFLAGS=$(shell pkg-config --cflags freetype2) \
  88. FT2_LIBS=$(shell pkg-config --libs freetype2) \
  89. STATIC_CXX="false" \
  90. EXTRA_CFLAGS="-fPIC" \
  91. NO_DOCS="true" \
  92. BUILD_HEADLESS_ONLY="true" \
  93. BUILD_HOTSPOT="true" BUILD_JDK="true" \
  94. BUILD_LANGTOOLS="false" \
  95. BUILD_JAXP="false" BUILD_JAXWS="false" BUILD_CORBA="false" \
  96. HOTSPOT_BUILD_JOBS="$(NPROCS)" \
  97. TEST_IN_BUILD="false" \
  98. product_build
  99. $(JAVA_HOME)/bin/java: $(JRE_DIR)/bin/java
  100. rm -rf $(JAVA_HOME)
  101. cp -rf $(JRE_DIR) $(JAVA_HOME)
  102. find $(JAVA_HOME) -type f -executable -exec strip --strip-debug {} \;
  103. distclean: clean
  104. rm -rf $(JAVA_DIR) $(JAVA_HOME)
  105. endif
  106. build-java: $(JAVA_HOME)/bin/java $(JAVAC)
  107. java_home:
  108. @echo $(JAVA_HOME)
  109. %.class: %.java $(JAVAC)
  110. $(JAVAC) $<
  111. clean-classes:
  112. rm -f $(addsuffix .class,$(TEST_CLASS))