LLVMConfig.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 07 Aug 2015 14:10:48 +0100
changeset 21 64c5f01be2b3
child 36 51ac97a0e87d
permissions -rw-r--r--
Introduced class LLVMConfig to abstract a particular LLVM version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
21
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     1
"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     2
    Copyright (C) 2015-now Jan Vrany
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     3
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     4
    This code is not an open-source (yet). You may use this code
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     5
    for your own experiments and projects, given that:
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     6
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     7
    * all modification to the code will be sent to the
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     8
      original author for inclusion in future releases
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
     9
    * this is not used in any commercial software
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    10
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    11
    This license is provisional and may (will) change in
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
    a future.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ Package: 'jv:llvm_s' }"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
"{ NameSpace: Smalltalk }"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
Object subclass:#LLVMConfig
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	instanceVariableNames:''
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	classVariableNames:'LLVMConfigPath BinDir LibDir LibraryPath'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
	poolDictionaries:''
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
	category:'LLVM-S-Internal'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    25
!LLVMConfig class methodsFor:'documentation'!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    26
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    27
copyright
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    28
"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    29
    Copyright (C) 2015-now Jan Vrany
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    30
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    31
    This code is not an open-source (yet). You may use this code
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    32
    for your own experiments and projects, given that:
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    33
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    34
    * all modification to the code will be sent to the
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    35
      original author for inclusion in future releases
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    36
    * this is not used in any commercial software
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    37
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    38
    This license is provisional and may (will) change in
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
    a future.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
! !
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
!LLVMConfig class methodsFor:'initialization'!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
initialize
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    "Invoked at system start or when the class is dynamically loaded."
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    LLVMConfigPath := nil.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
    OperatingSystem isUNIXlike ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
        #('-3.8' '-3.7' '') do:[:ver |
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
            | path |
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
            path := OperatingSystem pathOfCommand: 'llvm-config' , ver.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
            path notNil ifTrue:[
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
                self llvmConfigPath: path.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
                ^ self.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
            ]
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        ^ self
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
    self error: 'This iperating system is not supported'.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
    "Modified: / 07-08-2015 / 14:06:24 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    63
!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    64
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    65
llvmConfigPath: aStringOrFilename
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    66
    "Set's the path to LLVM config which effectively
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    67
     defines which version of LLVM to use.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    68
     Must be called before using any other LLVM API"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    69
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    70
    | path |
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    71
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    72
    path := aStringOrFilename asFilename.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    73
    path exists ifFalse:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    74
        self error: '`', path pathName ,'` does not exist'.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    75
        ^ self.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    76
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    77
    path isExecutable ifFalse:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    78
        self error: '`', path pathName ,'` does not executable'.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    79
        ^ self.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    80
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    81
    LLVMConfigPath := path.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    82
    BinDir := LibDir := LibraryPath := nil.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    83
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    84
    "Created: / 07-08-2015 / 13:31:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    85
! !
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    86
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    87
!LLVMConfig class methodsFor:'accessing'!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    88
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    89
bindir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    90
    "Returns result of `llvm-config --bindir` as Filename"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    91
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    92
    BinDir isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    93
        LLVMConfigPath isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    94
            self error: 'No path to `llvm-config` set, use #llvmConfigPath:'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    95
        ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    96
        BinDir := OperatingSystem getCommandOutputFrom: LLVMConfigPath asString, ' --bindir'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    97
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    98
    ^ BinDir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    99
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   100
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   101
    LLVMConfig bindir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   102
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   103
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   104
    "Created: / 07-08-2015 / 13:29:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
libdir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   108
    "Returns result of `llvm-config --libdir` as Filename"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
    LibDir isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
        LLVMConfigPath isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   112
            self error: 'No path to `llvm-config` set, use #llvmConfigPath:'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
        ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114
        LibDir := OperatingSystem getCommandOutputFrom: LLVMConfigPath asString, ' --libdir'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   115
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   116
    ^ LibDir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   117
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   118
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   119
    LLVMConfig libdir
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   120
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   121
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   122
    "Created: / 07-08-2015 / 13:41:30 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   123
!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   124
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   125
libraryPath
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   126
    "Return path to `libLLVM.x.y.z.so` for linking"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   127
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   128
    LibraryPath isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   129
        | vsn libpath |             
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   130
        LLVMConfigPath isNil ifTrue:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   131
            self error: 'No path to `llvm-config` set, use #llvmConfigPath:'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   132
        ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   133
        vsn := OperatingSystem getCommandOutputFrom: LLVMConfigPath asString, ' --version'.
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   134
        libpath := self libdir asFilename / ('libLLVM-', vsn , '.so').
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   135
        libpath exists ifFalse:[ 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   136
            self error: 'Could not find libLLVM.x.y.z.so'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   137
        ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   138
        LibraryPath := libpath pathName.                                                        
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   139
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   140
    ].
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   141
    ^ LibraryPath 
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   142
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   143
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   144
    LLVMConfig libraryPath
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   145
    "
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   146
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   147
    "Created: / 07-08-2015 / 14:04:52 / Jan Vrany <jan.vrany@fit.cvut.cz>"
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   148
! !
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   149
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   150
!LLVMConfig class methodsFor:'documentation'!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   151
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   152
version
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   153
    ^ 'Path: jv/llvm_s/LLVMConfig.st, Version: 1.0, User: jv, Time: 2015-08-07T14:09:57.868+01'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   154
!
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   155
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   156
version_HG
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   157
    ^ 'Path: jv/llvm_s/LLVMConfig.st, Version: 1.0, User: jv, Time: 2015-08-07T14:09:57.868+01'
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   158
! !
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   159
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   160
64c5f01be2b3 Introduced class LLVMConfig to abstract a particular LLVM version
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   161
LLVMConfig initialize!