On Mon, Nov 18, 2013 at 7:42 PM, Bert Huijben <b...@qqmail.nl> wrote:
> Hi Jeff, > > > > I can confirm that this fixes the LONG_NAME problems J > Great! > > > I have one remaining problem, that I hoped would be fixed by the same fix > you applied, but it wasn’t. > > > > If the httpd build directory contains a ‘-‘, such as in my case > ‘F:\svn-dev\build\httpd’, then the ICON_FILE argument doesn’t get through > as a valid token. > > > > [[ > > build\win32\httpd.rc(34): error RC2135: file not found: F:/svn > [F:\svn-dev\build\httpd\httpd.vcxproj] > > build\win32\httpd.rc(40): error RC2135: file not found: VERSIONINFO > [F:\svn-dev\build\httpd\httpd.vcxproj] > > build\win32\httpd.rc(41): error RC2135: file not found: 4 > [F:\svn-dev\build\httpd\httpd.vcxproj] > > build\win32\httpd.rc(42): error RC2135: file not found: PRODUCTVERSION > [F:\svn-dev\build\httpd\httpd.vcxproj] > > ]] > > > > The generated line in httpd.vcxproj is now: > > > <PreprocessorDefinitions>WIN32;_WINDOWS;NDEBUG;APP_FILE;LONG_NAME=Apache > HTTP > Server;BIN_NAME=httpd.exe;ICON_FILE=F:/svn-dev/build/httpd/build/win32/apache.ico;CMAKE_INTDIR=\"Release\";%(PreprocessorDefinitions)</PreprocessorDefinitions> > > > > I can fix this by updating the relevant lines in build/win32/httpd.rc from > > [[ > > #ifdef ICON_FILE > > 1 ICON DISCARDABLE ICON_FILE > > #endif > > ]] > > to > > #ifdef ICON_FILE > > 1 ICON DISCARDABLE APR_STRINGIFY(ICON_FILE) > > #endif > > > > Bert > Thanks! Trunk: r1543282 2.4.x: r1543283 This should be safe with the old build system too. ICON_FILE was passed in with the same syntax (quoting) as other values that were already APR_STRINGIFY-ed in the .rc file. > > *From:* Jeff Trawick [mailto:traw...@gmail.com] > *Sent:* maandag 18 november 2013 22:19 > > *To:* Apache HTTP Server Development List > *Subject:* Re: Playing with cmake: LONG_NAME= problems > > > > On Mon, Nov 18, 2013 at 4:14 PM, Jeff Trawick <traw...@gmail.com> wrote: > > On Mon, Nov 18, 2013 at 4:10 PM, Bert Huijben <b...@qqmail.nl> wrote: > > Hi Jeff, > > > > Thanks for looking into this. > > > > I tried the Visual Studio 9 and Visual Studio 11 generators in both > standard Win32 and x64 forms. Both of these have similar problems even > though the first uses .vcproj files and the late .vcxproj files. > > > > The cmake generated code is accepted by the resource compiler argument > parser but then fails during the resource compile stage. > > > > It appears that the code does work for some cases where the long name only > contains a single word, but it always fails when there are multiple words. > > > > Bert > > > > Cool... In the meantime, I have a fix in trunk (r1543149) and am building > the 2.4.x fix with Visual Studio 2010 currently. (Luckily exiftool makes > it easy to quickly check File Description.) > > > > r1543165 is the 2.4.x fix > > > > > > > > *From:* Jeff Trawick [mailto:traw...@gmail.com] > *Sent:* maandag 18 november 2013 19:22 > *To:* Apache HTTP Server Development List > *Subject:* Re: Playing with cmake: LONG_NAME= problems > > > > On Mon, Nov 18, 2013 at 12:37 PM, Bert Huijben <b...@qqmail.nl> wrote: > > Hi, > > As I already mentioned I'm re-scripting my build of httpd to work using the > new cmake generator. > > It looks like I have things working now, with about half as many local > patches as before..., but I think one problem I had to patch around will be > common for everybody using project files for Visual Studio 2005 and later: > > > > I don't doubt it, but just for fun: Exactly which generator/studio version > were you using, in case I have a problem reproducing? > > > > The very ugly escaping of the LONG_NAME= argument. > > E.g. CMakeLists.txt contains: > > SET_TARGET_PROPERTIES(${mod_name} PROPERTIES COMPILE_FLAGS > "-DLONG_NAME=\"\\\"${mod_name} for Apache HTTP Server\\\"\" > -DBIN_NAME=${mod_name}.so ${EXTRA_COMPILE_FLAGS}") > > The long name value is then later generated in project files, but > differently for the C compiler and the RC (=resource) compiler. This > resource compiler doesn't like the way the value is generated, and just > handles the value literally... And then generates parser errors. > > In Subversion where we used this same pattern for years, we avoided all the > '"' escaping problems by using the APR_STRINGIFY() macro. That allows > simply > passing the value. > > > > We do that two, though with a little indirection: > > > > #define LONG_NAME_STR APR_STRINGIFY(LONG_NAME) > > #define BIN_NAME_STR APR_STRINGIFY(BIN_NAME) > > > > VALUE "FileDescription", LONG_NAME_STR "\0" > > VALUE "FileVersion", AP_SERVER_BASEREVISION "\0" > > VALUE "InternalName", BIN_NAME_STR "\0" > > VALUE "LegalCopyright", AP_SERVER_COPYRIGHT "\0" > > VALUE "OriginalFilename", BIN_NAME_STR "\0" > > > > I guess the LONG_NAME definition set in CMakeLists.txt doesn't need to try > to put literal quotes there. > > > > > E.g. > > BEGIN > BLOCK "StringFileInfo" > BEGIN > BLOCK "040904B0" > BEGIN > VALUE "CompanyName", > "http://subversion.apache.org/\0<http://subversion.apache.org/0> > " > VALUE "FileDescription", APR_STRINGIFY(SVN_FILE_DESCRIPTION) "\0" > VALUE "FileVersion", SVN_VER_NUMBER "\0" > VALUE "InternalName", "SVN\0" > VALUE "LegalCopyright", "Copyright (c) The Apache Software > Foundation\0" > VALUE "OriginalFilename", APR_STRINGIFY(SVN_FILE_NAME) "\0" > VALUE "ProductName", "Subversion\0" > VALUE "ProductVersion", SVN_VERSION "\0" > #ifdef SVN_SPECIALBUILD > VALUE "SpecialBuild", SVN_SPECIALBUILD "\0" > #endif > END > END > BLOCK "VarFileInfo" > BEGIN > VALUE "Translation", 0x409, 1200 > END > END > > I've fixed the problem for me with a local hack, but I think many future > users of the cmake build scripts would be very happy if this problem could > be fixed in the standard scripts. > > > In my case that would allow me to reduce my own patches, to cmake specific > things. (E.g. I like to have .pdb files even for the fully optimized > builds, > and cmake doesn't support that scenario) > > Bert > > > > > > > -- > Born in Roswell... married an alien... > http://emptyhammock.com/ > > > > > > -- > Born in Roswell... married an alien... > http://emptyhammock.com/ > > > > > > -- > Born in Roswell... married an alien... > http://emptyhammock.com/ > -- Born in Roswell... married an alien... http://emptyhammock.com/