This is the proper way (at least it works for me)

#define PetscStringizeArg(a) #a
#define PetscStringize(a) PetscStringizeArg(a)
#define __SDIR__ PetscStringize(__INSDIR__)

Pushed: http://petsc.cs.iit.edu/petsc/petsc-dev/rev/bfc0690be7ce


On 2 March 2010 19:52, Lisandro Dalcin <dalcinl at gmail.com> wrote:
> On 2 March 2010 19:45, Barry Smith <bsmith at mcs.anl.gov> wrote:
>>
>> ?Well Lisandro sent me down this path, so he can fix it.
>>
>
> Well, you did not follow the patch exactly... I'll take a look.
>
>
>> ?Barry
>>
>> On Mar 2, 2010, at 4:34 PM, Jed Brown wrote:
>>
>>> On Wed, 24 Feb 2010 16:16:43 -0600, Barry Smith <bsmith at mcs.anl.gov>
>>> wrote:
>>>>
>>>> ?Lisandro suggested changing the model to use -D__INSDIR__=directory
>>>> with no quotes and then in petscerror.h have
>>>> #define PetscStringize(a) #a
>>>> #define __SDIR__ PetscStringize(__INSDIR__)
>>>
>>> Did you notice that all the error messages read like this now?
>>>
>>> ?[0]PETSC ERROR: ISSetPermutation() line 141 in __INSDIR__index.c
>>>
>>> Quoting from C99 6.10.3.4 Rescanning and further replacement:
>>>
>>> 1 ?After all parameters in the replacement list have been substituted and
>>> # and ##
>>> ? processing has taken place, all placemarker preprocessing tokens are
>>> removed. Then, the
>>> ? resulting preprocessing token sequence is rescanned, along with all
>>> subsequent
>>> ? preprocessing tokens of the source file, for more macro names to
>>> replace.
>>>
>>> As far as I know, there is no way to get the preprocessor to stringize
>>> the expansion of __INSDIR__.
>>>
>>> Note that a possible alternative to __SDIR__ is to send the full path
>>> name to the compiler, as in `pwd`/source, in which case __FILE__ would
>>> have the full path.
>>>
>>> Jed
>>
>>
>
>
>
> --
> Lisandro Dalcin
> ---------------
> Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
> Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
> Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
> PTLC - G?emes 3450, (3000) Santa Fe, Argentina
> Tel/Fax: +54-(0)342-451.1594
>



-- 
Lisandro Dalcin
---------------
Centro Internacional de M?todos Computacionales en Ingenier?a (CIMEC)
Instituto de Desarrollo Tecnol?gico para la Industria Qu?mica (INTEC)
Consejo Nacional de Investigaciones Cient?ficas y T?cnicas (CONICET)
PTLC - G?emes 3450, (3000) Santa Fe, Argentina
Tel/Fax: +54-(0)342-451.1594

Reply via email to