stx_libjava.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Sun, 16 Dec 2012 21:04:02 +0100
branchdirectory_structure_refactoring
changeset 1899 800c0f76adce
parent 1823 41b161f7ec69
child 1829 991172ecd928
permissions -rw-r--r--
Closing branch directory_structure_refactoring

"
 COPYRIGHT (c) 1996-2011 by Claus Gittinger

 New code and modifications done at SWING Research Group [1]:

 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
                            SWING Research Group, Czech Technical University in Prague

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.

 [1] Code written at SWING Research Group contains a signature
     of one of the above copright owners. For exact set of such code,
     see the differences between this version and version stx:libjava
     as of 1.9.2010
"
"{ Package: 'stx:libjava' }"

LibraryDefinition subclass:#stx_libjava
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'* Projects & Packages *'
!

!stx_libjava class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 1996-2011 by Claus Gittinger

 New code and modifications done at SWING Research Group [1]:

 COPYRIGHT (c) 2010-2011 by Jan Vrany, Jan Kurs and Marcel Hlopko
                            SWING Research Group, Czech Technical University in Prague

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.

 [1] Code written at SWING Research Group contains a signature
     of one of the above copright owners. For exact set of such code,
     see the differences between this version and version stx:libjava
     as of 1.9.2010

"
! !

!stx_libjava class methodsFor:'accessing'!

svnRepositoryUrl

    ^'https://jv@swing.fit.cvut.cz/svn/stx/libjava/branches/jk_new_structure/src'

!

svnRepositoryUrlBase

    | url |
    url := stx_libjava svnRepositoryUrl.
    url ifNil:[url := 'https://swing.fit.cvut.cz/svn/stx/libjava/trunk/src'].
    (url endsWith: 'src') ifTrue:[url := url copyTo: url size - 4].
    ^url

    "Created: / 08-04-2011 / 16:57:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libjava class methodsFor:'accessing - tests'!

excludedFromTestSuite  
    "List of testcases and/or tests excluded from testsuite.
     Entries maybe ClassName or #(ClassName testName)
    "
    ^ #(
        LookupTests
    )

    "Created: / 03-06-2011 / 17:04:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

testSuite

    | suite javaTestCases stTests |
    suite := super testSuite.
    stTests := suite tests.
    suite := TestSuite new.
    suite name: self package.
    JavaTestsLoader load.

    javaTestCases := OrderedCollection new.

    Java allClassesDo:
        [:jclass|
        (jclass name ~~ #'stx/libjava/tests/JUnit3Tests'
            and:[jclass name ~~  #'stx/libjava/tests/JUnit4Tests'
                and:[jclass isTestCaseLike]])
                    ifTrue:
                        [ | tc |
                        tc := jclass asTestCase.
                        tc isAbstract ifFalse:[javaTestCases add:tc ]]].

    javaTestCases do:
                [:each | 
                suite addTests:each buildSuite tests ].


    suite tests addAll: stTests.

    suite tests withIndexDo:
        [:t :i|
        Stdout nextPutAll: i printString; space; nextPutAll: t printString; cr].

    ^suite

    "
        stx_libjava testSuite

    "

    "Created: / 07-05-2011 / 19:58:20 / Jan Vrany <jan.vrany@fit.cvut.cz>"
    "Modified: / 04-06-2011 / 17:23:05 / Marcel Hlopko <hlopkmar@fel.cvut.cz>"
    "Modified: / 09-04-2012 / 20:44:26 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

testSuiteWithoutJavaTests

    ^super testSuite.

    "Created: / 21-06-2011 / 17:33:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libjava class methodsFor:'description'!

excludedFromPreRequisites
    "list all packages which should be ignored in the automatic
     preRequisites scan. See #preRequisites for more."

    ^ #(
    )
!

