View Issue Details

IDProjectCategoryView StatusLast Update
0000765Ecere SDKide:buildsystempublic2013-08-07 03:33
Reporterjerome Assigned Toredj  
PriorityimmediateSeverityblockReproducibilityhave not tried
Status closedResolutionfixed 
Product Version0.44 Ryoan-ji 
Target Version0.44.08Fixed in Version0.44.08 
Summary0000765: Confusion between Host and Target in Cross-Platform Makefiles (Exclusions!)
DescriptionAt the moment there is still confusion in the cross-platform Makefiles between Host and Target platforms.

I've already fixed some of those in order to build for Android on Windows ( see https://github.com/ecere/sdk/commit/12efc106de17fc7e98346a7c335c04dfac765892 ), but issues remain, mainly regarding file exclusions/inclusions.

Furthermore, the variables should be further qualified/standardized... i.e. either dropping the OSX/LINUX/WINDOWS for just HOST_PLATFORM or defining both LINUX_HOST and LINUX_TARGET in addition to HOST_PLATFORM and TARGET_PLATFORM.

At the moment, crossplatform.mk defines:

 WINDOWS/BSD/OSX/LINUX based on the *HOST*

PLATFORM is the Target Platform.

Thus right now, valid checks for Target platform must be e.g.:

ifeq "$(PLATFORM)" "win32"

Whereas valid checks for Host platform must be:

ifdef WINDOWS

It would be nice if these check would explicitly refer to Target or Host to avoid confusion.

Platform specific exclusions right now do NOT use the proper check, e.g.:

ifdef WINDOWS

$(OBJ)Direct3D8DisplayDriver.sym: src/gfx/drivers/Direct3D8DisplayDriver.ec
    $(ECP) $(CECFLAGS) $(ECFLAGS) $(CFLAGS) -c src/gfx/drivers/Direct3D8DisplayDriver.ec -o $(OBJ)Direct3D8DisplayDriver.sym

endif

... and ...

$(if $(WINDOWS),$(OBJ)Direct3D8DisplayDriver.o,) \

That's the one place I can see where it's misused right now with a quick look at it / based on hitting a wall (Building for Android on Windows machine).

TagsNo tags attached.

Activities

redj

2012-10-23 03:44

administrator   ~0000641

do we want to remove PLATFORM completely and replace all appropriate $(PLATFORM) instance by $(TARGET_PLATFORM) ?

I suggest we keep PLATFORM with the understanding that it is always equal to TARGET_PLATFORM and we use $(PLATFORM) in file names and paths only

so all if on platform will be ifdef $(TARGET_PLATFORM) or ifdef $(HOST_PLATFORM)
never $(PLATFORM)

jerome

2012-10-23 03:48

administrator   ~0000642

Yes I suggest we keep it for outside usage (e.g. specifying directories in the projects, and for passing it on to the Makefile)

So TARGET_PLATFORM should be made equal to PLATFORM early on in the Makefile, if PLATFORM is set...

redj

2012-10-23 05:52

administrator   ~0000643

Last edited: 2012-10-24 10:45

https://github.com/ecere/sdk/commit/4b275c9679b40852496e9058dbd8046ecf534ea6

Issue History

Date Modified Username Field Change
2012-10-22 04:50 jerome New Issue
2012-10-22 04:50 jerome Status new => assigned
2012-10-22 04:50 jerome Assigned To => redj
2012-10-22 04:50 jerome Summary Confusion between Host and Target in Cross-Platform Makefiles (esp. exclusions!) => Confusion between Host and Target in Cross-Platform Makefiles (Exclusions!)
2012-10-22 04:50 jerome Description Updated
2012-10-23 03:44 redj Note Added: 0000641
2012-10-23 03:48 jerome Note Added: 0000642
2012-10-23 05:52 redj Status assigned => resolved
2012-10-23 05:52 redj Fixed in Version => 0.44.1 Android
2012-10-23 05:52 redj Resolution open => fixed
2012-10-23 05:52 redj Note Added: 0000643
2012-10-24 10:45 redj Note Edited: 0000643
2013-05-22 20:31 jerome Status resolved => closed
2013-08-07 03:33 jerome Fixed in Version 0.44.10 64 => 0.44.08
2013-08-07 03:33 jerome Target Version 0.44.10 64 => 0.44.08