[CMake] How to calculate a value "on the fly" for use with gcc compiler option?
Jörg Förstner
Joerg.Foerstner at ubidyne.com
Wed Jul 22 06:04:17 EDT 2009
Hi Tyler,
> [...] why do you need to do all this?
I need this to binary compare the built libraries of two releases.
If a library of the current release build is binary equal to the library of the previous release build, I can be sure that there had been no change at all.
Unfortunately without the option "-frandom-seed", the object files and libraries of subsequent builds are binary different, even when no source file had been changed.
Cheers,
Joerg
> -----Ursprüngliche Nachricht-----
> Von: Tyler Roscoe [mailto:tyler at cryptio.net]
> Gesendet: Freitag, 17. Juli 2009 21:35
> An: Jörg Förstner
> Cc: cmake at cmake.org
> Betreff: Re: [CMake] How to calculate a value "on the fly"
> for use with gcc compiler option?
>
> On Fri, Jul 17, 2009 at 08:32:38PM +0200, Jörg Förstner wrote:
> > We use gcc's option "-frandom-seed=<value>", which uses a
> given value as a starting point for it's random number generator.
> > As every file shall have a unique random seed, we calculate
> the MD5 checksum of each source file "on the fly".
> > This checksum is then used as a value for the option
> "-frandom-seed".
>
> This sounds pretty crazy. Not really relevant to your
> question, but why
> do you need to do all this? Are you trying obfuscate your object files
> to prevent decompilation or something?
>
> > Here's how the current compile rule in the old Makefile looks like:
> > $(CC) -frandom-seed=$(shell md5sum $< | sed 's/\(.*\)
> .*/\1/') $(CCFLAGS) -c $< -o $@
> >
> > I tried to do this in cmake, but I only have this command:
> > ADD_DEFINITIONS(
> > "-frandom-seed=$(shell md5sum $< | sed 's/\(.*\) .*/\1/')"
> > )
> >
> > But how can I determine the current filename and replace
> "$<" by the filename?
> > How can this be made using cmake?
>
> I would move all the md5sum and sed complexity into a script and then
> just iterate over your source files, sending each to the script and
> getting the appropriate output. Something like this:
>
> foreach (_file ${src_files})
> execute_process (my_md5sum_sed_script ${_file}
> OUTPUT_VARIABLE _seed)
> add_definitions (...)
> endforeach ()
>
>
> hth,
> tyler
>
More information about the CMake
mailing list