preRequisites
    "list all required packages.
     This list can be maintained manually or (better) generated and
     updated by scanning the superclass hierarchies and looking for
     global variable accesses. (the browser has a menu function for that)
     Howevery, often too much is found, and you may want to explicitely
     exclude individual packages in the #excludedFromPrerequisites method."

    ^ #(
        #'stx:goodies/sunit'    "TestSuite - referenced by stx_libjava class>>testSuite "
        #'stx:libbasic'    "LibraryDefinition - superclass of stx_libjava "
        #'stx:libbasic2'    "BitArray - superclass of extended BooleanArray "
        #'stx:libbasic3'    "WrappedMethod - extended "
        #'stx:libcomp'    "SourceFileLoader - referenced by GroovyCompiler class>>compile:forClass:inCategory:notifying:install:skipIfSame:silent: "
        #'stx:libhtml'    "URL - referenced by JavaEmbeddedFrameView>>setupAppletFrameIn:initializeJava: "
        #'stx:libtool'    "WorkspaceApplication - referenced by GroovyEvaluator>>evaluate:in:receiver:notifying:logged:ifFail: "
        #'stx:libview'    "GraphicsContext - superclass of JavaTopView "
        #'stx:libview2'    "GIFReader - referenced by JavaVM class>>_GifImageDecoder_parseImage: "
        #'stx:libwidg'    "HVScrollableView - referenced by JavaVM class>>_WTextAreaPeer_create: "
        #'stx:libwidg2'    "ComboBoxView - referenced by JavaVM class>>processEvent: "
    )
! !

!stx_libjava class methodsFor:'description - compilation'!

additionalLinkLibraries_bc_dot_mak

    ^ '$(ZLIB_DIR)\$(ZLIB) support\fdlibm\libfdm.lib'

    "Modified: / 07-09-2011 / 17:04:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

additionalLinkLibraries_make_dot_proto

    ^ '$(ZLIB_LD_ARG) support/fdlibm/libfdm.a'

    "Modified: / 07-09-2011 / 17:01:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

additionalRules_bc_dot_mak
    ^ '
ant:
        ant -f java\build.xml

$(ZLIB):
        cd $(ZLIB_DIR)
        $(MAKE) $(MAKE_ZLIB_ARG) $(ZLIB)
        cd ..\..\libjava

$(BZ2LIB):
        cd $(BZ2LIB_DIR)
        $(MAKE) $(MAKE_BZ2LIB_ARG) bz2.lib
        cd ..\..\libjava

support\fdlibm\libfdm.lib:
        cd support\fdlibm
        $(MAKE) -f Makefile.bcc
        cd ..\..

'

    "Modified: / 15-11-2012 / 23:23:33 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

additionalRules_make_dot_proto
    ^ '
ant:
	ant -f java/build.xml

zlib:
        cd $(ZLIB_DIR); $(MAKE) $(MAKE_ZLIB_ARG)

support/fdlibm/libfdm.a:
        $(MAKE) -C support/fdlibm

'

    "Modified: / 15-11-2012 / 23:22:11 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

additionalTargets_bc_dot_mak

    ^ '$(ZLIB) support\fdlibm\libfdm.lib ant'

    "Modified: / 15-11-2012 / 23:20:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

additionalTargets_make_dot_proto

    ^ ' zlib support/fdlibm/libfdm.a ant'

    "Created: / 05-09-2006 / 16:05:12 / cg"
    "Modified: / 15-11-2012 / 23:20:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

localIncludes
    ^ '-I$(ZLIB_DIR) -Isupport/fdlibm'

    "Created: / 06-09-2006 / 18:18:15 / cg"
    "Modified: / 07-09-2011 / 17:03:05 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

stcOptimizationOptions
    ^ '+optinline +optinline2'

    "Created: / 23-08-2006 / 11:06:17 / cg"
! !

!stx_libjava class methodsFor:'description - contents'!

