Reicast-emulator: can not compile reicast if path contains space(s)

Created on 10 Jun 2018  ·  16Comments  ·  Source: reicast/reicast-emulator

Hello,
I tried to compile Reicast from git source today, but it wouldn't compile.
I found the cause: I stored Reicast git sources folder on a path with space.
I moved the sources on a path without space and it compiled without error.
It's a little bug, it will be easy for you to resolve it, isn't it?

Thanks.

config: Ubuntu 18.04


Want to back this issue? Post a bounty on it! We accept bounties via Bountysource.

Improvement Good First Issue Help Wanted

All 16 comments

Good luck figuring that one out :p

jokes aside, we need to take a second look in our build systems

@legluondunet could you provide the log file of the failed build?

@baka0815 not necessary, if you have a path like this:
/home/legluondunet/myemulators/reicast
it compiles ok
if you have a path with a space:
/home/legluondunet/my emulators/reicast
type "make"
it says it can not find "/home/legluondunet/my" folder

Someone could reproduce this issue?

So the issue is not with running it, just building? That is fairly common.
It seems like this has a fairly simple workaround and is very low priority.

I would still love to see this resolved if someone has the stomach to go
through the makefiles

On Tue, 12 Jun 2018 at 11:08, TwistedUmbrella notifications@github.com
wrote:

So the issue is not with running it, just building? That is fairly common.
It seems like this has a fairly simple workaround and is very low priority.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/reicast/reicast-emulator/issues/1169#issuecomment-396520583,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAYAMsCjqyNZBJVwhSB9XDGZeperShQxks5t74UBgaJpZM4Uh04w
.

>

~skmp

It's directly the first line: LOCAL_PATH := $(shell dirname $(realpath $(lastword $(MAKEFILE_LIST))))

If my reicast is in "/home//reicast emulator" and I try to run the makefile for Linux, I get the follwing in LOCAL_PATH: /home/<home> emulator/shell/linux.
The /reicast part is missing.

prolly miss some “” there

On Tue, 12 Jun 2018 at 13:19, Christoph notifications@github.com wrote:

It's directly the first line: LOCAL_PATH := $(shell dirname $(realpath
$(lastword $(MAKEFILE_LIST))))

If my reicast is in "/home//reicast emulator" and I try to run the
makefile for Linux, I get the follwing in LOCAL_PATH: /home/
emulator/shell/linux.
The /reicast part is missing.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/reicast/reicast-emulator/issues/1169#issuecomment-396554820,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAYAMiRA-hLN-170pR4dQd5qessHpWH8ks5t76OkgaJpZM4Uh04w
.

>

~skmp

But that's not all. I tried to fix using LOCAL_PATH := $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))") and that gives me the correct value in LOCAL_PATH
Also RZDCY_SRC_DIR later on has the correct value, but I still get Makefile:235: emulator/shell/linux/../../core/core.mk: No such file or directory

Using "" around the line like include "$(RZDCY_SRC_DIR)/core.mk" doesn't help.

include "/home/<user>/reicast emulator/shell/linux/../../core/core.mk" doesn't work, however include /home/<user>/reicast\ emulator/shell/linux/../../core/core.mk (escaping the space) works.

Looks like it should work using LOCAL_PATH := $(subst ${null} ${null},\${null} ${null},$(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))")).

It "should" because I can't test the complete run (using cygwin here just to test, don't have a Linux box here).

That looks really ugly.

make a PR and let the builbots run?

On Tue, 12 Jun 2018 at 14:08, TwistedUmbrella notifications@github.com
wrote:

That looks really ugly.


You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/reicast/reicast-emulator/issues/1169#issuecomment-396566461,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AAYAMrfl66TgUvhnQ5hS33UuetSQ3u2uks5t769TgaJpZM4Uh04w
.

>

~skmp

@LoungeKatt you could break that up into different lines.

First get the directory preserving spaces (add "") and then replace the space with an escaped space.
I'm no Make specialist, but that's what I found out.

LOCAL_PATH := $(shell dirname "$(realpath $(lastword $(MAKEFILE_LIST)))")
LOCAL_PATH := $(subst ${null} ${null},\${null} ${null},$(LOCAL_PATH))

It's all the ${null} stuff. It's unavoidable, but still looks ugly.

I just corrected the lines above, but that's not the only things that need changing.
There are also changes to be done to core.mkand maybe others too.

Ok, I gave it another go at the core.mk file and the next problem is with the $(foreach function.

But I got that fixed as well and now the path looks good.
However it won't compile because make: *** No rule to make target 'obj-dreamcast-x64-sse4_1/hw/arm7/arm7.build_obj', needed by 'reicast.elf'. Stop..
This is the following line in the Makefile: $(BUILDDIR)/%.build_obj : $(RZDCY_SRC_DIR)/%.cpp and I do not know how I should replace that unfortunately. :-(

Those are the values of BUILDDIR and RZDCY_SRC_DIR on the failing build:

BUILDDIR: obj-dreamcast-x64-sse4_1
RZDCY_SRC_DIR: /home/baka/svn/reicast\ emulator/shell/linux/../../core

Those are the values of BUILDDIR and RZDCY_SRC_DIR on the successfull build:

BUILDDIR: obj-dreamcast-x64-sse4_1
RZDCY_SRC_DIR: /home/baka/svn/reicast-emulator/shell/linux/../../core

As you can see the space is correctly escaped, however it's not working.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

legluondunet picture legluondunet  ·  6Comments

spielvan picture spielvan  ·  6Comments

skmp picture skmp  ·  7Comments

shinshura17 picture shinshura17  ·  6Comments

AbandonedCart picture AbandonedCart  ·  8Comments