Browse Source

make better LINK_ALL_STATIC

David Rose 16 years ago
parent
commit
4f3ea6ad9d

+ 4 - 4
dtool/Config.OSX.pp

@@ -60,10 +60,10 @@
 // options to interrogate, guaranteeing that the correct interfaces
 // options to interrogate, guaranteeing that the correct interfaces
 // are generated.  Do not include -D here; that will be supplied
 // are generated.  Do not include -D here; that will be supplied
 // automatically.
 // automatically.
-#defer CDEFINES_OPT1 _DEBUG $[EXTRA_CDEFS] $[OSX_CDEFS] $[if $[LINK_ALL_STATIC],LINK_ALL_STATIC]
-#defer CDEFINES_OPT2 _DEBUG $[EXTRA_CDEFS] $[OSX_CDEFS] $[if $[LINK_ALL_STATIC],LINK_ALL_STATIC]
-#defer CDEFINES_OPT3 $[EXTRA_CDEFS] $[OSX_CDEFS] $[if $[LINK_ALL_STATIC],LINK_ALL_STATIC]
-#defer CDEFINES_OPT4 NDEBUG $[EXTRA_CDEFS] $[OSX_CDEFS] $[if $[LINK_ALL_STATIC],LINK_ALL_STATIC]
+#defer CDEFINES_OPT1 _DEBUG $[EXTRA_CDEFS] $[OSX_CDEFS]
+#defer CDEFINES_OPT2 _DEBUG $[EXTRA_CDEFS] $[OSX_CDEFS]
+#defer CDEFINES_OPT3 $[EXTRA_CDEFS] $[OSX_CDEFS]
+#defer CDEFINES_OPT4 NDEBUG $[EXTRA_CDEFS] $[OSX_CDEFS]
 
 
 // What additional flags should be passed for each value of OPTIMIZE
 // What additional flags should be passed for each value of OPTIMIZE
 // (above)?  We separate out the compiler-optimization flags, above,
 // (above)?  We separate out the compiler-optimization flags, above,

+ 2 - 0
dtool/LocalSetup.pp

@@ -604,6 +604,8 @@ $[cdefine WANT_NATIVE_NET]
 /* Can we define a modern-style STL allocator? */
 /* Can we define a modern-style STL allocator? */
 $[cdefine USE_STL_ALLOCATOR]
 $[cdefine USE_STL_ALLOCATOR]
 
 
+/* Static linkage instead of the normal dynamic linkage? */
+$[cdefine LINK_ALL_STATIC]
 
 
 /* Platform-identifying defines. */
 /* Platform-identifying defines. */
 $[cdefine IS_OSX]
 $[cdefine IS_OSX]

+ 4 - 6
dtool/pptempl/Global.gmsvc.pp

@@ -57,12 +57,10 @@
 
 
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 #if $[ne $[LINK_ALL_STATIC],]
 #if $[ne $[LINK_ALL_STATIC],]
-  #define dlink_all_static LINK_ALL_STATIC
   #define build_dlls
   #define build_dlls
   #define build_libs yes
   #define build_libs yes
   #define dlllib lib
   #define dlllib lib
 #else
 #else
-  #define dlink_all_static
   #define build_dlls yes
   #define build_dlls yes
   #define build_libs
   #define build_libs
   #define dlllib dll
   #define dlllib dll
@@ -77,10 +75,10 @@
 #endif
 #endif
 
 
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
-#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT3 $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT4 NDEBUG $[dlink_all_static] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT3 $[EXTRA_CDEFS]
+#defer CDEFINES_OPT4 NDEBUG $[EXTRA_CDEFS]
 
 
 #defer cdefines $[CDEFINES_OPT$[OPTIMIZE]]
 #defer cdefines $[CDEFINES_OPT$[OPTIMIZE]]
 
 

+ 4 - 6
dtool/pptempl/Global.msvc.pp

@@ -61,12 +61,10 @@
 
 
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 #if $[ne $[LINK_ALL_STATIC],]
 #if $[ne $[LINK_ALL_STATIC],]
-  #define dlink_all_static LINK_ALL_STATIC
   #define build_dlls
   #define build_dlls
   #define build_libs yes
   #define build_libs yes
   #define dlllib lib
   #define dlllib lib
 #else
 #else
-  #define dlink_all_static
   #define build_dlls yes
   #define build_dlls yes
   #define build_libs
   #define build_libs
   #define dlllib dll
   #define dlllib dll
@@ -81,10 +79,10 @@
 #endif
 #endif
 
 
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
-#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT3 $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT4 NDEBUG $[dlink_all_static] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT3 $[EXTRA_CDEFS]
+#defer CDEFINES_OPT4 NDEBUG $[EXTRA_CDEFS]
 
 
 //  Opt1 /GZ disables OPT flags, so make sure its OPT1 only
 //  Opt1 /GZ disables OPT flags, so make sure its OPT1 only
 #defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]
 #defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]

+ 4 - 6
dtool/pptempl/Global.nmake.pp

@@ -61,12 +61,10 @@
 
 
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 // Define LINK_ALL_STATIC to generate static libs instead of DLL's.
 #if $[ne $[LINK_ALL_STATIC],]
 #if $[ne $[LINK_ALL_STATIC],]
-  #define dlink_all_static LINK_ALL_STATIC
   #define build_dlls
   #define build_dlls
   #define build_libs yes
   #define build_libs yes
   #define dlllib lib
   #define dlllib lib
 #else
 #else
-  #define dlink_all_static
   #define build_dlls yes
   #define build_dlls yes
   #define build_libs
   #define build_libs
   #define dlllib dll
   #define dlllib dll