classNamesAndAttributes
    "lists the classes which are to be included in the project.
     Each entry in the list may be: a single class-name (symbol),
     or an array-literal consisting of class name and attributes.
     Attributes are: #autoload or #<os> where os is one of win32, unix,..."

    ^ #(
        "<className> or (<className> attributes...) in load order"
        GroovyCompiler
        GroovyEvaluator
        GroovyLanguage
        GroovySourceFileWriter
        Java
        JavaAnnotation
        JavaAnnotationContainer
        JavaAnnotationDefault
        JavaAnnotationDictionary
        JavaAnnotationValue
        (JavaAntProjectResource autoload)
        JavaArray
        JavaByte
        (JavaByteCodeDisassemblerTests autoload)
        JavaByteCodeProcessor
        (JavaByteCodeProcessorTests autoload)
        JavaClassAccessor
        (JavaClassLoadingTests autoload)
        (JavaClassRefTests autoload)
        JavaClassRegistry
        JavaClassReloader
        JavaConstantPool
        JavaConstants
        JavaContext
        JavaDecompiler
        JavaDescriptor
        JavaError
        JavaExceptionTableEntry
        JavaField
        (JavaFieldRefTests autoload)
        (JavaFreshlyInitializedResource autoload)
        (JavaInitializedResource autoload)
        (JavaInterfaceMethodRefTests autoload)
        (JavaJUnitTests autoload)
        JavaLanguage
        JavaLibraries
        (JavaLibrariesResource autoload)
        JavaLocalVariableTable
        JavaLocalVariableTableEntry
        JavaLookup
        JavaMathSupport
        (JavaMethodRefTests autoload)
        JavaMonitor
        (JavaMonitorsTests autoload)
        JavaNameAndType2
        JavaNativeMemory
        JavaObject
        JavaObjectDictionary
        JavaPackage
        JavaPopUpView
        JavaProcess
        JavaRef2
        (JavaRefMock autoload)
        JavaRelease
        JavaResolver
        (JavaRuntimeConstantPoolTests autoload)
        JavaShort
        JavaSlotIndexCache
        JavaSocket
        JavaSourceCodeCache
        JavaSourceFileWriter
        JavaStartup
        (JavaTestCaseProxy autoload)
        JavaTestsLoader
        (JavaTestsResource autoload)
        JavaTopView
        (JavaUTF8Tests autoload)
        JavaUnresolvedConstant
        JavaUtilities
        JavaView
        JavaZipSupport
        PPJavaNode
        ProxyMethod
        ProxyMethodCompiler
        ProxyMethodNode
        SmalltalkAppletContext
        SmalltalkAppletStub
        (TestletTestCaseProxy autoload)
        #'stx_libjava'
        JavaAnnotationArrayValue
        JavaAnnotationClassValue
        JavaAnnotationEnumValue
        JavaAnnotationNestedAnnotationValue
        JavaAnnotationPrimitiveValue
        JavaBehavior
        JavaByteCodeDisassembler
        JavaByteCodeEnumerator
        JavaByteCodeProcessorAdapter
        JavaClassAnnotationContainer
        JavaClassContentRef2
        JavaClassReader
        JavaClassRef2
        JavaEmbeddedFrameView
        JavaFieldAnnotationContainer
        JavaFieldDescriptor
        JavaFieldDescriptorWithUnionType
        JavaInvalidRefError
        JavaMethod
        JavaMethodAnnotationContainer
        JavaMethodDeclarationNode
        JavaMethodDescriptor
        JavaStringRef2
        JavaUnhandledExceptionError
        JavaUnresolvedClassConstant
        JavaUnresolvedStringConstant
        JavaVM
        JavadocDeclarationNode
        ProxyMethodConditionNode
        ProxyMethodGuardNode
        ProxyMethodInvocationNode
        JavaByteCodePreresolver
        JavaClass
        JavaFieldRef2
        JavaMethodRef2
        JavaMethodWithException
        ProxyMethodAndNode
        ProxyMethodBlockInvocationNode
        ProxyMethodMethodInvocationNode
        ProxyMethodTypeCheckNode
        GroovyClass
        JavaInterfaceMethodRef2
        JavaMethodWithHandler
        ProxyMethodJavaMethodInvocationNode
        ProxyMethodJavaTypeCheckNode
        JavaNativeMethod
        ProxyMethodJavaFieldAccessor
        ProxyMethodJavaFieldGetter
        ProxyMethodJavaFieldSetter
        (JavaExceptionTests autoload)
        #'JavaCompiler_Eclipse'
        JavaMetaclass
        GroovyMetaclass
        (JavaClassReaderTests autoload)
        (JavaRefsAndConstantPoolTestCase autoload)
        JavaNioSupport
        (JavaNativeMemoryTests autoload)
        JavaFinalizationRegistry
        JavaPathElement
        JavaMirror
        JavaClassQuery
        (JUnitTestCaseProxy autoload)
        (JavaLookupResolutionAlgorithmTests autoload)
        (JavaLookupTests autoload)
        (JavaLookupTestsResource autoload)
    )
!

