Closed sparky4 closed 7 years ago
If you are using wmake then if you put star character before wcl command like this *wcl ..... all options and arguments .... then command line is passed by temporary environment variable (DOS version of tools) to wcl tools
Thanks for wasm bug report. It is fixed by 73469ee8d5c83dce77306427dfd2a0a96d82dcdb
Anyway wcl .... @file .... argument is used as linker directive file for linker
The star before command is general rule for any wmake command, it is supported by OW tools for DOS host (Compilers, librarian, resource compiler, assemblers).
ok thanks!
Well I am having a different issue now.... @jmalak I am running into an issue with compiling Open Watcom again.... http://4ch.mooo.com/4/watcom/compwat2.sh This is my script files to compile it. i think builder is failing ========== 12:10:08 /home/sparky4/p/watcom2/bld/causeway/cwc/dosi86 =========== cp ../../cw32/dosi86/cwstub.exe cwstub.exe wcl386 -zq -bt=linux -l=linux -I"/home/sparky4/p/watcom2/bld/watcom/h" ../../c/mkcode.c -ox-w8-j-fo=.obj -fe=./mkcode.exe bwasm -zq -fo=copystub.obj ../../asm/copystub.asm bwlink format dos com op quiet, nodefault file copystub.obj name copystub.tmp disable 1023,1080 ./mkcode.exe copystub.tmp copystub.gh bwasm -zq -fo=decstub.obj ../../asm/decstub.asm bwlink format dos com op quiet, nodefault file decstub.obj name decstub.tmp disable 1023,1080 ./mkcode.exe decstub.tmp decstub.gh cc cwc.obj ./copystub.gh(65610): Error! E1145: Internal compiler limit exceeded, break module into smaller pieces Error(E42): Last command making (cwc.obj) returned a bad status Error(E02): Make execution terminated <pmake -d build -h> => non-zero return: 512 Build failed
It looks like problem with content of copystub.gh for some reason (normaly it has 73 lines only, but yours has much more 65610). In similar situation you should first run "sh clean.sh" from OWROOT directory which realy remove all temporary object from build tree. After that try it ones more because command "sh build.sh" doesn't remove any of temporary objects.
ok thank!
failed again... did not work... same error
Please, could you give me content of home/sparky4/p/watcom2/bld/causeway/cwc/dosi86 for analysis.
yes!
http://4ch.mooo.com/4/watcom/dosi86.tar
it is a very big file it is currently being uploaded it is going to take a while...
It looks like OW configuration problem, therefore binary files copystub.tmp and decstub.tmp are wrong. They should have following sizes copystub.tmp 1167 bytes decstub.tmp 461 bytes
!!!!
the *.gh files are 1.4 GB
What version of OW you use for OW build on your system?
! 2.0 ^^; ^^;
so the compiler is trying to compile the compiler that happens to be itself
It looks like your OW 2.0 is broken or environment is not setup correctly. Try rebuild OW 2.0 from latest source by native compiler or by OW 1.9.
ok!
odd the 64 bit machine compiles open watcom successfully and .... the 32 bit machines fail at it... how odd
their configs are the same ^^
In this case I recommed to modify local.mif file to not suppress banner. Remove following lines from begining of build/mif/local.mif file
cc += -zq cl += -zq cxx += -zq as += -q linker += op q librarian += -q rc += -q rcaui += -q
bcc += -zq bcl += -zq bas += -q blink += op q blib += -q
Next set OWVERBOSE=1 environment variable. Then you will get full log with banner of each tool and full command line to be able analyse what is wrong.
ah OK
========== 17:16:11 /home/sparky4/p/watcom2/bld/causeway/cwc/dosi86 =========== cp ../../cw32/dosi86/cwstub.exe cwstub.exe wcl386 -bt=linux -l=linux -I"/home/sparky4/p/watcom2/bld/watcom/h" ../../c/mkcode.c -ox-w8-j-fo=.obj -fe=./mkcode.exe Open Watcom C/C++ x86 32-bit Compile and Link Utility Version 2.0 beta Aug 24 2016 04:41:42 (32-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. wcc386 ../../c/mkcode.c -bt=linux -I/home/sparky4/p/watcom2/bld/watcom/h -ox -w8 -j -.obj Open Watcom C x86 32-bit Optimizing Compiler Version 2.0 beta Aug 15 2016 15:27:09 (32-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. Error! E1073: Invalid option '-.obj' ../../c/mkcode.c: 87 lines, included 2772, 0 warnings, 1 errors Error: Compiler returned a bad status compiling '../../c/mkcode.c' Error(E42): Last command making (./mkcode.exe) returned a bad status Error(E02): Make execution terminated <pmake -d build -h> => non-zero return: 512 Build failed
HOW odd same issue on compy4
ok i copied the bld directory from lappy4 (the working one) and deleted binbuild/*.obj and it compiled that part
but causeway win386 dwarf wasm ... they all have same error Error! E1073: Invalid option '-.obj'
i am thinking fo= in -fo=.obj is missing at the end of the compile arguments
Thanks for your checking. I am sorry I introduced bug for -fo option by ac26553c9354ff606657d53d99eeb10bd4a95ef9 commit which fixed problem with -mt option. Now it should be fixed. Please try it ones more with latest source code.
OK I will do! and it is ok!
compiling on odd pc 1st attempted failed... same -.obj issue so i copied the newer wcl from lappy4 to compy4 and retrying
wcl386 -bt=linux -l=linux -I"/home/sparky4/p/watcom2/bld/watcom/h" ../../c/mkcode.c -ox-w8-j-fo=.obj -fe=./mkcode.exe Open Watcom C/C++ x86 32-bit Compile and Link Utility Version 2.0 beta Aug 26 2016 00:04:26 (64-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1988-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. wcc386 ../../c/mkcode.c -bt=linux -I/home/sparky4/p/watcom2/bld/watcom/h -ox -w8 -j -fo=.obj Open Watcom C x86 32-bit Optimizing Compiler Version 2.0 beta Aug 24 2016 09:36:56 (64-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. ../../c/mkcode.c: 87 lines, included 2774, 0 warnings, 0 errors Code size: 237 wlink @wcl.lnk Open Watcom Linker Version 2.0 beta Aug 24 2016 09:33:23 (64-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1985-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. loading object files searching libraries creating a Linux x86 executable bwasm -zq -fo=copystub.obj ../../asm/copystub.asm bwlink format dos com op quiet, nodefault file copystub.obj name copystub.tmp disable 1023,1080 ./mkcode.exe copystub.tmp copystub.gh bwasm -zq -fo=decstub.obj ../../asm/decstub.asm bwlink format dos com op quiet, nodefault file decstub.obj name decstub.tmp disable 1023,1080 ./mkcode.exe decstub.tmp decstub.gh
bwcc -w8 -we -oaxt -d1 -x -xx -zam -fo=cwc.obj -j -fpi -mc -bt=dos -DNDEBUG -D_ENABLE_AUTODEPEND -D__WATCOM_LFN__ -I. -I"/home/sparky4/p/watcom2/bld/hdr/dos" -I"/home/sparky4/p/watcom2/bld/watcom/h" ../../c/cwc.c Open Watcom C x86 16-bit Optimizing Compiler Version 2.0 beta Aug 25 2016 23:57:58 (32-bit) Copyright (c) 2002-2016 The Open Watcom Contributors. All Rights Reserved. Portions Copyright (c) 1984-2002 Sybase, Inc. All Rights Reserved. Source code is available under the Sybase Open Watcom Public License. See http://www.openwatcom.org/ for details. ./copystub.gh(65610): Error! E1145: Internal compiler limit exceeded, break module into smaller pieces Error(E42): Last command making (cwc.obj) returned a bad status Error(E02): Make execution terminated <pmake -d build -h> => non-zero return: 512 Build failed
anyway https://github.com/sparky4/16/blob/master/makefile#L143
i do not know how todo this... it is not well documented. ^^;
trying to reduce the massive makefile and wcl to not have such a long compile parameters ^^;
Don't forgot use latest source for OW2. For bootstrap version run "builder bootclean" in bld/wcl and next run "builder boot" it replace bwcl.. by new versions. Next you don't need recompile full OW2 simply recompile only wcl utility and replace it in appropriate directory of your existing OW2. After that try again.
To your make file problem, use of star should fix problem with long command line on the DOS tesuto.exe: tesuto.$(OBJ) $(DOSLIBLIBS) 16_head.$(OBJ) gfx.lib @*wlink option quiet option max=tesuto.mah $(DOSLIB_LDFLAGS_DOS16H) file tesuto.obj name tesuto.exe library $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)cpu$(DIRSEP)dos86h$(DIRSEP)cpu.lib library $(DOSLIBDIR)$(DIRSEP)hw$(DIRSEP)dos$(DIRSEP)dos86h$(DIRSEP)dos.lib
anyway you can optimize wlink command to @*wlink option quiet option max=tesuto.mah $(DOSLIB_LDFLAGS_DOS16H) file tesuto.obj name tesuto.exe libpath $(DOSLIBDIR)/hw/cpu/dos86h library cpu.lib library dos.lib
For current valid command use star before wcl command
*wcl $(FLAGS) $(WCLQ) tesuto.$(OBJ) $(DOSLIBLIBS) 16_head.$(OBJ) gfx.lib
Global optimization could be done by
{$(SRC)}.c.$(OBJ) :
*wcl $(FLAGS) -c $[*
16.$(OBJ): $(SRC)16.c $(SRC)16.h bakapi.$(OBJ): $(SRC)bakapi.c $(SRC)bakapi.h test.$(OBJ): $(SRC)test.c $(SRCLIB)modex16.h test0.$(OBJ): $(SRC)test0.c # if it is one-to-one then can be ommited pcxtest.$(OBJ): $(SRC)pcxtest.c $(SRCLIB)modex16.h vrstest.$(OBJ): $(SRC)vrstest.c $(SRCLIB)modex16.h
etc.
thanks!
hmmm the {$(SRC)}.c.$(OBJ) : wcl $(FLAGS) -c $[
only works on DOS the host compiling OS can also be GNU/Linux
the target is always 16 bit dos
what problem is on Linux?
[14:24:15][/dos/z/16] [sparky4@lappy4]$ ./wbuild.sh makefile(210): Error(E21): Extension(s) (.c.o) not defined makefile(211): Warning(W20): Command list does not belong to any target Error(E02): Make execution terminated makefile(210): Error(E21): Extension(s) (.c.o) not defined makefile(211): Warning(W20): Command list does not belong to any target Error(E02): Make execution terminated makefile(210): Error(E21): Extension(s) (.c.o) not defined makefile(211): Warning(W20): Command list does not belong to any target Error(E02): Make execution terminated
What is on line 210 and 211? Could you give me your makefile? You can run wmake -sn to get each command
the
{$(SRC)}.c.$(OBJ) : wcl $(FLAGS) -c $[
^^;
What contain $(SRC) macro?
SRC=src\ or SRC=src/
source *.C file directory
it could be a problem with trailing directory separator in extensions rule try
{src}.c.$(OBJ) : wcl $(FLAGS) -c $[
ok!
hmm failed too hmmm
what source file cause it? what is its dependency line?
let me commit please wait
take into account that each source directory require extra rule definition by example
{src}.c.o :
{doslib/src}.c.o :
first one is for sources src/.c second one is for sources doslib/src/.c
but wmake translate / to \ in dependency on host
oh ok!
the line is 211 and it is makefile it is committing
ok so {src}.c.o : ? or {src}.c.$(OBJ) : ?
if you change object file extension to $(OBJ) then you must use second form to switch rule accordingly
i have to disable it for gnu/linux host compiling because it dose not understand...
//NTS we have to construct the command line into tmp.cmd because for MS-DOS //systems all arguments would exceed the pitiful 128 char command line limit .C.OBJ: %write temp.cmd $(CFLAGS_THIS) $(CFLAGS_CON) $[@ @wcl @temp.cmd
yeah i want to pass arguments to wcl that are in a file... but it dose not know how todo this....
also wasm help i think print out it's bianary