build msvcrt and crtdll from same source via lib\crt

fix problem with scanf/printf reading/printing doubles

svn path=/trunk/; revision=13341
This commit is contained in:
Gunnar Dalsnes 2005-01-27 21:17:28 +00:00
parent b9d18ec3d7
commit 5379bfaa41
3 changed files with 357 additions and 511 deletions

View file

@ -35,16 +35,16 @@
; __builtin_new
; __builtin_delete
; _set_new_handler__FPFUi_i
;
; I commented out these, cause i dont get why they were added. -Gunnar
;
LIBRARY CRTDLL.DLL
EXPORTS
__builtin_new
__builtin_delete
??2@YAPAXI@Z=malloc
??3@YAXPAX@Z=free
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z=_set_new_handler__FPFUi_i
_set_new_handler__FPFUi_i
;__builtin_new
;__builtin_delete
??2@YAPAXI@Z=MSVCRT_operator_new
??3@YAXPAX@Z=MSVCRT_operator_delete
?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z=MSVCRT__set_new_handler
;_set_new_handler__FPFUi_i
_CIacos
_CIasin
_CIatan
@ -61,31 +61,31 @@ _CIsinh
_CIsqrt
_CItan
_CItanh
_HUGE_dll
_HUGE_dll=_HUGE DATA
_XcptFilter
__GetMainArgs
__argc_dll
__argv_dll
__argc_dll=__argc DATA
__argv_dll=__argv DATA
__dllonexit
__doserrno
__fpecode
__isascii
__iscsym=NTDLL.__iscsym
__iscsymf=NTDLL.__iscsymf
__mb_cur_max_dll
__mb_cur_max_dll=__mb_cur_max DATA
__pxcptinfoptrs
__threadhandle
__threadid
__toascii=NTDLL.__toascii
_abnormal_termination
_access
_acmdln_dll
_aexit_rtn_dll
_acmdln_dll=_acmdln DATA
_aexit_rtn_dll=_aexit_rtn DATA
_amsg_exit
_assert
_basemajor_dll
_baseminor_dll
_baseversion_dll
_basemajor_dll=CRTDLL__basemajor_dll DATA
_baseminor_dll=CRTDLL__baseminor_dll DATA
_baseversion_dll=CRTDLL__baseversion_dll DATA
_beep
_beginthread
_c_exit
@ -100,23 +100,23 @@ _chsize
_clearfp
_close
_commit
_commode_dll
_commode_dll=_commode DATA
_control87
_controlfp
_copysign
_cprintf
_cpumode_dll
_cpumode_dll=_cpumode DATA ;fixme: wine has CRTDLL__cpumode_dll
_cputs
_creat
_cscanf
_ctype
_ctype DATA
_cwait
_daylight_dll
_daylight_dll=_daylight DATA
_dup
_dup2
_ecvt
_endthread
_environ_dll
_environ_dll=_environ DATA
_eof
_errno
_except_handler2
@ -136,23 +136,23 @@ _fdopen
_fgetchar
_fgetwchar
_filbuf
_fileinfo_dll
;_fileinfo_dll=_fileinfo DATA
_filelength
_fileno
_fileno DATA
_findclose
_findfirst
_findnext
_finite
_flsbuf
_flushall
_fmode_dll
_fmode_dll=__fmode DATA
_fpclass
_fpieee_flt
_fpreset
_fputchar
_fputwchar
_fsopen
_fstat
_fstat=CRTDLL__fstat
_ftime
_ftol=NTDLL._ftol
_fullpath
@ -177,7 +177,7 @@ _heapset
_heapwalk
_hypot
_initterm
_iob
_iob DATA
_isatty
_isctype
_ismbbalnum
@ -236,7 +236,7 @@ _mbctokata
_mbctolower
_mbctombb
_mbctoupper
_mbctype
_mbctype DATA
_mbsbtype
_mbscat
_mbschr
@ -282,21 +282,21 @@ _nextafter
_onexit
_open
_open_osfhandle
_osmajor_dll
_osminor_dll
_osmode_dll
_osver_dll
_osversion_dll
_osmajor_dll=CRTDLL__osmajor_dll DATA
_osminor_dll=CRTDLL__osminor_dll DATA
_osmode_dll=CRTDLL__osmode_dll DATA
_osver_dll=_osver DATA
_osversion_dll=CRTDLL__osversion_dll DATA
_pclose
_pctype_dll
_pgmptr_dll
_pctype_dll=_pctype DATA
_pgmptr_dll=_pgmptr DATA
_pipe
_popen
_purecall
_putch
_putenv
_putw
_pwctype_dll
_pwctype_dll=_pwctype DATA
_read
_rmdir
_rmtmp
@ -321,7 +321,7 @@ _spawnve
_spawnvp
_spawnvpe
_splitpath
_stat
_stat=CRTDLL__stat
_statusfp
_strcmpi=NTDLL._strcmpi
_strdate
@ -343,14 +343,14 @@ _strspnp
_strtime
_strupr=NTDLL._strupr
_swab
_sys_errlist
_sys_nerr_dll
_sys_errlist DATA
_sys_nerr_dll=_sys_nerr DATA
_tell
_tempnam
_timezone_dll
_timezone_dll=_timezone
_tolower=NTDLL._tolower
_toupper=NTDLL._toupper
_tzname
_tzname DATA
_tzset
_ultoa=NTDLL._ultoa
_ultow=NTDLL._ultow
@ -370,9 +370,9 @@ _wcsnset
_wcsrev
_wcsset
_wcsupr
_winmajor_dll
_winminor_dll
_winver_dll
_winmajor_dll=_winmajor DATA
_winminor_dll=_winminor DATA
_winver_dll=_winver DATA
_write
_wtoi=NTDLL._wtoi
_wtol=NTDLL._wtol

