www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - Can't run 'masm386'

reply Andre Tampubolon <andre lc.vlsm.org> writes:
I was trying to build druntime. I got this error:
dmd -c -d -o- -Isrc -Iimport -Hfimport\core\sys\windows\windows.di
src\core\sys\windows\windows.d

dmc -c  src\core\stdc\errno.c -oerrno_c.obj

dmc -c  src\rt\complex.c

dmc -c  src\rt\minit.asm
masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

Can't run 'masm386', check PATH
masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

Can't run 'masm386', check PATH
Error: 'dmc' not found

Strange. This thing never happened before.
May 16 2012
next sibling parent reply "Nick Sabalausky" <SeeWebsiteToContactMe semitwist.com> writes:
"Andre Tampubolon" <andre lc.vlsm.org> wrote in message 
news:jp1kld$15mj$1 digitalmars.com...
I was trying to build druntime. I got this error:
 dmd -c -d -o- -Isrc -Iimport -Hfimport\core\sys\windows\windows.di
 src\core\sys\windows\windows.d

 dmc -c  src\core\stdc\errno.c -oerrno_c.obj

 dmc -c  src\rt\complex.c

 dmc -c  src\rt\minit.asm
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 Error: 'dmc' not found

 Strange. This thing never happened before.

I've hit that before. Druntime comes with minit.obj already compiled. Apperently, minit.asm isn't expected to change, so it's not expected that minit.obj will need to be rebuilt. At least that's what I was told. So what must have happened is the same as what happened to me: The timestamp on minit.asm was updated (or the file was inadvertantly changed). Or maybe minit.obj accidentally got deleted. Either way, make thinks minit needs to be rebuilt (which is not normally expected of minit), so it tries to, and it can't find masm386 (which doesn't come with DMD or DMC), so the error. So just: 1. Check that minit.obj still exists, and if not, grab it again. 2. Make sure the timestamp on minit.asm isn't newer than minit.obj 3. Make sure minit.asm didn't get changed.
May 16 2012
parent Andre Tampubolon <andre lc.vlsm.org> writes:
minit.obj is still there.

I commented this part:
src\rt\minit.obj : src\rt\minit.asm
	$(CC) -c $(CFLAGS) src\rt\minit.asm

That works.

On 5/17/2012 11:35 AM, Nick Sabalausky wrote:
 "Andre Tampubolon" <andre lc.vlsm.org> wrote in message 
 news:jp1kld$15mj$1 digitalmars.com...
 I was trying to build druntime. I got this error:
 dmd -c -d -o- -Isrc -Iimport -Hfimport\core\sys\windows\windows.di
 src\core\sys\windows\windows.d

 dmc -c  src\core\stdc\errno.c -oerrno_c.obj

 dmc -c  src\rt\complex.c

 dmc -c  src\rt\minit.asm
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 Error: 'dmc' not found

 Strange. This thing never happened before.

I've hit that before. Druntime comes with minit.obj already compiled. Apperently, minit.asm isn't expected to change, so it's not expected that minit.obj will need to be rebuilt. At least that's what I was told. So what must have happened is the same as what happened to me: The timestamp on minit.asm was updated (or the file was inadvertantly changed). Or maybe minit.obj accidentally got deleted. Either way, make thinks minit needs to be rebuilt (which is not normally expected of minit), so it tries to, and it can't find masm386 (which doesn't come with DMD or DMC), so the error. So just: 1. Check that minit.obj still exists, and if not, grab it again. 2. Make sure the timestamp on minit.asm isn't newer than minit.obj 3. Make sure minit.asm didn't get changed.

May 17 2012
prev sibling next sibling parent "Adam Wilson" <flyboynw gmail.com> writes:
On Wed, 16 May 2012 18:35:33 -0700, Andre Tampubolon <andre lc.vlsm.org>
wrote:

 I was trying to build druntime. I got this error:
 dmd -c -d -o- -Isrc -Iimport -Hfimport\core\sys\windows\windows.di
 src\core\sys\windows\windows.d

 dmc -c  src\core\stdc\errno.c -oerrno_c.obj

 dmc -c  src\rt\complex.c

 dmc -c  src\rt\minit.asm
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 Error: 'dmc' not found

 Strange. This thing never happened before.

I just struck this as well after doing a rebase to bring my drt branch up to date. But the question is, if minit.obj is already included, why does it try to build minit.asm? It looks like that line could easily be deleted to no effect. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/
May 16 2012
prev sibling next sibling parent reply "Adam Wilson" <flyboynw gmail.com> writes:
On Wed, 16 May 2012 18:35:33 -0700, Andre Tampubolon <andre lc.vlsm.org>  
wrote:

 I was trying to build druntime. I got this error:
 dmd -c -d -o- -Isrc -Iimport -Hfimport\core\sys\windows\windows.di
 src\core\sys\windows\windows.d

 dmc -c  src\core\stdc\errno.c -oerrno_c.obj

 dmc -c  src\rt\complex.c

 dmc -c  src\rt\minit.asm
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 masm386 -DM_I386=1 -D_WIN32 -Mx src\rt\minit.asm;

 Can't run 'masm386', check PATH
 Error: 'dmc' not found

 Strange. This thing never happened before.

It looks like 2 days ago someone DID in fact change the minit.asm file. They changed the references to LICENSE and README. Your best bet is probably to redownload minit.obj from the druntime repo to update it's modified date. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/
May 16 2012
parent reply "Nick Sabalausky" <SeeWebsiteToContactMe semitwist.com> writes:
"Adam Wilson" <flyboynw gmail.com> wrote in message 
news:op.wefr0erm707hn8 invictus.skynet.com...
 It looks like 2 days ago someone DID in fact change the minit.asm file. 
 They changed the references to LICENSE and README. Your best bet is 
 probably to redownload minit.obj from the druntime repo to update it's 
 modified date.

