Makefile 3.5 KB

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