View file

@ -0,0 +1,296 @@
/* $Id: dllmain.c 12852 2005-01-06 13:58:04Z mf $
*
* dllmain.c
*
* ReactOS MSVCRT.DLL Compatibility Library
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warrenties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Revision: 1.24 $
* $Author: mf $
* $Date: 2005-01-06 14:58:04 +0100 (Thu, 06 Jan 2005) $
*
*/
#include "precomp.h"
#include <msvcrt/internal/tls.h>
#include <msvcrt/stdlib.h>
#include <msvcrt/wine/msvcrt.h>
#include <sys/stat.h>
#define NDEBUG
#include <msvcrt/msvcrtdbg.h>
/* EXTERNAL PROTOTYPES ********************************************************/
//void __fileno_init(void);
extern BOOL __fileno_init(void);
extern int BlockEnvToEnvironA(void);
extern int BlockEnvToEnvironW(void);
extern void FreeEnvironment(char **environment);
extern unsigned int _osver;
extern unsigned int _winminor;
extern unsigned int _winmajor;
extern unsigned int _winver;
unsigned int CRTDLL__basemajor_dll;
unsigned int CRTDLL__baseminor_dll;
unsigned int CRTDLL__baseversion_dll;
unsigned int CRTDLL__cpumode_dll;
unsigned int CRTDLL__osmajor_dll;
unsigned int CRTDLL__osminor_dll;
unsigned int CRTDLL__osmode_dll;
unsigned int CRTDLL__osversion_dll;
extern char* _acmdln; /* pointer to ascii command line */
extern wchar_t* _wcmdln; /* pointer to wide character command line */
#undef _environ
extern char** _environ; /* pointer to environment block */
extern char** __initenv; /* pointer to initial environment block */
extern wchar_t** _wenviron; /* pointer to environment block */
extern wchar_t** __winitenv; /* pointer to initial environment block */
/* dev_t is a short in crtdll but an unsigned int in msvcrt */
typedef short crtdll_dev_t;
struct crtdll_stat
{
crtdll_dev_t st_dev;
_ino_t st_ino;
unsigned short st_mode;
short st_nlink;
short st_uid;
short st_gid;
crtdll_dev_t st_rdev;
_off_t st_size;
time_t st_atime;
time_t st_mtime;
time_t st_ctime;
};
/* convert struct _stat from crtdll format to msvcrt format */
static void convert_struct_stat( struct crtdll_stat *dst, const struct _stat *src )
{
dst->st_dev = src->st_dev;
dst->st_ino = src->st_ino;
dst->st_mode = src->st_mode;
dst->st_nlink = src->st_nlink;
dst->st_uid = src->st_uid;
dst->st_gid = src->st_gid;
dst->st_rdev = src->st_rdev;
dst->st_size = src->st_size;
dst->st_atime = src->st_atime;
dst->st_mtime = src->st_mtime;
dst->st_ctime = src->st_ctime;
}
/* from msvcrt */
extern void __getmainargs( int *argc, char ***argv, char ***envp,
int expand_wildcards, int *new_mode );
/* LIBRARY GLOBAL VARIABLES ***************************************************/
HANDLE hHeap = NULL; /* handle for heap */
/* LIBRARY ENTRY POINT ********************************************************/
BOOL
STDCALL
DllMain(PVOID hinstDll, ULONG dwReason, PVOID reserved)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH://1
/* initialize version info */
DPRINT("Attach %d\n", nAttachCount);
_osver = GetVersion();
CRTDLL__basemajor_dll = (_osver >> 24) & 0xFF;
CRTDLL__baseminor_dll = (_osver >> 16) & 0xFF;
CRTDLL__baseversion_dll = (_osver >> 16);
CRTDLL__cpumode_dll = 1; /* FIXME */
CRTDLL__osmajor_dll = (_osver >>8) & 0xFF;
CRTDLL__osminor_dll = (_osver & 0xFF);
CRTDLL__osmode_dll = 1; /* FIXME */
CRTDLL__osversion_dll = (_osver & 0xFFFF);
_winmajor = (_osver >> 8) & 0xFF;
_winminor = _osver & 0xFF;
_winver = (_winmajor << 8) + _winminor;
_osver = (_osver >> 16) & 0xFFFF;
hHeap = HeapCreate(0, 100000, 0);
if (hHeap == NULL)
return FALSE;
if (!__fileno_init())
return FALSE;
/* create tls stuff */
if (!CreateThreadData())
return FALSE;
if (BlockEnvToEnvironA() < 0)
return FALSE;
if (BlockEnvToEnvironW() < 0)
{
FreeEnvironment((char**)_wenviron);
return FALSE;
}
_acmdln = _strdup(GetCommandLineA());
_wcmdln = _wcsdup(GetCommandLineW());
/* FIXME: more initializations... */
/* FIXME: Initialization of the WINE code */
msvcrt_init_mt_locks();
DPRINT("Attach done\n");
break;
case DLL_THREAD_ATTACH://2
break;
case DLL_THREAD_DETACH://4
FreeThreadData(NULL);
break;
case DLL_PROCESS_DETACH://0
DPRINT("Detach %d\n", nAttachCount);
/* FIXME: more cleanup... */
_fcloseall();
/* destroy tls stuff */
DestroyThreadData();
if (__winitenv && __winitenv != _wenviron)
FreeEnvironment((char**)__winitenv);
if (_wenviron)
FreeEnvironment((char**)_wenviron);
if (__initenv && __initenv != _environ)
FreeEnvironment(__initenv);
if (_environ)
FreeEnvironment(_environ);
/* destroy heap */
HeapDestroy(hHeap);
DPRINT("Detach done\n");
break;
}
return TRUE;
}
/*********************************************************************
* __GetMainArgs (CRTDLL.@)
*/
void __GetMainArgs( int *argc, char ***argv, char ***envp, int expand_wildcards )
{
int new_mode = 0;
__getmainargs( argc, argv, envp, expand_wildcards, &new_mode );
}
/*********************************************************************
* _fstat (CRTDLL.@)
*/
int CRTDLL__fstat(int fd, struct crtdll_stat* buf)
{
extern int _fstat(int,struct _stat*);
struct _stat st;
int ret;
if (!(ret = _fstat( fd, &st ))) convert_struct_stat( buf, &st );
return ret;
}
/*********************************************************************
* _stat (CRTDLL.@)
*/
int CRTDLL__stat(const char* path, struct crtdll_stat * buf)
{
extern int _stat(const char*,struct _stat*);
struct _stat st;
int ret;
if (!(ret = _stat( path, &st ))) convert_struct_stat( buf, &st );
return ret;
}
/*********************************************************************
* _strdec (CRTDLL.@)
*/
char *_strdec(const char *str1, const char *str2)
{
return (char *)(str2 - 1);
}
/*********************************************************************
* _strinc (CRTDLL.@)
*/
char *_strinc(const char *str)
{
return (char *)(str + 1);
}
/*********************************************************************
* _strncnt (CRTDLL.@)
*/
size_t _strncnt(const char *str, size_t maxlen)
{
size_t len = strlen(str);
return (len > maxlen) ? maxlen : len;
}
/*********************************************************************
* _strnextc (CRTDLL.@)
*/
unsigned int _strnextc(const char *str)
{
return (unsigned int)str[0];
}
/*********************************************************************
* _strninc (CRTDLL.@)
*/
char *_strninc(const char *str, size_t len)
{
return (char *)(str + len);
}
/*********************************************************************
* _strspnp (CRTDLL.@)
*/
char *_strspnp( const char *str1, const char *str2)
{
str1 += strspn( str1, str2 );
return *str1 ? (char*)str1 : NULL;
}
/* EOF */