extensionMethodNames
    "lists the extension methods which are to be included in the project.
     Entries are 2-element array literals, consisting of class-name and selector."

    ^ #(
        Behavior isInterface
        BooleanArray isInterface
        CharacterArray asDottedJavaClassName
        CharacterArray asInternalJavaClassName
        CharacterArray asJavaComponentClassName
        CharacterArray asJavaishClassName
        CharacterArray asNiceJavaClassName
        CharacterArray asSTXInternalJavaClassName
        CharacterArray asSlashedJavaClassName
        CharacterArray isJavaArrayDescriptor
        CharacterArray isJavaPrimitiveTypeDescriptor
        Delay waitWithState:
        Object isGroovyClass
        Object isJavaArray
        Object isJavaNameAndType
        Object isJavaPackage
        Object isJavaRef
        Object isJavaWrapperClass
        Object javaBox:
        Object javaUnwrap:
        Object javaUnwrapFrom:
        Object javaWrap:
        Process clearInterrupted
        Process isInterrupted
        Process isSleeping
        Process isWaiting
        Process javaInterrupt
        Process setInterrupted
        Set #'java__contains:'
        SmallInteger javaUnwrapFrom:
        String asArrayOfSubstringsSeparatedBy:
        UserPreferences javaTestsDirectory
        UserPreferences javaTestsDirectory:
        WrappedMethod descriptor
        WrappedMethod isAbstract
        ZipArchive nextBytes:of:startingAt:into:startingAt:
        'Boolean class' isJavaPrimitiveType
        'Boolean class' javaArrayClass
        'Boolean class' javaBox:
        'Boolean class' javaName
        'Boolean class' javaUnbox:onError:
        'Boolean class' javaUnwrap:
        'Boolean class' javaWrapperClass
        'BooleanArray class' isInterface
        'BooleanArray class' isJavaArrayClass
        'BooleanArray class' isJavaReferenceType
        'BooleanArray class' javaArrayClass
        'BooleanArray class' javaComponentClass
        'BooleanArray class' javaName
        'ByteArray class' isInterface
        'ByteArray class' isJavaArrayClass
        'ByteArray class' isJavaReferenceType
        'ByteArray class' javaArrayClass
        'ByteArray class' javaComponentClass
        'ByteArray class' javaName
        'Character class' isJavaPrimitiveType
        'Character class' javaArrayClass
        'Character class' javaBox:
        'Character class' javaName
        'Character class' javaUnbox:onError:
        'Character class' javaWrapperClass
        'CharacterArray class' decodeFromJavaUTF8:
        'CharacterArray class' fromJavaUTF8Bytes:
        'CharacterArray class' isJavaArrayClass
        'CharacterArray class' javaArrayClass
        'CharacterArray class' javaComponentClass
        'ConfigurableFeatures class' hasJavaSupport
        'DoubleArray class' isInterface
        'DoubleArray class' isJavaArrayClass
        'DoubleArray class' isJavaReferenceType
        'DoubleArray class' javaArrayClass
        'DoubleArray class' javaComponentClass
        'DoubleArray class' javaName
        'Float class' isJavaPrimitiveType
        'Float class' javaArrayClass
        'Float class' javaBox:
        'Float class' javaName
        'Float class' javaWrapperClass
        'FloatArray class' isInterface
        'FloatArray class' isJavaArrayClass
        'FloatArray class' isJavaReferenceType
        'FloatArray class' javaArrayClass
        'FloatArray class' javaComponentClass
        'FloatArray class' javaName
        'Integer class' isJavaPrimitiveType
        'Integer class' javaArrayClass
        'Integer class' javaBox:
        'Integer class' javaName
        'Integer class' javaUnbox:onError:
        'Integer class' javaUnbox:onError:min:max:
        'Integer class' javaWrapperClass
        'LargeInteger class' isJavaPrimitiveType
        'LargeInteger class' javaArrayClass
        'LargeInteger class' javaBox:
        'LargeInteger class' javaName
        'LargeInteger class' javaUnbox:onError:
        'LargeInteger class' javaWrapperClass
        'Object class' isJavaArrayClass
        'Object class' isJavaClassType
        Behavior isJavaPrimitiveType
        'Object class' isJavaReferenceType
        'Object class' isJavaType
        'ProjectDefinition class' javaClassPath
        'ProjectDefinition class' javaSourcePath
        'ShortFloat class' isJavaPrimitiveType
        'ShortFloat class' javaArrayClass
        'ShortFloat class' javaBox:
        'ShortFloat class' javaName
        'ShortFloat class' javaWrapperClass
        'SignedIntegerArray class' isInterface
        'SignedIntegerArray class' isJavaArrayClass
        'SignedIntegerArray class' javaArrayClass
        'SignedIntegerArray class' javaComponentClass
        'SignedIntegerArray class' javaName
        'SignedLongIntegerArray class' isInterface
        'SignedLongIntegerArray class' isJavaArrayClass
        'SignedLongIntegerArray class' isJavaReferenceType
        'SignedLongIntegerArray class' javaArrayClass
        'SignedLongIntegerArray class' javaComponentClass
        'SignedLongIntegerArray class' javaName
        'SignedWordArray class' isJavaArrayClass
        'SignedWordArray class' isJavaReferenceType
        'SignedWordArray class' javaComponentClass
        'SignedWordArray class' javaName
        'UndefinedObject class' isJavaPrimitiveType
        'UndefinedObject class' javaName
        'WordArray class' isInterface
        'WordArray class' isJavaArrayClass
        'WordArray class' isJavaReferenceType
        'WordArray class' javaArrayClass
        'WordArray class' javaComponentClass
        'WordArray class' javaName
        'Boolean class' javaWrap:
        ProgrammingLanguage isGroovy
        ProgrammingLanguage isJavaLike
        UserPreferences javaClassPath
        UserPreferences javaClassPath:
        UserPreferences javaRelease
        UserPreferences javaReleaseSelector
        UserPreferences javaReleaseSelector:
        UserPreferences javaSourcePath
        UserPreferences javaSourcePath:
        Class javaMirror
        Class javaMirrorClass
        ExecutableFunction isJavaConstructor
        UserPreferences javaClassPathDecoded
        UserPreferences javaSourcePathDecoded
        Process isParked
        Semaphore parkWithTimeoutMs:
        Object isSocket
        Socket isSocket
        Socket reOpenIfPossible
        Method isStatic
        Class classLoader
        Method isAbstract
        Method javaClass
        Class lookupMethodByNameAndType:
        Object getJavaLockWord
        Object getJavaMonitor
        Object javaWrapRequired
    )
