A updated webrev against the the changeset I just pushed to the tl repo
and also include some minor fixes:
http://cr.openjdk.java.net/~mchung/6911737/webrev.01/
Mandy
Mandy Chung wrote:
This is the next step toward modularizing the jdk:
6911737: Module build: generate modules with native libraries and
any other files
Webrev at:
http://cr.openjdk.java.net/~mchung/6911737/webrev.00/
For classes and other resource files in jar files, we use simple
patterns to match what classes/resources in which module (most cases
can simply use the package name as the pattern). The module
definitions are defined in make/modules/modules.config.
For native libraries and any other files, pattern matching approach
won't work well and keeping the mapping of native libs and other files
to which module is hard to maintain and also error-prone. Instead, I
add a new MODULE variable and modify install-file macro in Defs.gmk so
that for any file is installed in the build image, the file will be
installed in its corresponding module in the module image. I also
add a few new macros in Defs.gmk such as install-non-module-file,
chmod-file, etc to handle different cases.
This change modifies > 120 makefiles and most of them are added one
line to define its module. The main change is in Defs.gmk.
> cd make/modules; gnumake all
This command will generate one directory per module,
$OUTPUTDIR/modules/<module>. It will consist of the jar file
containing its classes and resource files as well as any native
libraries, binaries, executables, etc.
For example, the base module is under $OUTPUTDIR/modules/base
> find base -print
base
base/bin
base/bin/java
base/lib
base/lib/base.jar
base/lib/i386
base/lib/i386/native_threads
base/lib/i386/native_threads/libhpi.so
base/lib/i386/jvm.cfg
base/lib/i386/server
base/lib/i386/server/libjvm.so
base/lib/i386/server/Xusage.txt
base/lib/i386/server/libjsig.so
base/lib/i386/server/libjvm_db.so
base/lib/i386/client
base/lib/i386/client/libjvm.so
base/lib/i386/client/Xusage.txt
base/lib/i386/client/libjsig.so
base/lib/i386/client/libjvm_db.so
base/lib/i386/libjsig.so
base/lib/i386/libverify.so
base/lib/i386/libjava.so
base/lib/i386/jli
base/lib/i386/jli/libjli.so
base/lib/i386/libzip.so
base/lib/i386/libnpt.so
base/lib/i386/libnet.so
base/lib/i386/libnio.so
base/lib/security
base/lib/security/US_export_policy.jar
base/lib/security/local_policy.jar
base/lib/security/java.security
base/lib/security/java.policy
base/lib/security/cacerts
base/lib/content-types.properties
base/lib/calendars.properties
base/lib/currency.data
base/lib/net.properties
base/lib/zi/....
> find nio -print
nio
nio/lib
nio/lib/nio.jar
The base module itself can be used to run applications that don't
depend on other modules.
> base/bin/java helloworld
To add the nio module on the top of the base module, you can do:
> cp -rf base myJRE
> cp -rf nio/* myJRE
Mandy