public inbox for java-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [patch] Create sdk style directory on install
@ 2008-06-12 20:56 Joshua Sumali
  2008-06-13 10:42 ` Andrew Haley
  2008-06-13 12:42 ` Matthias Klose
  0 siblings, 2 replies; 18+ messages in thread
From: Joshua Sumali @ 2008-06-12 20:56 UTC (permalink / raw)
  To: java-patches; +Cc: Thomas Fitzsimmons

[-- Attachment #1: Type: text/plain, Size: 699 bytes --]

Hi,

Attached is a patch to create a sdk style directory when 
--enable-java-home is passed to configure. The patch is basically a 
merge of java-gcj-compat into libgcj.

To have this work, at the minimum, pass the following to ./configure: 
--enable-java-home --with-arch-directory=(your arch). 
--with-arch-directory specifies what to use for the 
java-1.5.0-gcj-1.5.0.0/jre/lib/<arch> directory (e.g. I use i386).

I've only included the diff to configure.ac and Makefile.am since 
including the configure and Makefile.in makes the patch quite big, so be 
sure to autoconf && automake before trying this patch. I can upload the 
renerated files somewhere if it's absolutely needed, though.

Josh

[-- Attachment #2: gcc-libjava-sdk-home-symlink.patch --]
[-- Type: text/x-patch, Size: 13708 bytes --]

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 136724)
+++ ChangeLog	(working copy)
@@ -1,3 +1,19 @@
+2008-06-12  Joshua Sumali  <jsumali@redhat.com>
+
+	* configure.ac (java-home): new AC_ARG_ENABLE.
+	(CREATE_JAVA_HOME): new AM_CONDITIONAL.
+	(gcc-suffix): new AC_ARG_WITH.
+	(arch-directory): Likewise.
+	(os-directory): Likewise.
+	(origin-name): Likewise.
+	(arch-suffix): Likewise.
+	(jvm-root-dir): Likewise.
+	(jvm-jar-dir): Likewise.
+	* Makefile.am (install-data-local): Install an sdk style directory if
+	--enable-java-home is passed to configure.
+	* configure: Regenerate.
+	* Makefile.in: Regenerate.
+
 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
 
 	* configure.host (strongarm*-elf, xscale*-elf): Remove.
Index: Makefile.am
===================================================================
--- Makefile.am	(revision 136724)
+++ Makefile.am	(working copy)
@@ -85,7 +85,7 @@
 ## It is convenient to actually build and install the default database
 ## when gcj-dbtool is available.
 dbexec_DATA = $(db_name)
-endif
+endif 
 
 bin_SCRIPTS = addr2name.awk
 
@@ -528,8 +528,134 @@
 	$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SinkChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
 	$(INSTALL_DATA) $(srcdir)/'gnu/java/nio/PipeImpl$$SourceChannelImpl.h' $(DESTDIR)$(gxx_include_dir)/gnu/java/nio/
 ## Don't install java/nio/DirectByteBufferImpl$$ReadWrite.h here. It's for internal use only.
+if CREATE_JAVA_HOME
+## Create sdk style directories
+	$(mkinstalldirs) $(DESTDIR)$(JRE_BIN_DIR)
+	$(mkinstalldirs) $(DESTDIR)$(SDK_BIN_DIR)
+	$(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)
+	$(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)
+	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)
+	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/$(OS)
+	relative() { \
+	  $(PERL) -e 'use File::Spec; \
+	    print File::Spec->abs2rel($$ARGV[0], $$ARGV[1])' $$1 $$2; \
+	}; \
+	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(SDK_BIN_DIR)); \
+	ln -sf $$RELATIVE/gij$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/java; \
+	ln -sf $$RELATIVE/gjar$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/jar; \
+	ln -sf $$RELATIVE/gjdoc$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/javadoc; \
+	ln -sf $$RELATIVE/grmic$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/rmic; \
+	ln -sf $$RELATIVE/gjavah$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/javah; \
+	ln -sf $$RELATIVE/ecj $(DESTDIR)$(SDK_BIN_DIR)/javac; \
+	ln -sf $$RELATIVE/gappletviewer$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/appletviewer; \
+	ln -sf $$RELATIVE/gjarsigner$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/jarsigner; \
+	ln -sf $$RELATIVE/grmiregistry$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/rmiregistry; \
+	ln -sf $$RELATIVE/gkeytool$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/keytool; \
+	ln -sf $$RELATIVE/gorbd$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/orbd; \
+	ln -sf $$RELATIVE/gnative2ascii$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/native2ascii; \
+	ln -sf $$RELATIVE/grmid$(gcc_suffix) $(DESTDIR)$(SDK_BIN_DIR)/rmid; \
+	ln -sf $$RELATIVE/gtnameserv$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/tnameserv; \
+	ln -sf $$RELATIVE/gserialver$(gcc_suffix) \
+	  $(DESTDIR)$(SDK_BIN_DIR)/serialver; \
+	RELATIVE=$$(relative $(DESTDIR)$(bindir) $(DESTDIR)$(JRE_BIN_DIR)); \
+	ln -sf $$RELATIVE/grmiregistry$(gcc_suffix) \
+	  $(DESTDIR)$(JRE_BIN_DIR)/rmiregistry; \
+	ln -sf $$RELATIVE/gkeytool$(gcc_suffix) $(DESTDIR)$(JRE_BIN_DIR)/keytool; \
+	ln -sf $$RELATIVE/gij$(gcc_suffix) $(DESTDIR)$(JRE_BIN_DIR)/java; \
+	ln -sf $$RELATIVE/gorbd$(gcc_suffix) $(DESTDIR)$(JRE_BIN_DIR)/orbd; \
+	ln -sf $$RELATIVE/grmid$(gcc_suffix) $(DESTDIR)$(JRE_BIN_DIR)/rmid; \
+	ln -sf $$RELATIVE/gtnameserv$(gcc_suffix) $(DESTDIR)$(JRE_BIN_DIR)/tnameserv; \
+	$(mkinstalldirs) $(DESTDIR)$(JVM_JAR_DIR); \
+	version=$(JAVA_VERSION).$(BUILD_VERSION); \
+	working_dir=`pwd`; \
+	cd $(DESTDIR)$(JVM_JAR_DIR); \
+	  for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+	    jndi-ldap jndi-rmi jsse sasl; \
+	  do \
+	    ln -s $$RELATIVE/$$jarname.jar $$jarname-$$version.jar; \
+	  done; \
+	  for jar in *-$$version.jar; \
+	  do \
+	    ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|-$(JAVA_VERSION).jar|g"); \
+	    ln -sf $$jar $$(echo $$jar | sed "s|-$$version.jar|.jar|g"); \
+	  done; \
+	cd $$working_dir; \
+	$(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/security; \
+	RELATIVE=$$(relative $(DESTDIR)$(libdir)/security \
+	  $(DESTDIR)$(JRE_LIB_DIR)/security); \
+	cd $(DESTDIR)$(JRE_LIB_DIR)/security; \
+	  ln -sf $$RELATIVE/classpath.security java.security; \
+	cd $(DESTDIR)$(JVM_ROOT_DIR); \
+	  ln -s $(JRE_DIR) $(JRE_LNK); \
+	  ln -s $(SDK_DIR) $(SDK_LNK); \
+	cd $(DESTDIR)$(JVM_JAR_ROOT_DIR); \
+	  ln -s $(SDK_DIR) $(JRE_LNK); \
+	  ln -s $(SDK_DIR) $(SDK_LNK); \
+	cd $$working_dir; \
+	$(mkinstalldirs) $(DESTDIR)$(SDK_INCLUDE_DIR)/linux; \
+	$(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client; \
+	$(mkinstalldirs) $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server; \
+	$(mkinstalldirs) $(DESTDIR)$(SDK_LIB_DIR); \
+	cd $(DESTDIR)$(JRE_LIB_DIR); \
+	  for jarname in jaas jce jdbc-stdext jndi jndi-cos jndi-dns \
+	    jndi-ldap jndi-rmi jsse sasl; \
+	  do \
+	    ln -s rt.jar $$jarname.jar; \
+	  done; \
+	cd $$working_dir; \
+	RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+	  $(DESTDIR)$(JRE_LIB_DIR)); \
+	GIJ_VERSION=$$($(DESTDIR)$(bindir)/gij --version | head -n2 | tail -n1 \
+	  | awk '{print $$5}'); \
+	ln -sf $$RELATIVE/libgcj-$$GIJ_VERSION.jar \
+	  $(DESTDIR)$(JRE_LIB_DIR)/rt.jar; \
+	RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+	  $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)); \
+	if [ -f $$RELATIVE/libjawt.so ]; then \
+	  ln -sf $$RELATIVE/libjawt.so \
+	    $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/libjawt.so; \
+	fi; \
+	RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+	  $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client); \
+	ln -sf $$RELATIVE/libjvm.so \
+	  $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/client/libjvm.so; \
+	RELATIVE=$$(relative $(DESTDIR)$(dbexecdir) \
+	  $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server); \
+	ln -sf $$RELATIVE/libjvm.so \
+	  $(DESTDIR)$(JRE_LIB_DIR)/$(CPU)/server/libjvm.so;	\
+	RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+	  $(DESTDIR)$(SDK_LIB_DIR)); \
+	ln -sf $$RELATIVE/libgcj-tools-$$GIJ_VERSION.jar \
+	  $(DESTDIR)$(SDK_LIB_DIR)/tools.jar; \
+	for headername in jawt jni; do \
+	  DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+	    -print-file-name=include/$$headername.h)); \
+	  RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+	    $(DESTDIR)$(SDK_INCLUDE_DIR)); \
+	  ln -sf $$RELATIVE/$$headername.h \
+	    $(DESTDIR)$(SDK_INCLUDE_DIR)/$$headername.h; \
+	done; \
+	for headername in jawt_md jni_md; do \
+	  DIRECTORY=$$(dirname $$($(DESTDIR)$(bindir)/gcj \
+	    -print-file-name=include/$$headername.h)); \
+	  RELATIVE=$$(relative $(DESTDIR)$$DIRECTORY \
+	    $(DESTDIR)$(SDK_INCLUDE_DIR)/linux); \
+	  ln -sf $$RELATIVE/$$headername.h \
+	    $(DESTDIR)$(SDK_INCLUDE_DIR)/linux/$$headername.h; \
+	done; \
+	RELATIVE=$$(relative $(DESTDIR)$(datarootdir)/java \
+	  $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)); \
+	if [ -f $$RELATIVE/src-$$GIJ_VERSION.zip ]; then \
+	  ln -sf $$RELATIVE/src-$$GIJ_VERSION.zip \
+	    $(DESTDIR)$(JVM_ROOT_DIR)/$(SDK_DIR)/src.zip; \
+	fi;
+endif
 