In that case, the copy of minit.obj in git really should have its timestamp updated too, otherwise people are just going to keep running into this. (Or, as someone suggested, just remove the "minit.obj depends on minit.asm" from the makefile.)
May 16 2012
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?

No.
May 17 2012
next sibling parent Jacob Carlborg <doob me.com> writes:
On 2012-05-17 17:53, Walter Bright wrote:
 On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?

No.

Wasn't the whole point of supporting inline assembly directly in D to avoid these situations. -- /Jacob Carlborg
May 17 2012
prev sibling parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 5/23/2012 1:40 PM, Martin Nowak wrote:
 On Thursday, 17 May 2012 at 15:54:05 UTC, Walter Bright wrote:
 On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?

No.

What's the 'official' tool that was used to compile the checked-in obj?

I use MASM386, but that is no longer available, and being a 16 bit program it won't even run on Win7.
May 23 2012
parent reply dennis luehring <dl.soluz gmx.net> writes:
Am 23.05.2012 23:51, schrieb Walter Bright:
 On 5/23/2012 1:40 PM, Martin Nowak wrote:
  On Thursday, 17 May 2012 at 15:54:05 UTC, Walter Bright wrote:
  On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
  Any chance this asm file can be written in D with asm block?

No.

What's the 'official' tool that was used to compile the checked-in obj?

I use MASM386, but that is no longer available, and being a 16 bit program it won't even run on Win7.

MASM should work, or better JWasm (http://www.japheth.de/JWasm.html) but were to find the included macros.asm?
May 23 2012
parent Walter Bright <newshound2 digitalmars.com> writes:
On 5/23/2012 9:06 PM, dennis luehring wrote:
 Am 23.05.2012 23:51, schrieb Walter Bright:
 On 5/23/2012 1:40 PM, Martin Nowak wrote:
 On Thursday, 17 May 2012 at 15:54:05 UTC, Walter Bright wrote:
 On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?

No.

What's the 'official' tool that was used to compile the checked-in obj?

I use MASM386, but that is no longer available, and being a 16 bit program it won't even run on Win7.

MASM should work, or better JWasm (http://www.japheth.de/JWasm.html) but were to find the included macros.asm?

It's part of the dmc distribution. But it should be rewritten not to need it.
May 23 2012
prev sibling next sibling parent "Adam Wilson" <flyboynw gmail.com> writes:
On Wed, 16 May 2012 22:53:59 -0700, Nick Sabalausky  
<SeeWebsiteToContactMe semitwist.com> wrote:

 "Adam Wilson" <flyboynw gmail.com> wrote in message
 news:op.wefr0erm707hn8 invictus.skynet.com...
 It looks like 2 days ago someone DID in fact change the minit.asm file.
 They changed the references to LICENSE and README. Your best bet is
 probably to redownload minit.obj from the druntime repo to update it's
 modified date.

In that case, the copy of minit.obj in git really should have its timestamp updated too, otherwise people are just going to keep running into this. (Or, as someone suggested, just remove the "minit.obj depends on minit.asm" from the makefile.)

I'm editing the makefiles anyways, it could be done, but I want to make sure there are no other weird dependencies on it first. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/
May 16 2012
prev sibling next sibling parent "Steven Schveighoffer" <schveiguy yahoo.com> writes:
On Thu, 17 May 2012 01:53:59 -0400, Nick Sabalausky  
<SeeWebsiteToContactMe semitwist.com> wrote:


 (Or,
 as someone suggested, just remove the "minit.obj depends on minit.asm"  
 from
 the makefile.)

I don't think this is a good idea, minit.asm could have code changes, in which case you are building with a stale object. I'd rather have the error than accidentally use a stale object. Any chance this asm file can be written in D with asm block? -Steve
May 17 2012
prev sibling next sibling parent "Adam Wilson" <flyboynw gmail.com> writes:
On Thu, 17 May 2012 06:38:15 -0700, Steven Schveighoffer  
<schveiguy yahoo.com> wrote:

 On Thu, 17 May 2012 01:53:59 -0400, Nick Sabalausky  
 <SeeWebsiteToContactMe semitwist.com> wrote:


 (Or,
 as someone suggested, just remove the "minit.obj depends on minit.asm"  
 from
 the makefile.)

I don't think this is a good idea, minit.asm could have code changes, in which case you are building with a stale object. I'd rather have the error than accidentally use a stale object. Any chance this asm file can be written in D with asm block? -Steve

Ok, I never wrote the change into the makefiles anyways, I just updated from the repo to change the modified date. -- Adam Wilson IRC: LightBender Project Coordinator The Horizon Project http://www.thehorizonproject.org/
May 17 2012
prev sibling next sibling parent "David Nadlinger" <see klickverbot.at> writes:
On Thursday, 17 May 2012 at 20:07:23 UTC, Jacob Carlborg wrote:
 On 2012-05-17 17:53, Walter Bright wrote:
 On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?


in D to avoid these situations.

It has been some time since I last looked at it, but IIRC there is no way to write minit.asm in D inline asm because it requires control over the name of its data sections in order to be able to Ā»bracketĀ« all the ModuleInfo references (so an array of all ModuleInfos can be reconstructed later). David
May 17 2012
prev sibling parent "Martin Nowak" <dawg dawgfoto.de> writes:
On Thursday, 17 May 2012 at 15:54:05 UTC, Walter Bright wrote:
 On 5/17/2012 6:38 AM, Steven Schveighoffer wrote:
 Any chance this asm file can be written in D with asm block?

No.

What's the 'official' tool that was used to compile the checked-in obj?
May 23 2012