@@ -81,10 +79,10 @@
 #endif
 #endif
 
 
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
 // do NOT try to do #defer #defer CDEFINES_OPT1 $[CDEFINES_OPT1] here!  it wont let Sources.pp define their own CDEFINES_OPT1!  they must use EXTRA_CDEFS!
-#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT3 $[dlink_all_static] $[EXTRA_CDEFS]
-#defer CDEFINES_OPT4 NDEBUG $[dlink_all_static] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT1 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT2 $[if $[NO_DEBUG_CDEF],,_DEBUG] $[EXTRA_CDEFS]
+#defer CDEFINES_OPT3 $[EXTRA_CDEFS]
+#defer CDEFINES_OPT4 NDEBUG $[EXTRA_CDEFS]
 
 
 //  Opt1 /GZ disables OPT flags, so make sure its OPT1 only
 //  Opt1 /GZ disables OPT flags, so make sure its OPT1 only
 #defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]
 #defer CFLAGS_OPT1 $[CDEFINES_OPT1:%=/D%] $[COMMONFLAGS] $[DEBUGFLAGS] $[OPT1FLAGS]

+ 6 - 2
panda/src/express/Sources.pp

@@ -181,8 +181,12 @@
   #define WIN_SYS_LIBS \
   #define WIN_SYS_LIBS \
      advapi32.lib ws2_32.lib $[WIN_SYS_LIBS]
      advapi32.lib ws2_32.lib $[WIN_SYS_LIBS]
 
 
-  // These frameworks are used by dtoolutil; we redefine it here 
-  // so it gets into the panda build system.
+  // These libraries and frameworks are used by dtoolutil; we redefine
+  // them here so they get into the panda build system.
+  #if $[ne $[PLATFORM], FreeBSD]
+    #define UNIX_SYS_LIBS dl
+  #endif
+  #define WIN_SYS_LIBS shell32.lib
   #define OSX_SYS_FRAMEWORKS Foundation $[if $[not $[BUILD_IPHONE_DEVKIT]],AppKit]
   #define OSX_SYS_FRAMEWORKS Foundation $[if $[not $[BUILD_IPHONE_DEVKIT]],AppKit]
 
 
 #end lib_target
 #end lib_target

+ 18 - 0
panda/src/framework/Sources.pp

@@ -8,6 +8,24 @@
     recorder pgui pgraph putil collide chan text \
     recorder pgui pgraph putil collide chan text \
     pnmimage pnmimagetypes event
     pnmimage pnmimagetypes event
 
 
+#if $[LINK_ALL_STATIC]
+  // If we're statically linking, we need to explicitly link with
+  // at least one of the available renderers.
+  #if $[HAVE_GL]
+    #define LOCAL_LIBS pandagl $[LOCAL_LIBS]
+  #elif $[HAVE_DX9]
+    #define LOCAL_LIBS pandadx9 $[LOCAL_LIBS]
+  #elif $[HAVE_DX8]
+    #define LOCAL_LIBS pandadx8 $[LOCAL_LIBS]
+  #elif $[HAVE_TINYDISPLAY]
+    #define LOCAL_LIBS tinydisplay $[LOCAL_LIBS]
+  #endif
+
+  // And we might like to have the egg loader available.
+  #define LOCAL_LIBS pandaegg $[LOCAL_LIBS]
+#endif
+
+
   #define COMBINED_SOURCES $[TARGET]_composite1.cxx
   #define COMBINED_SOURCES $[TARGET]_composite1.cxx
 
 
   #define INCLUDED_SOURCES \
   #define INCLUDED_SOURCES \

+ 27 - 0
panda/src/framework/pandaFramework.cxx

@@ -85,6 +85,33 @@ open_framework(int &argc, char **&argv) {
 
 
   _is_open = true;
   _is_open = true;
 
 
+#ifdef LINK_ALL_STATIC
+  // If we're statically linking, we need to explicitly link with
+  // at least one of the available renderers.
+  #ifdef HAVE_GL
+  extern EXPCL_PANDAGL void init_libpandagl();
+  init_libpandagl();
+  #elif HAVE_DX9
+  extern EXPCL_PANDADX9 void init_libpandadx9();
+  init_libpandadx9();
+  #elif HAVE_DX8
+  extern EXPCL_PANDADX8 void init_libpandadx8();
+  init_libpandadx8();
+  #elif HAVE_TINYDISPLAY
+  extern EXPCL_TINYDISPLAY void init_libtinydisplay();
+  init_libtinydisplay();
+  #endif
+
+  // Get the available image types too.
+  extern EXPCL_PANDA_PNMIMAGETYPES void init_libpnmimagetypes();
+  init_libpnmimagetypes();
+
+  // We also want the egg loader.
+  extern EXPCL_PANDAEGG void init_libpandaegg();
+  init_libpandaegg();
+
+#endif
+
   reset_frame_rate();
   reset_frame_rate();
 
 
   {
   {

+ 0 - 10
panda/src/testbed/Sources.pp

@@ -9,16 +9,6 @@
     mathutil putil express dgraph device tform \
     mathutil putil express dgraph device tform \
     linmath pstatclient panda
     linmath pstatclient panda
 
 
-#if $[LINK_ALL_STATIC]
-  // If we're statically linking, we need to explicitly link with
-  // at least one graphics renderer.
-  #define LOCAL_LIBS pandagl $[LOCAL_LIBS]
-
-  // And we might like to have the egg loader available.
-  #define LOCAL_LIBS pandaegg $[LOCAL_LIBS]
-#endif
-
-
 #begin bin_target
 #begin bin_target
   #define TARGET pview
   #define TARGET pview