Changeset 21733 for branches/gcc-kmk/src


Ignore:
Timestamp:
Oct 24, 2011, 7:58:02 PM (14 years ago)
Author:
dmik
Message:

Create lnitdll.lib to hold common DLL init/term code.

This simplifies creating init/term functions for individual DLLs
a lot and keeps common parts in a single place instead of duplicating
them a zillion times.

Location:
branches/gcc-kmk/src
Files:
4 added
2 edited

Legend:

Unmodified
Added
Removed
  • branches/gcc-kmk/src/Makefile.kmk

    r21697 r21733  
    99# Include sub-makefiles.
    1010#
     11include $(PATH_SUB_CURRENT)/initdll/Makefile.kmk
    1112include $(PATH_SUB_CURRENT)/guidlib/Makefile.kmk
    1213include $(PATH_SUB_CURRENT)/kernel32/Makefile.kmk
  • branches/gcc-kmk/src/custombuild/initterm.cpp

    r21727 r21733  
    77 *
    88 * Project Odin Software License can be found in LICENSE.TXT
    9  *
    109 */
    1110
    12 /*-------------------------------------------------------------*/
    13 /* INITERM.C -- Source for a custom dynamic link library       */
    14 /*              initialization and termination (_DLL_InitTerm) */
    15 /*              function.                                      */
    16 /*                                                             */
    17 /* When called to perform initialization, this sample function */
    18 /* gets storage for an array of integers, and initializes its  */
    19 /* elements with random integers.  At termination time, it     */
    20 /* frees the array.  Substitute your own special processing.   */
    21 /*-------------------------------------------------------------*/
    22 
    23 
    24 /* Include files */
     11//
     12// @todo Custom Build is broken ATM:
     13//
     14// 1. inittermXXX()/cleanupXXX() are now DLL_InitXXX/DLL_TermXXX
     15//    (see the respective initterm.cpp files for more info).
     16// 2. There is no inittermXXX.cpp files any longer (all initialization functions
     17//    are in XXX/initterm.cpp) so a define (e.g. CUSTOMBUILD) is necessary to
     18//    disable compilation multiple versions of DLL_Init()/DLL_Term().
     19// N. ...
     20//
     21
    2522#define  INCL_DOSMODULEMGR
    2623#define  INCL_DOSMISC
     
    5350extern "C" {
    5451
     52ULONG APIENTRY inittermKernel32(ULONG hModule);
     53void  APIENTRY cleanupKernel32(ULONG hModule);
     54
     55ULONG APIENTRY inittermUser32(ULONG hModule, ULONG ulFlag);
     56void  APIENTRY cleanupUser32(ULONG ulReason);
     57ULONG APIENTRY inittermOdinCtrl(ULONG hModule, ULONG ulFlag);
     58
     59ULONG APIENTRY inittermWinmm(ULONG hModule, ULONG ulFlag);
     60ULONG APIENTRY inittermShell32(ULONG hModule, ULONG ulFlag);
     61ULONG APIENTRY inittermOle32(ULONG hModule, ULONG ulFlag);
     62ULONG APIENTRY inittermComdlg32(ULONG hModule, ULONG ulFlag);
     63ULONG APIENTRY inittermComctl32(ULONG hModule, ULONG ulFlag);
     64ULONG APIENTRY inittermGdi32(ULONG hModule, ULONG ulFlag);
     65ULONG APIENTRY inittermNTDLL(ULONG hModule, ULONG ulFlag);
     66ULONG APIENTRY inittermWsock32(ULONG hModule, ULONG ulFlag);
     67ULONG APIENTRY inittermWininet(ULONG hModule, ULONG ulFlag);
     68ULONG APIENTRY inittermRpcrt4(ULONG hModule, ULONG ulFlag);
     69ULONG APIENTRY inittermAvifil32(ULONG hModule, ULONG ulFlag);
     70ULONG APIENTRY inittermQuartz(ULONG hModule, ULONG ulFlag);
     71ULONG APIENTRY inittermRiched32(ULONG hModule, ULONG ulFlag);
     72ULONG APIENTRY inittermWnaspi32(ULONG hModule, ULONG ulFlag);
     73ULONG APIENTRY inittermUxTheme(ULONG hModule, ULONG ulFlag);
     74ULONG APIENTRY inittermDInput(ULONG hModule, ULONG ulFlag);
     75ULONG APIENTRY inittermDSound(ULONG hModule, ULONG ulFlag);
     76ULONG APIENTRY inittermWinSpool(ULONG hModule, ULONG ulFlag);
     77ULONG APIENTRY inittermDDraw(ULONG hModule, ULONG ulFlag);
     78ULONG APIENTRY inittermNTDLL(ULONG hModule, ULONG ulFlag);
     79ULONG APIENTRY inittermMSVCRT(ULONG hModule, ULONG ulFlag);
     80ULONG APIENTRY inittermImm32(ULONG hModule, ULONG ulFlag);
     81ULONG APIENTRY inittermCrypt32(ULONG hModule, ULONG ulFlag);
     82ULONG APIENTRY inittermOleacc(ULONG hModule, ULONG ulFlag);
     83ULONG APIENTRY inittermmscms(ULONG hModule, ULONG ulFlag);
     84ULONG APIENTRY inittermRsaenh(ULONG hModule, ULONG ulFlag);
     85ULONG APIENTRY inittermSecur32(ULONG hModule, ULONG ulFlag);
     86
    5587/*-------------------------------------------------------------------*/
    5688/* A clean up routine registered with DosExitList must be used if    */
     
    140172         SetCustomBuildName("KERNEL32.DLL", ORDINALBASE_KERNEL32);
    141173         rc = inittermKernel32(hModule, ulFlag);
    142          if(rc == 0) 
     174         if(rc == 0)
    143175             return 0UL;
    144176
    145177         SetCustomBuildName("USER32.DLL", ORDINALBASE_USER32);
    146178         rc = inittermUser32(hModule, ulFlag);
    147          if(rc == 0) 
     179         if(rc == 0)
    148180                return 0UL;
    149181
     
    156188            return 0UL;
    157189
    158          SetCustomBuildName("VERSION.DLL", 0);       
     190         SetCustomBuildName("VERSION.DLL", 0);
    159191         if(RegisterLxDll(hModule, NULL, (PVOID)NULL) == 0)
    160192            return 0UL;
     
    162194         SetCustomBuildName("WSOCK32.DLL", ORDINALBASE_WSOCK32);
    163195         rc = inittermWsock32(hModule, ulFlag);
    164          if(rc == 0) 
     196         if(rc == 0)
    165197                return 0UL;
    166198
    167199         SetCustomBuildName("WINMM.DLL", 0);
    168200         rc = inittermWinmm(hModule, ulFlag);
    169          if(rc == 0) 
     201         if(rc == 0)
    170202                return 0UL;
    171203
    172204         SetCustomBuildName("RPCRT4.DLL", 0);
    173205         rc = inittermRpcrt4(hModule, ulFlag);
    174          if(rc == 0) 
     206         if(rc == 0)
    175207                return 0UL;
    176208
    177209         SetCustomBuildName("OLE32.DLL", ORDINALBASE_OLE32);
    178210         rc = inittermOle32(hModule, ulFlag);
    179          if(rc == 0) 
     211         if(rc == 0)
    180212                return 0UL;
    181213
    182214         SetCustomBuildName("COMCTL32.DLL", ORDINALBASE_COMCTL32);
    183215         rc = inittermComctl32(hModule, ulFlag);
    184          if(rc == 0) 
     216         if(rc == 0)
    185217                return 0UL;
    186218
     
    191223         SetCustomBuildName("SHELL32.DLL", ORDINALBASE_SHELL32);
    192224         rc = inittermShell32(hModule, ulFlag);
    193          if(rc == 0) 
     225         if(rc == 0)
    194226                return 0UL;
    195227
    196228         SetCustomBuildName("COMDLG32.DLL", 0);
    197229         rc = inittermComdlg32(hModule, ulFlag);
    198          if(rc == 0) 
     230         if(rc == 0)
    199231                return 0UL;
    200232
    201233         SetCustomBuildName("RICHED32.DLL", 0);
    202234         rc = inittermRiched32(hModule, ulFlag);
    203          if(rc == 0) 
    204                 return 0UL;
    205          
     235         if(rc == 0)
     236                return 0UL;
     237
    206238         SetCustomBuildName(NULL, 0);
    207239         break;
     
    246278ULONG APIENTRY O32__DLL_InitTerm(ULONG handle, ULONG flag);
    247279//******************************************************************************
    248 ULONG APIENTRY InitializeKernel32()
     280BOOL APIENTRY InitializeKernel32()
    249281{
    250282    HMODULE hModule;
    251283
    252284    DosQueryModuleHandleStrict("WGSS50", &hModule);
    253     return O32__DLL_InitTerm(hModule, 0);
     285    return O32__DLL_InitTerm(hModule, 0) != 0;
    254286}
    255287//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.