From e2bf85ca9d5999d4d6154ddb9fe161438db44cef Mon Sep 17 00:00:00 2001 From: Owen Shepherd Date: Thu, 16 Aug 2012 18:45:37 +0100 Subject: [PATCH] win32: most tests now build on Watcom --- Jamfile | 21 +++++++++++---------- Jamrules | 7 +++---- platform/example/Config.jam | 6 ++++-- platform/win32/Config.jam | 16 ++++++++++++++-- platform/win32/crt0.c | 5 +++-- 5 files changed, 35 insertions(+), 20 deletions(-) diff --git a/Jamfile b/Jamfile index bd9305c..50e09f8 100644 --- a/Jamfile +++ b/Jamfile @@ -28,22 +28,23 @@ if ! $(PDCLIB_NO_TEST) { regtest = $(file:S=-regtest) ; Object $(testfile).o : $(file) ; - Object $(regtestfile).o : $(file) ; MainFromObjects $(testfile) : $(testfile).o $(CRT0) ; - MainFromObjects $(regtestfile) : $(regtestfile).o ; CCFLAGS on $(testfile).o += -DTEST $(PDCLIB_TEST_CCFLAGS) ; - CCFLAGS on $(regtestfile).o += -DTEST -DREGTEST - $(PDCLIB_REGTEST_CCFLAGS) ; - CCHDRS on $(regtestfile).o = [ FIncludes [ FDirName testing ] ] ; - LINKFLAGS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKFLAGS) ; - LINKFLAGS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKFLAGS) ; LINKLIBS on $(testfile)$(SUFEXE) += $(PDCLIB_TEST_LINKLIBS) ; - LINKLIBS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKLIBS) ; LinkLibraries $(testfile) : $(PDCLIB) ; - Test $(test) : $(testfile) ; - RegTest $(regtest) : $(regtestfile) ; + + if ! $(PDCLIB_NO_REGTEST) { + Object $(regtestfile).o : $(file) ; + MainFromObjects $(regtestfile) : $(regtestfile).o ; + CCFLAGS on $(regtestfile).o += -DTEST -DREGTEST + $(PDCLIB_REGTEST_CCFLAGS) ; + CCHDRS on $(regtestfile).o = [ FIncludes [ FDirName testing ] ] $(PDCLIB_REGTEST_CCHDRS) ; + LINKFLAGS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKFLAGS) ; + LINKLIBS on $(regtestfile)$(SUFEXE) += $(PDCLIB_REGTEST_LINKLIBS) ; + RegTest $(regtest) : $(regtestfile) ; + } } } diff --git a/Jamrules b/Jamrules index bc9ac17..31da387 100644 --- a/Jamrules +++ b/Jamrules @@ -64,11 +64,10 @@ if $(PDCLIB_TOOLCHAIN) = "gcc" { } } else if $(PDCLIB_TOOLCHAIN) = "WATCOM" { ECHO "Watcom!" ; - CCFLAGS = /zq /DWIN32 ; - C++FLAGS = /zq /DWIN32 ; + CCFLAGS = /zq /DWIN32 /zls ; + C++FLAGS = /zq /DWIN32 /zls ; STDHDRS = $(WATCOM)\\h\\nt ; - - PDCLIB_CCFLAGS = "-za99 -zl" ; + PDCLIB_CCFLAGS = "-za99 -zl -s" ; } else { ECHO The value of PDCLIB_TOOLCHAIN is not recognized ; ECHO Currently set to $(PDCLIB_TOOLCHAIN) ; diff --git a/platform/example/Config.jam b/platform/example/Config.jam index 7871eb8..1eda6e8 100644 --- a/platform/example/Config.jam +++ b/platform/example/Config.jam @@ -4,7 +4,9 @@ rule PDCLibTargetHeaders { SubDirHdrs $(PDCLIB_TOP) platform example internals ; } -PDCLIB_TEST_LINKFLAGS += -nostdlib ; -PDCLIB_TEST_LINKLIBS += -lgcc ; +if $(PDCLIB_TOOLCHAIN) = "gcc" { + PDCLIB_TEST_LINKFLAGS += -nostdlib ; + PDCLIB_TEST_LINKLIBS += -lgcc ; +} PDCLIB_OPTIONS = nothread notime dlmalloc ; \ No newline at end of file diff --git a/platform/win32/Config.jam b/platform/win32/Config.jam index 7dcab3f..1cd357a 100644 --- a/platform/win32/Config.jam +++ b/platform/win32/Config.jam @@ -8,8 +8,20 @@ rule PDCLibTargetHeaders { } } -PDCLIB_TEST_LINKFLAGS += -nostdlib ; -PDCLIB_TEST_LINKLIBS += -lgcc -lkernel32 -lshell32 ; +if $(PDCLIB_TOOLCHAIN) = "gcc" { + PDCLIB_TEST_LINKFLAGS += -nostdlib ; + PDCLIB_TEST_LINKLIBS += -lgcc -lkernel32 -lshell32 ; +} else if $(PDCLIB_TOOLCHAIN) = "WATCOM" { + PDCLIB_TEST_LINKFLAGS = "-\"option start=_mainCRTStartup\"" ; + PDCLIB_TEST_LINKLIBS = + $(WATCOM)\\lib386\\nt\\kernel32.lib + $(WATCOM)\\lib386\\nt\\shell32.lib + $(WATCOM)\\lib386\\nt\\clib3r.lib ; + PDCLIB_REGTEST_CCHDRS = [ FIncludes $(WATCOM)\\h ] ; +} else { + ECHO Win32 doesn't support toolchain $(PDCLIB_TOOLCHAIN) ; + EXIT ; +} PDCLIB_OPTIONS = nothread notime dlmalloc ; diff --git a/platform/win32/crt0.c b/platform/win32/crt0.c index dd00c53..e910bd1 100644 --- a/platform/win32/crt0.c +++ b/platform/win32/crt0.c @@ -97,7 +97,8 @@ static LONG CALLBACK sehExceptionFilter( EXCEPTION_POINTERS * exInfo ) } extern int main( int argc, char ** argv, char ** envp ); -_PDCLIB_noreturn void mainCRTStartup( void ) + +void __cdecl mainCRTStartup( void ) { stdin->handle = GetStdHandle(STD_INPUT_HANDLE); stdout->handle = GetStdHandle(STD_OUTPUT_HANDLE); @@ -113,4 +114,4 @@ _PDCLIB_noreturn void mainCRTStartup( void ) int exitStatus = main(argc, argv, NULL); exit(exitStatus); -} +} \ No newline at end of file -- 2.40.0