diff options
author | Kenneth Russel <[email protected]> | 2006-08-12 00:21:32 +0000 |
---|---|---|
committer | Kenneth Russel <[email protected]> | 2006-08-12 00:21:32 +0000 |
commit | f34a8c13539621d5196d29f52e673f8f42a79fa4 (patch) | |
tree | f26cde6388d035e6a9118e841c72360f7e785ca2 | |
parent | 93dfeb74b546f7a00255a5922edb7cdb38d69ec4 (diff) |
Refactored initialization of C compilers via cpptasks into
gluegen-cpptasks.xml. Now JOGL and JOAL subclass these compiler and
linker definitions where necessary, resulting in much more code
sharing between the build.xml files. JOAL should now be ready to
compile on more platforms as well. Tested so far on Windows; will test
builds on other platforms.
git-svn-id: file:///usr/local/projects/SUN/JOGL/git-svn/../svn-server-sync/gluegen/trunk@40 a78bb65f-1512-4460-ba86-f6dc96a7bf27
-rwxr-xr-x | make/build.xml | 134 | ||||
-rwxr-xr-x | make/gluegen-cpptasks.xml | 170 |
2 files changed, 171 insertions, 133 deletions
diff --git a/make/build.xml b/make/build.xml index d44db60..3048907 100755 --- a/make/build.xml +++ b/make/build.xml @@ -297,139 +297,7 @@ <property name="gluegen.rt.natives.dso" value="libgluegen-rt.so" /> </target> - <target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.detect.compiler,setup.java.home.dir,declare.win32,declare.linux,declare.solaris,declare.macosx,declare.freebsd,declare.hpux" unless="build.javaonly" > - <!-- compiler configuration --> - <compiler id="compiler.cfg.linux" name="gcc" /> - - <compiler id="compiler.cfg.linux.amd64" name="gcc"> - <compilerarg value="-fPIC"/> - </compiler> - - <compiler id="compiler.cfg.solaris" name="suncc"> - </compiler> - - <compiler id="compiler.cfg.solarisSparcv9" name="suncc"> - <compilerarg value="-fast" /> - <compilerarg value="-xchip=ultra" /> - <compilerarg value="-xarch=v9a" /> - <compilerarg value="-xcode=32" /> - </compiler> - - <compiler id="compiler.cfg.solarisAMD64" name="suncc"> - <compilerarg value="-fast" /> - <compilerarg value="-xchip=opteron" /> - <compilerarg value="-xarch=amd64" /> - <!-- <compilerarg value="-xcache=64/64/2:1024/64/16" /> --> - </compiler> - - <compiler id="compiler.cfg.win32.mingw" name="gcc"> - <defineset> - <define name="_DEBUG" if="c.compiler.use-debug"/> - <define name="DEBUG" if="c.compiler.use-debug"/> - <define name="NDEBUG" unless="c.compiler.use-debug"/> - - <define name="DBUILD_DLL" /> - <define name="_WINGDI_" /> - <define name="_STRICT_ANSI" /> - <define name="_JNI_IMPLEMENTATION_" /> - </defineset> - </compiler> - - <compiler id="compiler.cfg.win32.msvc" name="msvc"> - <compilerarg value="/W3"/> <!-- set warning level --> - <compilerarg value="/Ob1"/> <!-- inline only functions marked inline --> - <compilerarg value="/GF"/> <!-- enable string pooling --> - <compilerarg value="/Gy"/> <!-- enable function level linking --> - <compilerarg value="/GS" if="isVC7"/> <!-- buffer security checks --> - <compilerarg value="/Wp64" if="isVC7"/> <!-- detect 64-bit port problems --> - <compilerarg value="/RTCcsu" if="isVC7"/> <!-- various runtime checks --> - <!-- Note: previous compiler options for VC7 were: - Debug: /MDd /Yd /GS /RTCs /RTCu /RTCc /W3 /Od /GF /EHsc /Zi /GS /Gy /Wp64 /Zi /D "_DEBUG" - Optimized: /MD /W3 /O2 /Ob1 /GF /EHsc /GS /Gy /Wp64 /D "NDEBUG" --> - <compilerarg value="/GS" if="isVC8"/> <!-- buffer security checks --> - <compilerarg value="/Wp64" if="isVC8"/> <!-- detect 64-bit port problems --> - <compilerarg value="/RTCcsu" if="isVC8"/> <!-- various runtime checks --> - - <defineset> - <define name="_DEBUG" if="c.compiler.use-debug"/> - <define name="DEBUG" if="c.compiler.use-debug"/> - <define name="NDEBUG" unless="c.compiler.use-debug"/> - </defineset> - </compiler> - - <compiler id="compiler.cfg.macosx" name="gcc"> - <compilerarg value="-arch" if="macosxfat"/> - <compilerarg value="ppc" if="macosxfat"/> - <compilerarg value="-arch" if="macosxfat"/> - <compilerarg value="i386" if="macosxfat"/> - <compilerarg value="-Wmost" /> - <compilerarg value="-ObjC" /> - <defineset> - <define name="macosx" /> - </defineset> - </compiler> - - <compiler id="compiler.cfg.freebsd" name="gcc" /> - - <compiler id="compiler.cfg.hpux" name="aCC"> - <!-- Interpret source as ANSI C89 (not C++) --> - <compilerarg value="-Ae"/> - <!-- Dereferences are performed with four-byte loads and stores. --> - <compilerarg value="+u4"/> - <!-- Suppress warnings: - 942: signed/unsigned assignment compatibility - 129: redeclarations in stub_includes --> - <compilerarg value="+W942,129"/> - <defineset> - <!-- aCC doesn't seem to define a generic system macro, a la - "__sun". The documentation claims it defines the following, - but don't seem to work: __HP_aCC, __LP64__, __RISC_0__. - HP-UX docs on JNI say to use the defs below - (http://www.hp.com/products1/unix/java/infolibrary/prog_guide/JNI_java2.html) --> - <!-- Single underscore prefix, as recommended by aCC docs... --> - <define name="_HPUX"/> - <define name="_POSIX_C_SOURCE" value="199506L"/> - </defineset> - </compiler> - - <!-- linker configuration --> - - <linker id="linker.cfg.linux" name="gcc" /> - - <linker id="linker.cfg.linux.amd64" name="gcc" /> - - <linker id="linker.cfg.solaris" name="suncc" /> - - <linker id="linker.cfg.solarisSparcv9" name="suncc"> - <linkerarg value="-xarch=v9a" /> - </linker> - - <linker id="linker.cfg.solarisAMD64" name="suncc"> - <linkerarg value="-xarch=amd64" /> - </linker> - - <linker id="linker.cfg.win32.mingw" name="gcc" incremental="false"> - <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> - </linker> - - <linker id="linker.cfg.win32.msvc" name="msvc" incremental="false"> - <linkerarg value="/OPT:REF,ICF" /> <!-- enable link-time optimisations --> - <linkerarg value="/SUBSYSTEM:WINDOWS" /> <!-- output is not a console app as uses WinMain entry point --> - <linkerarg value="/MACHINE:X86" if="isVC6" /> <!-- explicity set target platform --> - <linkerarg value="/MACHINE:X86" if="isVC7" /> <!-- explicity set target platform --> - <linkerarg value="/MACHINE:X86" if="isVC8" /> <!-- explicity set target platform --> - <linkerarg value="/MACHINE:X64" if="isVC8_X64"/> <!-- explicity set target platform (IX64) --> - </linker> - - <linker id="linker.cfg.macosx" name="gcc"> - <linkerarg value="-arch" if="macosxfat"/> - <linkerarg value="ppc" if="macosxfat"/> - <linkerarg value="-arch" if="macosxfat"/> - <linkerarg value="i386" if="macosxfat"/> - </linker> - - <linker id="linker.cfg.hpux" name="aCC" /> - + <target name="c.configure" depends="gluegen.cpptasks.detect.os,gluegen.cpptasks.detect.compiler,setup.java.home.dir,declare.win32,declare.linux,declare.solaris,declare.macosx,declare.freebsd,declare.hpux,gluegen.cpptasks.configure.compiler" unless="build.javaonly" > <!-- Common properties --> <property name="java.includes.dir" value="${java.home.dir}/include" /> <!-- NOTE: this MUST be relative for FileSet --> diff --git a/make/gluegen-cpptasks.xml b/make/gluegen-cpptasks.xml index 0c1e39d..6ea364e 100755 --- a/make/gluegen-cpptasks.xml +++ b/make/gluegen-cpptasks.xml @@ -54,6 +54,36 @@ - isVC8_X64 - isVC8Family (= isVC8 || isVC8_X64) - isMingW + - + - The gluegen.cpptasks.configure.compiler initializes several + - cpptasks compiler and linker configurations designed to support + - compilation of C code on multiple platforms. Generally if it is + - necessary to set up include paths, link paths, etc., then these + - compilers and linkers will need to be subclassed in sub-projects. + - However, at least the base-level configuration does not need to + - be replicated. + - + - The following compiler and linker IDs are defined by this target: + - + - compiler.cfg.linux + - compiler.cfg.linux.amd64 + - compiler.cfg.solaris + - compiler.cfg.solaris.sparcv9 + - compiler.cfg.solaris.amd64 + - compiler.cfg.win32.mingw + - compiler.cfg.win32.msvc + - compiler.cfg.macosx + - compiler.cfg.freebsd + - compiler.cfg.hpux + - linker.cfg.linux + - linker.cfg.linux.amd64 + - linker.cfg.solaris + - linker.cfg.solaris.sparcv9 + - linker.cfg.solaris.amd64 + - linker.cfg.win32.mingw + - linker.cfg.win32.msvc + - linker.cfg.macosx + - linker.cfg.hpux --> <project name="GlueGen-cpptasks" basedir="."> <!-- import cpptasks --> @@ -226,4 +256,144 @@ <!-- NOTE: the value of the debug and optimise attributes will not be overridden if already set externally --> <property name="c.compiler.debug" value="false" /> </target> + + <target name="gluegen.cpptasks.configure.compiler"> + <!-- compiler configuration --> + <compiler id="compiler.cfg.linux" name="gcc" /> + + <compiler id="compiler.cfg.linux.amd64" name="gcc"> + <compilerarg value="-fPIC"/> + </compiler> + + <compiler id="compiler.cfg.solaris" name="suncc"> + </compiler> + + <compiler id="compiler.cfg.solaris.sparcv9" name="suncc"> + <compilerarg value="-fast" /> + <compilerarg value="-xchip=ultra" /> + <compilerarg value="-xarch=v9a" /> + <compilerarg value="-xcode=32" /> + </compiler> + + <compiler id="compiler.cfg.solaris.amd64" name="suncc"> + <compilerarg value="-fast" /> + <compilerarg value="-xchip=opteron" /> + <compilerarg value="-xarch=amd64" /> + <!-- <compilerarg value="-xcache=64/64/2:1024/64/16" /> --> + </compiler> + + <compiler id="compiler.cfg.win32.mingw" name="gcc"> + <defineset> + <define name="_DEBUG" if="c.compiler.use-debug"/> + <define name="DEBUG" if="c.compiler.use-debug"/> + <define name="NDEBUG" unless="c.compiler.use-debug"/> + + <define name="DBUILD_DLL" /> + <define name="_WINGDI_" /> + <define name="_STRICT_ANSI" /> + <define name="_JNI_IMPLEMENTATION_" /> + </defineset> + </compiler> + + <compiler id="compiler.cfg.win32.msvc" name="msvc"> + <compilerarg value="/W3"/> <!-- set warning level --> + <compilerarg value="/Ob1"/> <!-- inline only functions marked inline --> + <compilerarg value="/GF"/> <!-- enable string pooling --> + <compilerarg value="/Gy"/> <!-- enable function level linking --> + <compilerarg value="/GS" if="isVC7"/> <!-- buffer security checks --> + <compilerarg value="/Wp64" if="isVC7"/> <!-- detect 64-bit port problems --> + <compilerarg value="/RTCcsu" if="isVC7"/> <!-- various runtime checks --> + <!-- Note: previous compiler options for VC7 were: + Debug: /MDd /Yd /GS /RTCs /RTCu /RTCc /W3 /Od /GF /EHsc /Zi /GS /Gy /Wp64 /Zi /D "_DEBUG" + Optimized: /MD /W3 /O2 /Ob1 /GF /EHsc /GS /Gy /Wp64 /D "NDEBUG" --> + <compilerarg value="/GS" if="isVC8"/> <!-- buffer security checks --> + <compilerarg value="/Wp64" if="isVC8"/> <!-- detect 64-bit port problems --> + <compilerarg value="/RTCcsu" if="isVC8"/> <!-- various runtime checks --> + + <defineset> + <define name="_DEBUG" if="c.compiler.use-debug"/> + <define name="DEBUG" if="c.compiler.use-debug"/> + <define name="NDEBUG" unless="c.compiler.use-debug"/> + </defineset> + </compiler> + + <compiler id="compiler.cfg.macosx" name="gcc"> + <compilerarg value="-arch" if="macosxfat"/> + <compilerarg value="ppc" if="macosxfat"/> + <compilerarg value="-arch" if="macosxfat"/> + <compilerarg value="i386" if="macosxfat"/> + <compilerarg value="-Wmost" /> + <compilerarg value="-ObjC" /> + <defineset> + <define name="macosx" /> + </defineset> + </compiler> + + <compiler id="compiler.cfg.freebsd" name="gcc"> + </compiler> + + <compiler id="compiler.cfg.hpux" name="aCC"> + <!-- Interpret source as ANSI C89 (not C++) --> + <compilerarg value="-Ae"/> + <!-- Dereferences are performed with four-byte loads and stores. --> + <compilerarg value="+u4"/> + <!-- Suppress warnings: + 942: signed/unsigned assignment compatibility + 129: redeclarations in stub_includes --> + <compilerarg value="+W942,129"/> + <defineset> + <!-- aCC doesn't seem to define a generic system macro, a la + "__sun". The documentation claims it defines the following, + but don't seem to work: __HP_aCC, __LP64__, __RISC_0__. + HP-UX docs on JNI say to use the defs below + (http://www.hp.com/products1/unix/java/infolibrary/prog_guide/JNI_java2.html) --> + <!-- Single underscore prefix, as recommended by aCC docs... --> + <define name="_HPUX"/> + <define name="_POSIX_C_SOURCE" value="199506L"/> + </defineset> + </compiler> + + <!-- linker configuration --> + + <linker id="linker.cfg.linux" name="gcc"> + </linker> + + <linker id="linker.cfg.linux.amd64" name="gcc"> + </linker> + + <linker id="linker.cfg.solaris" name="suncc"> + </linker> + + <linker id="linker.cfg.solaris.sparcv9" name="suncc"> + <linkerarg value="-xarch=v9a" /> + </linker> + + <linker id="linker.cfg.solaris.amd64" name="suncc"> + <linkerarg value="-xarch=amd64" /> + </linker> + + <linker id="linker.cfg.win32.mingw" name="gcc" incremental="false"> + <linkerarg value="-Wl,--kill-at" /> <!-- remove @ from function names --> + </linker> + + <linker id="linker.cfg.win32.msvc" name="msvc" incremental="false"> + <linkerarg value="/OPT:REF,ICF" /> <!-- enable link-time optimisations --> + <linkerarg value="/SUBSYSTEM:WINDOWS" /> <!-- output is not a console app as uses WinMain entry point --> + <linkerarg value="/MACHINE:X86" if="isVC6" /> <!-- explicity set target platform --> + <linkerarg value="/MACHINE:X86" if="isVC7" /> <!-- explicity set target platform --> + <linkerarg value="/MACHINE:X86" if="isVC8" /> <!-- explicity set target platform --> + <linkerarg value="/MACHINE:X64" if="isVC8_X64"/> <!-- explicity set target platform (IX64) --> + </linker> + + <linker id="linker.cfg.macosx" name="gcc"> + <linkerarg value="-arch" if="macosxfat"/> + <linkerarg value="ppc" if="macosxfat"/> + <linkerarg value="-arch" if="macosxfat"/> + <linkerarg value="i386" if="macosxfat"/> + </linker> + + <linker id="linker.cfg.hpux" name="aCC"> + </linker> + </target> + </project> |