-
 ## ################################################################
 
 ##
Index: configure.ac
===================================================================
--- configure.ac	(revision 136724)
+++ configure.ac	(working copy)
@@ -117,6 +117,7 @@
 AC_CHECK_PROGS([JAR], [jar fastjar gjar], no)
 AC_PATH_PROG([ZIP], [zip], no)
 AC_PATH_PROG([UNZIP], [unzip], unzip)
+AC_PATH_PROG([PERL], [perl], perl)
 
 # We need a jar that supports -@.  This is a GNU extension.
 if test "$JAR" != no; then
@@ -1625,6 +1626,183 @@
 # We get this from the environment.
 AC_SUBST(GCJFLAGS)
 
+AC_ARG_ENABLE([java-home],
+  [AS_HELP_STRING([--enable-java-home],
+                 [create a standard JDK-style directory layout in the install tree [default=no]])],
+  [case "${enableval}" in
+    yes) JAVA_HOME_ENABLED=yes ;;
+    no)  JAVA_HOME_ENABLED=no ;;
+    *)   AC_MSG_ERROR([Unknown argument to enable/disable java-home]) ;;
+  esac],
+  [JAVA_HOME_ENABLED=no]
+)
+AM_CONDITIONAL(CREATE_JAVA_HOME, test "x${JAVA_HOME_ENABLED}" == xyes)
+
+# Only do these checks if java-home above is enabled.
+if test "x${JAVA_HOME_ENABLED}" == xyes
+then
+
+  if test "x${prefix}" = "xNONE"
+  then
+    sdk_prefix=/usr
+  else
+    sdk_prefix=$prefix
+  fi
+
+  AC_ARG_WITH([gcc-suffix],
+              AS_HELP_STRING([--with-gcc-suffix],
+                             [the GCC tool suffix (defaults to empty string)]),
+              [gcc_suffix=$withval], [gcc_suffix=""])
+  AC_MSG_RESULT(GCC suffix: ${gcc_suffix})
+  AC_SUBST(gcc_suffix)
+
+  AC_ARG_WITH([arch-directory],
+              AS_HELP_STRING([--with-arch-directory],
+                             [the arch directory under jre/lib (defaults to auto-detect)]),
+              [host_cpu=$withval], [host_cpu=""])
+
+  AC_ARG_WITH([os-directory],
+              AS_HELP_STRING([--with-os-directory],
+                             [the os directory under include (defaults to auto-detect)]),
+              [host_os=$withval], [host_os=""])
+
+  AC_ARG_WITH([origin-name],
+              AS_HELP_STRING([--with-origin-name],
+                             [the JPackage origin name of this package (default is gcj${gcc_suffix}]),
+              [origin_name=$withval], [origin_name=gcj${gcc_suffix}])
+  AC_MSG_RESULT(JPackage origin name: ${origin_name})
+
+  AC_ARG_WITH([arch-suffix],
+              AS_HELP_STRING([--with-arch-suffix],
+                             [the arch directory suffix (default is the empty string]),
+              [arch_suffix=$withval], [arch_suffix=""])
+  AC_MSG_RESULT(arch suffix: ${arch_suffix})
+
+  AC_ARG_WITH([jvm-root-dir],
+              AS_HELP_STRING([--with-jvm-root-dir],
+                             [where to install SDK (default is ${sdk_prefix}/lib/jvm)]),
+              [jvm_root_dir=$withval], [jvm_root_dir=${sdk_prefix}/lib/jvm])
+  AC_MSG_RESULT(JVM root installation directory: ${jvm_root_dir})
+
+  AC_ARG_WITH([jvm-jar-dir],
+              AS_HELP_STRING([--with-jvm-jar-dir],
+			                 [where to install jars (default is ${sdk_prefix}/lib/jvm-exports)]),
+              [jvm_jar_dir=$withval], [jvm_jar_dir=${sdk_prefix}/lib/jvm-exports])
+  AC_MSG_RESULT(JAR root installation directory: ${jvm_jar_dir})
+
+  JAVA_VERSION=1.5.0
+  BUILD_VERSION=0
+  AC_SUBST(JAVA_VERSION)
+  AC_SUBST(BUILD_VERSION)
+  AC_MSG_RESULT(Java version: ${JAVA_VERSION})
+
+  jre_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}/jre
+  sdk_dir=java-${JAVA_VERSION}-${origin_name}-${JAVA_VERSION}.${BUILD_VERSION}${arch_suffix}
+  jre_lnk=jre-${JAVA_VERSION}-${origin_name}
+  sdk_lnk=java-${JAVA_VERSION}-${origin_name}
+
+  JVM_ROOT_DIR=${jvm_root_dir}
+  AC_SUBST(JVM_ROOT_DIR)
+  AC_MSG_RESULT(JVM ROOT directory: ${JVM_ROOT_DIR})
+
+  JVM_JAR_ROOT_DIR=${jvm_jar_dir}
+  AC_SUBST(JVM_JAR_ROOT_DIR)
+  AC_MSG_RESULT(JVM JAR ROOT directory: ${JVM_JAR_ROOT_DIR})
+
+  JVM_JAR_DIR=${jvm_jar_dir}/${sdk_dir}
+  AC_SUBST(JVM_JAR_DIR)
+  AC_MSG_RESULT(JVM JAR directory: ${JVM_JAR_DIR})
+
+  JRE_DIR=${jre_dir}
+  AC_SUBST(JRE_DIR)
+
+  SDK_DIR=${sdk_dir}
+  AC_SUBST(SDK_DIR)
+
+  JRE_LNK=${jre_lnk}
+  AC_SUBST(JRE_LNK)
+
+  SDK_LNK=${sdk_lnk}
+  AC_SUBST(SDK_LNK)
+
+  JAVA_HOME_DIR=${jvm_root_dir}/${jre_dir}
+  AC_SUBST(JAVA_HOME_DIR)
+  AC_MSG_RESULT(JAVA_HOME directory: ${JAVA_HOME_DIR})
+
+  SDK_BIN_DIR=${jvm_root_dir}/${sdk_dir}/bin
+  AC_SUBST(SDK_BIN_DIR)
+  AC_MSG_RESULT(SDK tools directory: ${SDK_BIN_DIR})
+
+  SDK_LIB_DIR=${jvm_root_dir}/${sdk_dir}/lib
+  AC_SUBST(SDK_LIB_DIR)
+  AC_MSG_RESULT(SDK jar directory: ${SDK_LIB_DIR})
+
+  SDK_INCLUDE_DIR=${jvm_root_dir}/${sdk_dir}/include
+  AC_SUBST(SDK_INCLUDE_DIR)
+  AC_MSG_RESULT(SDK include directory: ${SDK_INCLUDE_DIR})
+
+  JRE_BIN_DIR=${jvm_root_dir}/${jre_dir}/bin
+  AC_SUBST(JRE_BIN_DIR)
+  AC_MSG_RESULT(JRE tools directory: ${JRE_BIN_DIR})
+
+  JRE_LIB_DIR=${jvm_root_dir}/${jre_dir}/lib
+  AC_SUBST(JRE_LIB_DIR)
+  AC_MSG_RESULT(JRE lib directory: ${JRE_LIB_DIR})
+
+  # Find gcj prefix using gcj found in PATH.
+  gcj_prefix=`which gcj${gcc_suffix} | sed "s%/bin/gcj${gcc_suffix}%%"`
+
+  # Where do the gcj binaries live?
+  # For jhbuild based builds, they all live in a sibling of bin called
+  # gcj-bin.  Check for gcj-bin first, and use bin otherwise.
+  GCJ_BIN_DIR=`if test -d ${gcj_prefix}/gcj-bin; then echo ${gcj_prefix}/gcj-bin; else echo ${gcj_prefix}/bin; fi`
+  AC_SUBST(GCJ_BIN_DIR)
+  AC_MSG_RESULT(GCJ tools directory: ${GCJ_BIN_DIR})
+
+  echo host is ${host}
+  if test "x${host_cpu}" = "x"
+  then
+    case ${host} in
+      *-mingw* | *-cygwin*)
+        host_cpu=x86;;
+      i486-* | i586-* | i686-*)
+        host_cpu=i386;;
+      *)
+        host_cpu=${host_cpu};;
+    esac
+  fi
+  AC_MSG_RESULT(arch directory: ${host_cpu})
+  CPU=${host_cpu}
+  AC_SUBST(CPU)
+
+  if test "x${host_os}" = "x"
+  then
+    case ${host} in
+      *-mingw* | *-cygwin*)
+        host_os=win32;;
+      *-linux*)
+        host_os=linux;;
+      *)
+        host_os=${host_os};;
+    esac
+  fi
+  echo os directory: ${host_os}
+  OS=${host_os}
+  AC_SUBST(OS)
+
+  # make an expanded $libdir, for substituting into
+  # scripts (and other non-Makefile things).
+  LIBDIR=$libdir
+  if test "x${exec_prefix}" = "xNONE"
+  then
+      lib_exec_prefix=$sdk_prefix
+  else
+      lib_exec_prefix=$exec_prefix
+  fi
+  LIBDIR=`echo $libdir | sed "s:\\\${exec_prefix}:$lib_exec_prefix:g"`
+  AC_SUBST(LIBDIR)
+fi
+
 AC_CONFIG_FILES([
 Makefile
 libgcj.pc

^ permalink raw reply	[flat|nested] 18+ messages in thread

end of thread, other threads:[~2008-07-02 13:19 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2008-06-12 20:56 [patch] Create sdk style directory on install Joshua Sumali
2008-06-13 10:42 ` Andrew Haley
2008-06-13 12:42 ` Matthias Klose
2008-06-16 14:37   ` Joshua Sumali
2008-06-18 20:39     ` Joshua Sumali
2008-06-19  9:54       ` Andrew Haley
2008-06-19 14:24         ` Joshua Sumali
2008-06-20  4:13           ` Joshua Sumali
2008-06-26 18:18           ` Joshua Sumali
2008-06-30 10:20             ` Andrew Haley
2008-06-30 13:54               ` Joshua Sumali
2008-06-30 13:57                 ` Andrew Haley
2008-06-30 14:39                   ` Joshua Sumali
2008-07-01 13:59                     ` Andrew Haley
2008-07-01 14:53                       ` Joshua Sumali
2008-07-01 15:01                         ` Andrew Haley
2008-07-02 13:07                     ` Andrew Haley
2008-07-02 13:19                       ` Joshua Sumali

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).