! !

!stx_libjava class methodsFor:'description - java'!

javaClassPath

    <javaclasspath>

    ^{ 
        self packageDirectory / 'java' / 'bin' .
        self packageDirectory / 'java' / 'libs' / '*.jar' 
    }

    "Created: / 17-11-2011 / 23:00:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

javaSourcePath

    <javasourcepath>

    ^{ 
        self packageDirectory / 'java' / 'src' .
        self packageDirectory / 'java' / 'libs-src' / '*.jar' .            
    }

    "Created: / 17-11-2011 / 23:01:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libjava class methodsFor:'description - project information'!

applicationIconFileName
    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"

    ^ nil
    "/ ^ self applicationName
!

companyName
    "Return a companyname which will appear in <lib>.rc"

    ^ 'eXept Software AG & SWING Research Group'

    "Modified: / 15-11-2012 / 23:51:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

description
    "Description string which will appear in vc.def / bc.def"

    ^ 'Java support for Smalltalk/X'

    "Modified: / 15-11-2012 / 23:51:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

legalCopyright
    "Copyright string which will appear in <lib>.rc"

    ^ 'Copyright Claus Gittinger 1988-2011\nCopyright eXept Software AG 1998-2011\nCopyright Jan Vrany, Jan Kurs and Marcel Hlopko\n          SWING Research Group, Czech Technical University In Prague'

    "Modified: / 15-11-2012 / 23:51:35 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!

productName
    "Return product name which will appear in <lib>.rc"

    ^ 'Smalltalk/X'
! !

!stx_libjava class methodsFor:'description - svn'!

svnRepositoryUrlString
    "Return a SVN repository URL of myself.
     (Generated since 2011-04-08)
     Do not make the string shorter!!!!!! We have to use fixed-length keyword!!!!!!
    "        

    ^ '$URL::                                                                                                                        $'
!

svnRevisionNr
    "Return a SVN revision number of myself.
     This number is updated after a commit"

    ^ "$SVN-Revision:"'2197            '"$"
! !

!stx_libjava class methodsFor:'file generation'!

basicFileNamesToGenerat
    "answer a dictionary (filename -> generator method) with all the files, that have to be generated for this
     package"

    |dict|

    dict := super basicFileNamesToGenerate.

    dict 
        at:'builder/package.deps.rake' put: #'generate_package_dot_deps_dot_rake'.

    ^ dict.

    "Created: / 11-03-2011 / 09:32:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !

!stx_libjava class methodsFor:'documentation'!

version_SVN
    ^ '$Id$'
! !