]> git.saurik.com Git - wxWidgets.git/commitdiff
Add rcdefs.h and support for automatic manifests on Windows
authorMichael Wetherell <mike.wetherell@ntlworld.com>
Tue, 8 Nov 2005 22:49:46 +0000 (22:49 +0000)
committerMichael Wetherell <mike.wetherell@ntlworld.com>
Tue, 8 Nov 2005 22:49:46 +0000 (22:49 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

build/bakefiles/common.bkl
build/bakefiles/common_samples.bkl
build/bakefiles/config.bkl
build/bakefiles/files.bkl
build/bakefiles/wx.bkl
configure.in
include/wx/defs.h
include/wx/msw/genrcdefs.h [new file with mode: 0755]
include/wx/msw/rcdefs.h [new file with mode: 0644]
include/wx/msw/wx.rc

index 06b45c3bdb40722854e02c948a0b6367b5c89bd1..0222f6dee184596a70cdd50566fc4298fdcea797 100644 (file)
         <if cond="TARGET_CPU=='AMD64'">/MACHINE:AMD64</if>
         <if cond="TARGET_CPU=='IA64'">/MACHINE:IA64</if>
     </set>
-    <set var="RES_TARGET_CPU">
-        <if cond="TARGET_CPU=='AMD64'">WX_CPU_AMD64</if>
-        <if cond="TARGET_CPU=='IA64'">WX_CPU_IA64</if>
-    </set>
 
     <template id="common_settings">
         <debug-info>$(DEBUGINFO)</debug-info>
         </if>
         <if cond="FORMAT=='msvc'">
             <ldflags>$(LINK_TARGET_CPU)</ldflags>
-            <res-define>$(RES_TARGET_CPU)</res-define>
         </if>
     </template>
 
@@ -400,8 +395,27 @@ $(TAB)copy "$(DOLLAR)(InputPath)" $(SETUPHDIR)\wx\setup.h
         </if>
     </define-tag>
 
+    <define-tag name="msvc-create-rcdefs-h" rules="dll,lib">
+        <if cond="IS_MSVC_PRJ">
+            <msvc-headers-setup-h>
+                msw/genrcdefs.h
+            </msvc-headers-setup-h>
+            <set var="VC_COMPILER">
+                <if cond="FORMAT=='msevc4prj'">$(_COMPILER)</if>
+                <if cond="FORMAT!='msevc4prj'">cl</if>
+            </set>
+            <set var="_custom_build_include_wx_msw_genrcdefs_h">
+Creating $(SETUPHDIR)\wx\msw\rcdefs.h
+
+"$(SETUPHDIR)\wx\msw\rcdefs.h" : "$(DOLLAR)(SOURCE)" "$(DOLLAR)(SETUPHDIR)\wx\msw"
+$(TAB)$(VC_COMPILER) /EP /nologo "$(DOLLAR)(InputPath)" > "$(SETUPHDIR)\wx\msw\rcdefs.h"
+            </set>
+        </if>
+    </define-tag>
+
     <template id="msvc_setup_h">
         <msvc-copy-setup-h/>
+        <msvc-create-rcdefs-h/>
     </template>
 
     <!-- =============================================================== -->
@@ -445,11 +459,9 @@ $(TAB)copy "$(DOLLAR)(InputPath)" $(SETUPHDIR)\wx\setup.h
         <define>$(THREAD_DEFINE)</define>
         <define>$(UNICODE_DEFINE)</define>
         <define>$(MSLU_DEFINE)</define>
-        <!-- this include is added by configure, we need to put other
-             includes before it: -->
+        <include cond="FORMAT!='autoconf'">$(SETUPHDIR)</include>
         <include cond="FORMAT!='autoconf'">$(TOP_SRCDIR)include</include>
         <lib-path>$(LIBDIRNAME)</lib-path>
-        <include cond="FORMAT!='autoconf'">$(SETUPHDIR)</include>
         <warnings>max</warnings>
         <cppflags-watcom>
             -wcd=549 <!-- 'sizeof' operand contains compiler generated information -->
@@ -575,6 +587,14 @@ $(TAB)copy "$(DOLLAR)(InputPath)" $(SETUPHDIR)\wx\setup.h
         </if>
     </template>
 
+    <if cond="FORMAT=='autoconf'">
+        <set var="RCDEFDIR">
+            <if cond="TOOLKIT=='MSW'">
+                $(LIBDIRNAME)/wx/include/$(TOOLCHAIN_FULLNAME)
+            </if>
+        </set>
+    </if>
+
     <template id="wx_dll_b" template="wx_lib_b">
         <set var="WXDLLNAME">$(wxwin.mkDllName(wxid))</set>
         <dllname>$(WXDLLNAME)</dllname>
@@ -587,9 +607,10 @@ $(TAB)copy "$(DOLLAR)(InputPath)" $(SETUPHDIR)\wx\setup.h
         <!-- version info resources: -->
         <if cond="FORMAT not in ['rpmspec','wx24dsp']"> <!-- FIXME: fix for bkl-0.1.7 only, remove the cond later -->
             <res-define>WXDLLNAME=$(WXDLLNAME)</res-define>
-            <res-include cond="FORMAT=='autoconf'">
-                $(TOP_SRCDIR)include
-            </res-include>
+            <if cond="FORMAT=='autoconf'">
+                <res-include>$(TOP_SRCDIR)include</res-include>
+                <res-include>$(RCDEFDIR)</res-include>
+            </if>
         </if>
         <win32-res>$(WXTOPDIR)src/msw/version.rc</win32-res>
     </template>
index 3e46c6a7c8b29f861037366241f00338a1bce030..a211e9dcf6c736e9daf3ec74685ec8d2b66bb111 100644 (file)
         <include>$(SRCDIR)/$(WXTOPDIR)samples</include>
         <!-- this include is not added via <include> for autoconf, see
              common.bkl: -->
-        <res-include cond="FORMAT=='autoconf'">
-            $(TOP_SRCDIR)include
-        </res-include>
+        <if cond="FORMAT=='autoconf'">
+            <res-include>$(TOP_SRCDIR)include</res-include>
+            <res-include>$(RCDEFDIR)</res-include>
+        </if>
         
         <win32-res>$(WXTOPDIR)samples/sample.rc</win32-res>
         <if cond="FORMAT=='autoconf'">
index 766bc23de60df7b9c12ae0a83358cb7823a69fa9..5a4c687fd30f50ddc26d7d3a81e8a2d3ddc9c4c4 100644 (file)
@@ -5,6 +5,29 @@
 
     <set var="BUILDING_LIB" overwrite="0">0</set>
 
+    <set var="CPP_DEFAULT_VALUE">
+        <if cond="FORMAT=='borland'">
+            cpp32 -Sr -oCON
+        </if>
+        <if cond="FORMAT=='mingw'">
+            $(DOLLAR)(CC) -E
+        </if>
+        <if cond="FORMAT=='msvc'">
+            $(DOLLAR)(CC) /EP /nologo
+        </if>
+        <if cond="FORMAT=='watcom'">
+            $(DOLLAR)(CC) -p
+        </if>
+    </set>
+    <option name="CPP">
+        <default-value>
+            $(CPP_DEFAULT_VALUE)
+        </default-value>
+        <description>
+            The C preprocessor
+        </description>
+    </option>
+
     <option name="SHARED">
         <values>0,1</values>
         <values-description>,DLL</values-description>
index 065142453b35c12d4988c07d11588ec698400107..8a74ab16ce8c4414e10201e79ab9887ece9b3f94 100644 (file)
@@ -1407,6 +1407,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file!
     wx/msw/regconf.h
     wx/msw/region.h
     wx/msw/registry.h
+    wx/msw/rcdefs.h
     wx/msw/scrolbar.h
     wx/msw/setup0.h
     wx/msw/slider95.h
index 4d1ad461f5722999b5c408a1b9788cd176ab5f91..8003f5f982cebff62226ec1e7d559e9e61a313de 100644 (file)
             </command>
         </action>
 
+        <set var="RCDEFS_H">
+            <if cond="TOOLKIT=='MSW'">
+                lib/wx/include/$(TOOLCHAIN_FULLNAME)/wx/msw/rcdefs.h
+            </if>
+        </set>
+
         <data-files>
             <srcdir>$(BUILDDIR)</srcdir>
-            <files>lib/wx/include/$(TOOLCHAIN_FULLNAME)/wx/setup.h</files>
+            <files>
+                lib/wx/include/$(TOOLCHAIN_FULLNAME)/wx/setup.h
+                $(RCDEFS_H)
+            </files>
             <install-to>$(LIBDIR)/wx/include/$(TOOLCHAIN_FULLNAME)/wx</install-to>
         </data-files>
 
     </if>
 
 
+    <!-- create rcdefs.h on Windows: -->
+    <if cond="FORMAT in ['borland','mingw','msvc','watcom']">
+
+        <mkdir id="libdir_setup_wx_msw">
+            <depends>libdir_setup_wx</depends>
+            <dir>$(SETUPHDIR)/wx/msw</dir>
+        </mkdir>
+
+        <action id="rcdefs.h">
+
+            <dependency-of>setup_h</dependency-of>
+            <depends>libdir_setup_wx_msw</depends>
+            <depends-on-file>$(SRCDIR)/include/wx/msw/genrcdefs.h</depends-on-file>
+
+            <command>
+                $(DOLLAR)(CPP) "$(SRCDIR)\include\wx\msw\genrcdefs.h" > "$(SETUPHDIR)\wx\msw\rcdefs.h"
+            </command>
+
+        </action>
+
+    </if>
+
+
     <if cond="FORMAT=='autoconf'">
 
         <!-- Show this banner after installation: -->
index 453cd144e36e414698d4b4caf83f37a6e51376e7..50e6d1d09f56e9f7b219be3fe5f6bf912b905628 100644 (file)
@@ -7291,6 +7291,23 @@ AC_PROG_MAKE_SET
 
 AC_CONFIG_HEADERS([lib/wx/include/${TOOLCHAIN_FULLNAME}/wx/setup.h:setup.h.in])
 
+if test "$USE_WIN32" = 1; then
+    AC_CONFIG_COMMANDS(
+        [
+            rcdefs.h
+        ],
+        [
+            mkdir -p $outdir &&
+            $CPP $infile | sed 's/^# *[1-9].*//;s/^ *//;/./,/^$/!d' > $outdir/rcdefs.h
+        ],
+        [
+            CPP="$CPP"
+            infile="$srcdir/include/wx/msw/genrcdefs.h"
+            outdir="lib/wx/include/$TOOLCHAIN_FULLNAME/wx/msw"
+        ]
+    )
+fi
+
 AC_CONFIG_FILES([ lib/wx/config/${TOOLCHAIN_FULLNAME}:wx-config.in ],
                 [ chmod +x lib/wx/config/${TOOLCHAIN_FULLNAME} ],
                 [ TOOLCHAIN_FULLNAME="${TOOLCHAIN_FULLNAME}" ])
index 98b08ffe3d40da2bd6809e79be2e9be4deeedcf9..9c7e9dfb35fdccaa2609e851cdda35b3cdd4383c 100644 (file)
@@ -2880,5 +2880,32 @@ typedef struct window_t *WXWidget;
     private:                                    \
         classname& operator=(const classname&);
 
+/*  --------------------------------------------------------------------------- */
+/*  If a manifest is being automatically generated, add common controls 6 to it */
+/*  --------------------------------------------------------------------------- */
+
+#if (!defined wxUSE_NO_MANIFEST || wxUSE_NO_MANIFEST == 0 ) && \
+    ( defined _MSC_FULL_VER && _MSC_FULL_VER >= 140040130 )
+
+#define WX_CC_MANIFEST(cpu)                     \
+    "/manifestdependency:\"type='win32'         \
+     name='Microsoft.Windows.Common-Controls'   \
+     version='6.0.0.0'                          \
+     processorArchitecture='"cpu"'              \
+     publicKeyToken='6595b64144ccf1df'          \
+     language='*'\""
+
+#if defined _M_IX86
+    #pragma comment(linker, WX_CC_MANIFEST("x86"))
+#elif defined _M_X64
+    #pragma comment(linker, WX_CC_MANIFEST("amd64"))
+#elif defined _M_IA64
+    #pragma comment(linker, WX_CC_MANIFEST("ia64"))
+#else
+    #pragma comment(linker, WX_CC_MANIFEST("*"))
+#endif
+
+#endif /* !wxUSE_NO_MANIFEST && _MSC_FULL_VER >= 140040130 */
+
 #endif
     /*  _WX_DEFS_H_ */
diff --git a/include/wx/msw/genrcdefs.h b/include/wx/msw/genrcdefs.h
new file mode 100755 (executable)
index 0000000..4dfb6c1
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Name:        wx/msw/genrcdefs.h
+ * Purpose:     Emit preprocessor symbols into rcdefs.h for resource compiler
+ * Author:      Mike Wetherell
+ * RCS-ID:      $Id$
+ * Copyright:   (c) 2005 Mike Wetherell
+ * Licence:     wxWindows licence
+ */
+
+#define EMIT(line) line
+
+EMIT(#ifndef _WX_RCDEFS_H)
+EMIT(#define _WX_RCDEFS_H)
+
+#ifdef _MSC_FULL_VER
+EMIT(#define WX_MSC_FULL_VER _MSC_FULL_VER)
+#endif
+
+#ifdef _M_AMD64
+EMIT(#define WX_CPU_AMD64)
+#endif
+
+#ifdef _M_ARM
+EMIT(#define WX_CPU_ARM)
+#endif
+
+#ifdef _M_IA64
+EMIT(#define WX_CPU_IA64)
+#endif
+
+#if defined _M_IX86 || defined _X86_
+EMIT(#define WX_CPU_X86)
+#endif
+
+#ifdef _M_PPC
+EMIT(#define WX_CPU_PPC)
+#endif
+
+#ifdef _M_SH
+EMIT(#define WX_CPU_SH)
+#endif
+
+EMIT(#endif)
diff --git a/include/wx/msw/rcdefs.h b/include/wx/msw/rcdefs.h
new file mode 100644 (file)
index 0000000..c5ef7d1
--- /dev/null
@@ -0,0 +1,15 @@
+///////////////////////////////////////////////////////////////////////////////
+// Name:        wx/msw/rcdefs.h
+// Purpose:     Fallback for the generated rcdefs.h under the lib directory
+// Author:      Mike Wetherell
+// RCS-ID:      $Id$
+// Copyright:   (c) 2005 Mike Wetherell
+// Licence:     wxWindows licence
+///////////////////////////////////////////////////////////////////////////////
+
+#ifndef _WX_RCDEFS_H
+#define _WX_RCDEFS_H
+
+#define WX_CPU_X86
+
+#endif
index 3931d5cf069e4b3f5a0e57d167535bbbb6580b6f..51d5c5de3f44ba4bc38135586ec5d2b3e8043588 100644 (file)
@@ -20,6 +20,8 @@
     #include "wx/msw/wince/wince.rc"
 #endif
 
+#include "wx/msw/rcdefs.h"
+
 //////////////////////////////////////////////////////////////////////////////
 //
 // This is the MDI Window menu
@@ -92,13 +94,15 @@ wxBITMAP_STD_COLOURS    BITMAP "wx/msw/colours.bmp"
 //
 
 #if !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0)
+#if !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130
 
-#ifdef WX_CPU_AMD64
+#if defined(WX_CPU_AMD64)
 1 24 "wx/msw/amd64.manifest"
 #elif defined(WX_CPU_IA64)
 1 24 "wx/msw/ia64.manifest"
-#elif !defined(__WIN64__)
+#elif defined(WX_CPU_X86)
 1 24 "wx/msw/wx.manifest"
 #endif
 
+#endif // !defined(WX_MSC_FULL_VER) || WX_MSC_FULL_VER < 140040130
 #endif // !defined(wxUSE_NO_MANIFEST) || (wxUSE_NO_MANIFEST == 0)