jdk/make/netbeans/awt2d/README
changeset 2 90ce3da70b43
child 1090 c5805b1672a6
equal deleted inserted replaced
0:fd16c54261b3 2:90ce3da70b43
       
     1 Working on  AWT and Java2D code with NetBeans
       
     2 
       
     3   This project includes most of Java2D and AWT-related files,
       
     4   allows easy navigation and builds from within NetBeans.
       
     5   
       
     6   Since both AWT and Java2D have lots of native code, this
       
     7   project uses "make" targets for building.
       
     8   
       
     9   Unfortunately currently this project doesn't support
       
    10   working with native code. Meaning, there is no navigation, code 
       
    11   completion, refactoring, etc.
       
    12   In the future we will provide native code support.
       
    13   
       
    14   You can certainly install the C/C++ pack for NetBeans 6.0
       
    15   once it becomes available, or use any other editor for
       
    16   working with C/C++ files.
       
    17   
       
    18   In order to use this project from within NetBeans you will have 
       
    19   to perform a full jdk build first.
       
    20   
       
    21 Here are the steps:
       
    22    1. setup your jdk build environment as described in 
       
    23       other documents (see build documentation)
       
    24   
       
    25    2. perform a full jdk build (preferably a FASTDEBUG build,
       
    26       as it simplifies the debugging - the classes and object files
       
    27       will be built with the debug information). 
       
    28       You only need to build jdk's "all" target:
       
    29         #> cd jdk/make
       
    30         #> make all > build.log 2>&1
       
    31   
       
    32    3. set "make" and "make.options"  properties in your 
       
    33       ~/.openjdk/build.properties file (see the main README 
       
    34       file for more information on property files)
       
    35       to set up the environment in NetBeans.
       
    36 
       
    37       To get a list of variables you most likely will need to override
       
    38       to make the the build work in NetBeans, you can do something like this 
       
    39       (on Windows):
       
    40         #>env | grep ALT
       
    41         ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0
       
    42         ALT_DXSDK_PATH=c:/devtools/DirectX/DXSDK_Dec06
       
    43         ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0
       
    44 
       
    45       If your build is a FASTDEBUG build, don't forget
       
    46       to set FASTDEBUG=true in the property file as well so that what you 
       
    47       have built from the terminal matches what will be built from NetBeans.
       
    48 
       
    49       Set "make.options" in your build.properties
       
    50       accordingly:
       
    51         make.options=\
       
    52             ALT_JDK_IMPORT_PATH=c:/devtools/java/jdk1.7.0 \
       
    53             ALT_DXSDK_PATH=c:/devtools/DirectX/DXSDK_Dec06 \
       
    54             ALT_BOOTDIR=c:/DevTools/java/jdk1.6.0 \
       
    55             FASTDEBUG=true
       
    56         make=c:/devtools/cygwin/bin/make
       
    57 
       
    58    4. Windows only: make sure you either call vcvars32.bat
       
    59       file which sets the compiler environment
       
    60       (typically located in <YourVisualStudioInstallDir>/VC7/bin)
       
    61       and start NetBeans from the same terminal,
       
    62       or make Visual Studio register its environment
       
    63       variables globally.
       
    64       (When building on 64-bit Windows platform, use setenv.cmd
       
    65        from Platform SDK instead of vcvars32, as described in the 
       
    66        build documentation)
       
    67 
       
    68    5. Now you can launch NetBeans
       
    69 
       
    70 Notes on building the project from NetBeans
       
    71 
       
    72   If you work only with Java files, you can compile them
       
    73   with "Compile Single File" target ("F9" by default), the ant build
       
    74   will compile the class files into the correct directory automatically.
       
    75 
       
    76   However, if you touched any of C/C++ files, 
       
    77   you will need to use "build main project" ("F11") which launches
       
    78   "make" on a set of directories.
       
    79   
       
    80   Same goes if you touched a Java file which has native
       
    81   methods. You will need to run the build so that
       
    82   "javah" can generate the JNI header files used by 
       
    83   the native code.
       
    84 
       
    85 Demos
       
    86 
       
    87   The default run target for this project is Font2DTest,
       
    88   which is launched with the runtime you built.
       
    89 
       
    90   You can also start other demos by selecting a demo
       
    91   in the Project or Files view and choosing "Run" from 
       
    92   the menu.
       
    93   
       
    94   In particular, there is a J2DBench demo project, 
       
    95   which is a Java2D benchmark. To run it,
       
    96   select java2d.J2DBench/build.xml node in the
       
    97   "Projects" explorer and execute "Run" target.
       
    98   For more information on this benchmark, see
       
    99   the project's README file in the "Files" view.
       
   100 
       
   101 Notes on using CND (C/C++ pack) with this project and NetBeans.
       
   102 
       
   103   As mentioned above currently a project for working with native code is not 
       
   104   provided. However, you can set it up by yourself if you have 
       
   105   access to CND pack for NetBeans 6.0.
       
   106 
       
   107   First, install CND as described here (this is a page for CND 5.5,
       
   108   there likely will be one for 6.0 as well):
       
   109     http://www.netbeans.org/community/releases/55/cnd-install.html
       
   110   and make sure everyting works it works.
       
   111 
       
   112   Then, create a new C/C++ project of "from existing code" type (see page 
       
   113   mentioned above for examples). The project should be located in the same 
       
   114   directoryas this project is - on the same level. Call it something like 
       
   115   "awt2d-native-${platform}-${arch}". So, for example, you may have
       
   116     jdk/make/netbeans/awt2d
       
   117     jdk/make/netbeans/awt2d-native-windows-i586
       
   118 
       
   119   Specify the top level Makefile (jdk/make/Makefile), even though
       
   120   you will not be using, as the Java awt2d project is set up
       
   121   for building the workspace (thus make sure it's the default project,
       
   122   so when you hit "Build Project" it's awt2d one that's chosen).
       
   123 
       
   124   The most important thing is to specify the directories which will
       
   125   be included into this project, the defines, and the directories for 
       
   126   include files.
       
   127   This will enable code completion and limited navigation.
       
   128 
       
   129   Using the project wizard, select the source directories you're interested in.
       
   130 
       
   131   For example, 
       
   132    src/share/native/sun/java2d
       
   133    src/windows/native/sun/java2d
       
   134    ....
       
   135   (this will recursively include the subdirectories)
       
   136 
       
   137   Then set the list of the includes required by CND to enable code assistance.
       
   138   You can get a complete list of include directories by looking at your
       
   139   build log file and checking what directories are included with "-I" when 
       
   140   the files you're interesed in are built (you can probably devise some
       
   141   script to generate the list of include files relative to the native
       
   142   cnd project directory, and the list of defines passed to the compiler)
       
   143 
       
   144   For example, on Windows x86, you might have something like this
       
   145   (a somewhat complete list of awt and 2d native directories on windows):
       
   146 
       
   147   ../../src/share/javavm/export;
       
   148   ../../src/share/javavm/include;
       
   149   ../../src/share/native/common;
       
   150   ../../src/share/native/sun/awt/debug;
       
   151   ../../src/share/native/sun/awt/image/cvutils;
       
   152   ../../src/share/native/sun/awt/image;
       
   153   ../../src/share/native/sun/awt/medialib;
       
   154   ../../src/share/native/sun/awt;
       
   155   ../../src/share/native/sun/font/bidi;
       
   156   ../../src/share/native/sun/font/layout;
       
   157   ../../src/share/native/sun/font;
       
   158   ../../src/share/native/sun/java2d/cmm/lcms;
       
   159   ../../src/share/native/sun/java2d/cmm;
       
   160   ../../src/share/native/sun/java2d/loops;
       
   161   ../../src/share/native/sun/java2d/opengl;
       
   162   ../../src/share/native/sun/java2d/pipe;
       
   163   ../../src/share/native/sun/java2d;
       
   164   ../../src/windows/javavm/export;
       
   165   ../../src/windows/native/common;
       
   166   ../../src/windows/native/sun/awt;
       
   167   ../../src/windows/native/sun/java2d/d3d;
       
   168   ../../src/windows/native/sun/java2d/opengl;
       
   169   ../../src/windows/native/sun/java2d/windows;
       
   170   ../../src/windows/native/sun/java2d;
       
   171   ../../src/windows/native/sun/windows;
       
   172   ../../build/windows-i586/tmp/sun/sun.awt/awt/CClassHeaders;
       
   173   ../../build/windows-i586/tmp/sun/sun.awt/awt/obj;
       
   174   ../../build/windows-i586/tmp/sun/sun.awt/awt/obj_gO;
       
   175   ../../build/windows-i586/tmp/sun/sun.awt/jpeg/CClassHeaders;
       
   176   ../../build/windows-i586/tmp/sun/sun.awt/splashscreen/CClassHeaders;
       
   177   ../../build/windows-i586/tmp/sun/sun.font/fontmanager/CClassHeaders;
       
   178   ../../build/windows-i586/tmp/sun/sun.font/t2k/CClassHeaders;
       
   179   C:/DevTools/DirectX/DXSDK_Dec06/Include;
       
   180   C:/devtools/VS2003/SDK/v1.1/include;
       
   181   C:/devtools/VS2003/VC7/ATLMFC/INCLUDE;
       
   182   C:/devtools/VS2003/VC7/INCLUDE;
       
   183   C:/devtools/VS2003/VC7/PlatformSDK/include;
       
   184   C:/devtools/VS2003/VC7/PlatformSDK/include/prerelease;
       
   185 
       
   186   (you can format this into a single line with ';' delimiters and paste it
       
   187   into the text field instead of entering them one by one)
       
   188 
       
   189   Note that most paths are relative to the native project directory - 
       
   190   this helps if you decide to relocate the workspace later. The ones that 
       
   191   aren't relative are paths to external include directories, like those 
       
   192   of the Platform SDK, DirectX SDK.
       
   193   On Unix platforms these may be directories like /usr/include.
       
   194 
       
   195   The parser must know some defines to correctly parse the source files,
       
   196   these can also be obtained from the log file. For example, on Windows
       
   197   x86 with debugging enabled, the defines would be something like this:
       
   198     D3D_OVERLOADS; UNICODE; _UNICODE; WIN32; IAL; _LITTLE_ENDIAN; WIN32; _X86_; 
       
   199     x86; WIN32_LEAN_AND_MEAN; INTERNAL_BUILD; JDK_MAJOR_VERSION='"1"'; 
       
   200     JDK_MINOR_VERSION='"7"'; RELEASE=1.7.0-internal; DEBUG="true"
       
   201 
       
   202   (again, format it into a single line with '; ' delimiter - note the 
       
   203   space after ';' - and paste into the corresponding text field)
       
   204 
       
   205   Note that the list of include directories will be different on different
       
   206   platforms and architectures - consult you build log file.
       
   207 
       
   208   After the project is created a loaded, you may want to check the list
       
   209   of include files which weren't found (right-click on the native 
       
   210   project root in Projects exprorer, and select "View failed #include Directives" 
       
   211   from the popup menu. Update the inlcude directories list accordingly.
       
   212 
       
   213   You can later create a different configuration for non-debug build,
       
   214   just make a copy of your current configuration - call it ${arch}-debug
       
   215   (in the native project's Properties dialog) and remove "DEBUG=true" from
       
   216   the list of defines.
       
   217 
       
   218   Note that with both Java and native projects opened the default
       
   219   heap size NetBeans starts with might not be sufficient for comfortable work,
       
   220   so you may need to increase it. You can do it either from the command line
       
   221   or by editing your ~/.netbeans/dev/etc/netbeans.conf file and adding
       
   222   something like this:
       
   223      -J-Xms312m -J-Xmx512m -J-XX:PermSize=128m -J-XX:MaxPermSize=200m
       
   224   to netbeans_default_options property.