View file

@ -2,7 +2,7 @@
PATH_TO_TOP = ../..
PATH_TO_MSVCRT = ../msvcrt
TARGET_DEFONLY = yes
TARGET_TYPE = dynlink
@ -15,489 +15,39 @@ TARGET_BASE = $(TARGET_BASE_LIB_CRTDLL)
# don't remove @nn from exported symbols - needed so dlltool doesn't mess up mangled c++ exports
RM_AT_FROM_SYMBOLS = no
TARGET_LFLAGS = -nostartfiles -nostdlib
TARGET_LFLAGS = -nostartfiles -nostdlib --enable-stdcall-fixup
TARGET_CFLAGS = -D_MSVCRT_LIB_ -Werror -Wall
# require os code to explicitly request A/W version of structs/functions
TARGET_CFLAGS += -D_DISABLE_TIDENTS
TARGET_SDKLIBS = string.a kernel32.a ntdll.a
TARGET_SDKLIBS = crt.a string.a kernel32.a ntdll.a wine.a
TARGET_GCCLIBS = gcc
TARGET_CFLAGS = -D__USE_W32API -Wall -Werror
# require os code to explicitly request A/W version of structs/functions
TARGET_CFLAGS += \
-D_DISABLE_TIDENTS \
-D__USE_W32API \
-D__REACTOS__ \
-D_WIN32_IE=0x600 \
-D_WIN32_WINNT=0x501 \
-DUSE_MSVCRT_PREFIX \
-D_MT
TARGET_OBJECTS = $(TARGET_NAME).o
TARGET_CLEAN = \
conio/*.o \
ctype/*.o \
direct/*.o \
dirent/*.o \
except/*.o \
float/*.o \
io/*.o \
libc/*.o \
malloc/*.o \
math/*.o \
mbstring/*.o \
misc/*.o \
process/*.o \
quad/*.o \
search/*.o \
setjmp/*.o \
signal/*.o \
stdio/*.o \
stdlib/*.o \
string/*.o \
sys_stat/*.o \
tchar/*.o \
time/*.o \
wchar/*.o
TARGET_CLEAN = dllmain.o
include $(PATH_TO_TOP)/rules.mak
include $(TOOLS_PATH)/helper.mk
CONIO_OBJECTS = \
$(PATH_TO_MSVCRT)/conio/cgets.o \
$(PATH_TO_MSVCRT)/conio/cprintf.o \
$(PATH_TO_MSVCRT)/conio/cputs.o \
$(PATH_TO_MSVCRT)/conio/cscanf.o \
$(PATH_TO_MSVCRT)/conio/getch.o \
$(PATH_TO_MSVCRT)/conio/getche.o \
$(PATH_TO_MSVCRT)/conio/kbhit.o \
$(PATH_TO_MSVCRT)/conio/putch.o \
$(PATH_TO_MSVCRT)/conio/ungetch.o
CTYPE_OBJECTS = \
$(PATH_TO_MSVCRT)/ctype/ctype.o \
$(PATH_TO_MSVCRT)/ctype/isalnum.o \
$(PATH_TO_MSVCRT)/ctype/isascii.o \
$(PATH_TO_MSVCRT)/ctype/iscntrl.o \
ctype/isctype.o \
$(PATH_TO_MSVCRT)/ctype/isgraph.o \
$(PATH_TO_MSVCRT)/ctype/isprint.o \
$(PATH_TO_MSVCRT)/ctype/ispunct.o \
$(PATH_TO_MSVCRT)/ctype/isupper.o
# REMOVED CTYPE ENTRIES:
# $(PATH_TO_MSVCRT)/ctype/isalpha.o \
# $(PATH_TO_MSVCRT)/ctype/iscsym.o \
# $(PATH_TO_MSVCRT)/ctype/isdigit.o \
# $(PATH_TO_MSVCRT)/ctype/islower.o \
# $(PATH_TO_MSVCRT)/ctype/isspace.o \
# $(PATH_TO_MSVCRT)/ctype/isxdigit.o \
# $(PATH_TO_MSVCRT)/ctype/toascii.o \
# $(PATH_TO_MSVCRT)/ctype/tolower.o \
# $(PATH_TO_MSVCRT)/ctype/toupper.o \
DIRECT_OBJECTS = \
$(PATH_TO_MSVCRT)/direct/chdir.o \
$(PATH_TO_MSVCRT)/direct/chdrive.o \
$(PATH_TO_MSVCRT)/direct/getcwd.o \
$(PATH_TO_MSVCRT)/direct/getdcwd.o \
$(PATH_TO_MSVCRT)/direct/getdfree.o \
$(PATH_TO_MSVCRT)/direct/getdrive.o \
$(PATH_TO_MSVCRT)/direct/mkdir.o \
$(PATH_TO_MSVCRT)/direct/rmdir.o
EXCEPT_OBJECTS = \
except/abnorter.o \
except/exhand2.o \
except/matherr.o \
except/unwind.o
FLOAT_OBJECTS = \
$(PATH_TO_MSVCRT)/float/chgsign.o \
$(PATH_TO_MSVCRT)/float/clearfp.o \
$(PATH_TO_MSVCRT)/float/cntrlfp.o \
$(PATH_TO_MSVCRT)/float/copysign.o \
$(PATH_TO_MSVCRT)/float/fpclass.o \
$(PATH_TO_MSVCRT)/float/fpreset.o \
$(PATH_TO_MSVCRT)/float/isnan.o \
$(PATH_TO_MSVCRT)/float/logb.o \
$(PATH_TO_MSVCRT)/float/nafter.o \
$(PATH_TO_MSVCRT)/float/scalb.o \
$(PATH_TO_MSVCRT)/float/statfp.o
IO_OBJECTS = \
$(PATH_TO_MSVCRT)/io/access.o \
$(PATH_TO_MSVCRT)/io/chmod.o \
$(PATH_TO_MSVCRT)/io/chsize.o \
$(PATH_TO_MSVCRT)/io/close.o \
$(PATH_TO_MSVCRT)/io/commit.o \
io/create.o \
io/dup.o \
$(PATH_TO_MSVCRT)/io/dup2.o \
io/eof.o \
$(PATH_TO_MSVCRT)/io/filelen.o \
io/find.o \
io/fmode.o \
$(PATH_TO_MSVCRT)/io/isatty.o \
$(PATH_TO_MSVCRT)/io/locking.o \
io/lseek.o \
$(PATH_TO_MSVCRT)/io/mktemp.o \
io/open.o \
io/pipe.o \
io/read.o \
$(PATH_TO_MSVCRT)/io/setmode.o \
$(PATH_TO_MSVCRT)/io/sopen.o \
$(PATH_TO_MSVCRT)/io/tell.o \
$(PATH_TO_MSVCRT)/io/umask.o \
io/unlink.o \
$(PATH_TO_MSVCRT)/io/utime.o \
io/write.o
LOCALE_OBJECTS = \
$(PATH_TO_MSVCRT)/locale/locale.o
MATH_OBJECTS = \
$(PATH_TO_MSVCRT)/math/acos.o \
math/acosh.o \
$(PATH_TO_MSVCRT)/math/asin.o \
math/asinh.o \
$(PATH_TO_MSVCRT)/math/atan.o \
$(PATH_TO_MSVCRT)/math/atan2.o\
math/atanh.o \
$(PATH_TO_MSVCRT)/math/cabs.o \
math/ceil.o \
$(PATH_TO_MSVCRT)/math/cos.o \
$(PATH_TO_MSVCRT)/math/cosh.o \
$(PATH_TO_MSVCRT)/math/exp.o \
$(PATH_TO_MSVCRT)/math/fabs.o\
math/floor.o \
$(PATH_TO_MSVCRT)/math/fmod.o \
$(PATH_TO_MSVCRT)/math/frexp.o \
math/huge_val.o \
$(PATH_TO_MSVCRT)/math/hypot.o \
$(PATH_TO_MSVCRT)/math/j0_y0.o \
$(PATH_TO_MSVCRT)/math/j1_y1.o \
$(PATH_TO_MSVCRT)/math/jn_yn.o \
$(PATH_TO_MSVCRT)/math/ldexp.o \
$(PATH_TO_MSVCRT)/math/log.o \
$(PATH_TO_MSVCRT)/math/log10.o \
$(PATH_TO_MSVCRT)/math/modf.o \
$(PATH_TO_MSVCRT)/math/pow.o \
$(PATH_TO_MSVCRT)/math/sin.o \
$(PATH_TO_MSVCRT)/math/sinh.o \
$(PATH_TO_MSVCRT)/math/sqrt.o \
$(PATH_TO_MSVCRT)/math/stubs.o \
$(PATH_TO_MSVCRT)/math/tan.o \
$(PATH_TO_MSVCRT)/math/tanh.o
MALLOC_OBJECTS = \
malloc/expand.o \
malloc/heap.o
MBSTRING_OBJECTS = \
$(PATH_TO_MSVCRT)/mbstring/hanzen.o \
$(PATH_TO_MSVCRT)/mbstring/ischira.o \
$(PATH_TO_MSVCRT)/mbstring/iskana.o \
$(PATH_TO_MSVCRT)/mbstring/iskpun.o \
$(PATH_TO_MSVCRT)/mbstring/islead.o \
$(PATH_TO_MSVCRT)/mbstring/islwr.o \
$(PATH_TO_MSVCRT)/mbstring/iskmoji.o \
$(PATH_TO_MSVCRT)/mbstring/ismbal.o \
$(PATH_TO_MSVCRT)/mbstring/ismbaln.o \
$(PATH_TO_MSVCRT)/mbstring/ismbc.o \
$(PATH_TO_MSVCRT)/mbstring/ismbgra.o \
$(PATH_TO_MSVCRT)/mbstring/ismbkaln.o \
$(PATH_TO_MSVCRT)/mbstring/ismblead.o \
$(PATH_TO_MSVCRT)/mbstring/ismbpri.o \
$(PATH_TO_MSVCRT)/mbstring/ismbpun.o \
$(PATH_TO_MSVCRT)/mbstring/ismbtrl.o \
$(PATH_TO_MSVCRT)/mbstring/isuppr.o \
$(PATH_TO_MSVCRT)/mbstring/jistojms.o \
$(PATH_TO_MSVCRT)/mbstring/jmstojis.o \
$(PATH_TO_MSVCRT)/mbstring/mbbtype.o \
$(PATH_TO_MSVCRT)/mbstring/mbccpy.o \
$(PATH_TO_MSVCRT)/mbstring/mbclen.o \
$(PATH_TO_MSVCRT)/mbstring/mbscat.o \
$(PATH_TO_MSVCRT)/mbstring/mbschr.o \
$(PATH_TO_MSVCRT)/mbstring/mbscmp.o \
$(PATH_TO_MSVCRT)/mbstring/mbscoll.o \
$(PATH_TO_MSVCRT)/mbstring/mbscpy.o \
$(PATH_TO_MSVCRT)/mbstring/mbscspn.o \
$(PATH_TO_MSVCRT)/mbstring/mbsdec.o \
$(PATH_TO_MSVCRT)/mbstring/mbsdup.o \
$(PATH_TO_MSVCRT)/mbstring/mbsicmp.o \
$(PATH_TO_MSVCRT)/mbstring/mbsicoll.o \
$(PATH_TO_MSVCRT)/mbstring/mbsinc.o \
$(PATH_TO_MSVCRT)/mbstring/mbslen.o \
$(PATH_TO_MSVCRT)/mbstring/mbslwr.o \
$(PATH_TO_MSVCRT)/mbstring/mbsncat.o \
$(PATH_TO_MSVCRT)/mbstring/mbsnccnt.o \
$(PATH_TO_MSVCRT)/mbstring/mbsncmp.o \
$(PATH_TO_MSVCRT)/mbstring/mbsncoll.o \
$(PATH_TO_MSVCRT)/mbstring/mbsncpy.o \
$(PATH_TO_MSVCRT)/mbstring/mbsnextc.o \
$(PATH_TO_MSVCRT)/mbstring/mbsnicmp.o \
$(PATH_TO_MSVCRT)/mbstring/mbsnicoll.o \
$(PATH_TO_MSVCRT)/mbstring/mbsninc.o \
$(PATH_TO_MSVCRT)/mbstring/mbsnset.o \
$(PATH_TO_MSVCRT)/mbstring/mbspbrk.o \
$(PATH_TO_MSVCRT)/mbstring/mbsrchr.o \
$(PATH_TO_MSVCRT)/mbstring/mbsrev.o \
$(PATH_TO_MSVCRT)/mbstring/mbsset.o \
$(PATH_TO_MSVCRT)/mbstring/mbsspn.o \
$(PATH_TO_MSVCRT)/mbstring/mbsspnp.o \
$(PATH_TO_MSVCRT)/mbstring/mbsstr.o \
$(PATH_TO_MSVCRT)/mbstring/mbstok.o \
$(PATH_TO_MSVCRT)/mbstring/mbstrlen.o \
$(PATH_TO_MSVCRT)/mbstring/mbsupr.o
MISC_OBJECTS = \
misc/amsg.o \
$(PATH_TO_MSVCRT)/misc/assert.o \
misc/debug.o \
misc/dllmain.o \
misc/GetArgs.o \
$(PATH_TO_MSVCRT)/misc/initterm.o \
misc/purecall.o \
misc/setnew.o
PROCESS_OBJECTS = \
process/_cwait.o \
process/_system.o\
$(PATH_TO_MSVCRT)/process/dll.o \
process/spawnl.o \
process/spawnlp.o \
process/spawnlpe.o \
process/spawnvp.o \
process/spawnv.o \
process/spawnve.o \
process/spawnle.o \
process/execl.o \
process/execlp.o \
process/execlpe.o \
process/execvpe.o \
process/execvp.o \
process/execv.o \
process/execle.o \
process/execve.o \
$(PATH_TO_MSVCRT)/process/procid.o \
process/thread.o \
$(PATH_TO_MSVCRT)/process/threadid.o
QUAD_OBJECTS = \
quad/qdivrem.o \
quad/divdi3.o \
quad/moddi3.o \
quad/udivdi3.o \
quad/umoddi3.o
SEARCH_OBJECTS = \
$(PATH_TO_MSVCRT)/search/lfind.o \
$(PATH_TO_MSVCRT)/search/lsearch.o
SETJMP_OBJECTS = \
$(PATH_TO_MSVCRT)/setjmp/i386/setjmp.o
SIGNAL_OBJECTS = \
signal/xcptfil.o \
signal/xcptinfo.o \
$(PATH_TO_MSVCRT)/signal/signal.o
STDIO_OBJECTS = \
$(PATH_TO_MSVCRT)/stdio/allocfil.o \
stdio/getenv.o \
$(PATH_TO_MSVCRT)/stdio/clearerr.o \
$(PATH_TO_MSVCRT)/stdio/fclose.o \
$(PATH_TO_MSVCRT)/stdio/fdopen.o \
$(PATH_TO_MSVCRT)/stdio/feof.o \
stdio/ferror.o \
stdio/fflush.o \
$(PATH_TO_MSVCRT)/stdio/fgetc.o \
stdio/fgetchar.o \
$(PATH_TO_MSVCRT)/stdio/fgetpos.o \
stdio/fgets.o \
stdio/filbuf.o \
stdio/fileno.o \
$(PATH_TO_MSVCRT)/stdio/flsbuf.o \
stdio/fopen.o \
$(PATH_TO_MSVCRT)/stdio/fprintf.o \
$(PATH_TO_MSVCRT)/stdio/fputc.o \
stdio/fputchar.o\
stdio/fputs.o \
stdio/fread.o \
stdio/freopen.o \
stdio/fscanf.o \
$(PATH_TO_MSVCRT)/stdio/fseek.o \
$(PATH_TO_MSVCRT)/stdio/fsetpos.o \
stdio/frlist.o \
stdio/fsopen.o \
stdio/ftell.o \
$(PATH_TO_MSVCRT)/stdio/fwalk.o \
stdio/fwrite.o \
stdio/getc.o \
stdio/getchar.o \
stdio/gets.o \
$(PATH_TO_MSVCRT)/stdio/getw.o \
stdio/perror.o \
stdio/popen.o \
stdio/printf.o \
stdio/putc.o \
stdio/putchar.o \
stdio/puts.o \
$(PATH_TO_MSVCRT)/stdio/putw.o \
stdio/remove.o \
$(PATH_TO_MSVCRT)/stdio/rename.o \
$(PATH_TO_MSVCRT)/stdio/rewind.o \
$(PATH_TO_MSVCRT)/stdio/rmtmp.o \
$(PATH_TO_MSVCRT)/stdio/scanf.o \
$(PATH_TO_MSVCRT)/stdio/setbuf.o \
stdio/setbuffe.o \
stdio/setlineb.o \
$(PATH_TO_MSVCRT)/stdio/setvbuf.o \
$(PATH_TO_MSVCRT)/stdio/sprintf.o \
$(PATH_TO_MSVCRT)/stdio/sscanf.o \
$(PATH_TO_MSVCRT)/stdio/stdhnd.o \
stdio/stdiohk.o \
$(PATH_TO_MSVCRT)/stdio/tempnam.o \
$(PATH_TO_MSVCRT)/stdio/tmpfile.o \
$(PATH_TO_MSVCRT)/stdio/tmpnam.o \
$(PATH_TO_MSVCRT)/stdio/ungetc.o \
$(PATH_TO_MSVCRT)/stdio/vfprintf.o \
$(PATH_TO_MSVCRT)/stdio/vfscanf.o \
$(PATH_TO_MSVCRT)/stdio/vfwprint.o \
$(PATH_TO_MSVCRT)/stdio/vprintf.o \
$(PATH_TO_MSVCRT)/stdio/vscanf.o \
$(PATH_TO_MSVCRT)/stdio/vsprintf.o \
$(PATH_TO_MSVCRT)/stdio/vsscanf.o
STDLIB_OBJECTS = \
$(PATH_TO_MSVCRT)/stdlib/_exit.o \
$(PATH_TO_MSVCRT)/stdlib/abort.o \
$(PATH_TO_MSVCRT)/stdlib/abs.o \
$(PATH_TO_MSVCRT)/stdlib/atexit.o \
$(PATH_TO_MSVCRT)/stdlib/atof.o \
$(PATH_TO_MSVCRT)/stdlib/atoi.o \
$(PATH_TO_MSVCRT)/stdlib/atol.o \
$(PATH_TO_MSVCRT)/stdlib/bsearch.o \
$(PATH_TO_MSVCRT)/stdlib/div.o \
$(PATH_TO_MSVCRT)/stdlib/ecvt.o \
$(PATH_TO_MSVCRT)/stdlib/ecvtbuf.o \
stdlib/errno.o \
$(PATH_TO_MSVCRT)/stdlib/fcvt.o \
$(PATH_TO_MSVCRT)/stdlib/fcvtbuf.o \
stdlib/fullpath.o \
$(PATH_TO_MSVCRT)/stdlib/gcvt.o \
$(PATH_TO_MSVCRT)/stdlib/itoa.o \
stdlib/itow.o \
$(PATH_TO_MSVCRT)/stdlib/labs.o \
$(PATH_TO_MSVCRT)/stdlib/ldiv.o \
$(PATH_TO_MSVCRT)/stdlib/makepath.o \
stdlib/malloc.o \
stdlib/mbstowcs.o \
$(PATH_TO_MSVCRT)/stdlib/obsol.o \
stdlib/putenv.o \
stdlib/qsort.o \
stdlib/rand.o \
$(PATH_TO_MSVCRT)/stdlib/rot.o \
$(PATH_TO_MSVCRT)/stdlib/senv.o \
$(PATH_TO_MSVCRT)/stdlib/splitp.o \
$(PATH_TO_MSVCRT)/stdlib/strtod.o \
$(PATH_TO_MSVCRT)/stdlib/strtol.o \
$(PATH_TO_MSVCRT)/stdlib/strtoul.o \
$(PATH_TO_MSVCRT)/stdlib/swab.o \
$(PATH_TO_MSVCRT)/stdlib/wcstod.o \
stdlib/wcstomb.o
STRING_OBJECTS = \
string/lasttok.o \
$(PATH_TO_MSVCRT)/string/strcoll.o \
$(PATH_TO_MSVCRT)/string/strdup.o \
string/strerror.o \
$(PATH_TO_MSVCRT)/string/strrev.o \
$(PATH_TO_MSVCRT)/string/strset.o \
$(PATH_TO_MSVCRT)/string/strtok.o \
$(PATH_TO_MSVCRT)/string/strxfrm.o
# string/str_old.o \
# $(PATH_TO_MSVCRT)/string/memicmp.o \
# $(PATH_TO_MSVCRT)/string/stricmp.o \
# $(PATH_TO_MSVCRT)/string/strlwr.o \
# $(PATH_TO_MSVCRT)/string/strnicmp.o \
# $(PATH_TO_MSVCRT)/string/strpbrk.o \
# $(PATH_TO_MSVCRT)/string/strstr.o \
# $(PATH_TO_MSVCRT)/string/strupr.o \
SYS_STAT_OBJECTS = \
sys_stat/fstat.o \
$(PATH_TO_MSVCRT)/sys_stat/futime.o \
sys_stat/ftime.o \
sys_stat/systime.o \
sys_stat/stat.o
TCHAR_OBJECTS = \
tchar/strdec.o \
tchar/strinc.o \
tchar/strninc.o \
tchar/strncnt.o \
tchar/strnextc.o \
tchar/strspnp.o
TIME_OBJECTS = \
$(PATH_TO_MSVCRT)/time/time.o \
$(PATH_TO_MSVCRT)/time/clock.o \
$(PATH_TO_MSVCRT)/time/ctime.o \
$(PATH_TO_MSVCRT)/time/difftime.o \
$(PATH_TO_MSVCRT)/time/strdate.o \
$(PATH_TO_MSVCRT)/time/strftime.o \
$(PATH_TO_MSVCRT)/time/strtime.o \
time/tz_vars.o
WSTRING_OBJECTS = \
wchar/wlasttok.o \
wchar/wcscoll.o \
$(PATH_TO_MSVCRT)/wstring/wcsdup.o \
$(PATH_TO_MSVCRT)/wstring/wcsrev.o \
$(PATH_TO_MSVCRT)/wstring/wcsset.o \
$(PATH_TO_MSVCRT)/wstring/wcstok.o \
$(PATH_TO_MSVCRT)/wstring/wcsxfrm.o
# wchar/wcstod.o \
# wchar/wcstok.o \
# wchar/wcstol.o \
# wchar/wtoi.o \
# $(PATH_TO_MSVCRT)/wstring/wcscspn.o \
# $(PATH_TO_MSVCRT)/wstring/wcsicmp.o \
# $(PATH_TO_MSVCRT)/wstring/wcslwr.o \
# $(PATH_TO_MSVCRT)/wstring/wcspbrk.o \
# $(PATH_TO_MSVCRT)/wstring/wcsspn.o \
# $(PATH_TO_MSVCRT)/wstring/wcsstr.o \
# $(PATH_TO_MSVCRT)/wstring/wcsupr.o \
# wchar/wcstombs.o \
# $(PATH_TO_MSVCRT)/wstring/wcsnicmp.o
OBJECTS = \
$(CONIO_OBJECTS) \
$(CTYPE_OBJECTS) \
$(DIRECT_OBJECTS) \
$(EXCEPT_OBJECTS) \
$(FLOAT_OBJECTS) \
$(IO_OBJECTS) \
$(LOCALE_OBJECTS) \
$(MALLOC_OBJECTS) \
$(MATH_OBJECTS) \
$(MBSTRING_OBJECTS)\
$(MISC_OBJECTS) \
$(PROCESS_OBJECTS) \
$(SEARCH_OBJECTS) \
$(SETJMP_OBJECTS) \
$(SIGNAL_OBJECTS) \
$(STDIO_OBJECTS) \
$(STDLIB_OBJECTS) \
$(STRING_OBJECTS) \
$(SYS_STAT_OBJECTS) \
$(TCHAR_OBJECTS) \
$(TIME_OBJECTS) \
$(WSTRING_OBJECTS)
OBJECTS = dllmain.o
$(TARGET_NAME).o: $(OBJECTS)
$(LD) -r $(OBJECTS) -o $(TARGET_NAME).o
# EOF