View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0000765 | Ecere SDK | ide:buildsystem | public | 2012-10-22 04:50 | 2013-08-07 03:33 |
Reporter | jerome | Assigned To | redj | ||
Priority | immediate | Severity | block | Reproducibility | have not tried |
Status | closed | Resolution | fixed | ||
Product Version | 0.44 Ryoan-ji | ||||
Target Version | 0.44.08 | Fixed in Version | 0.44.08 | ||
Summary | 0000765: Confusion between Host and Target in Cross-Platform Makefiles (Exclusions!) | ||||
Description | At 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). | ||||
Tags | No tags attached. | ||||
|
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) |
|
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... |
|
https://github.com/ecere/sdk/commit/4b275c9679b40852496e9058dbd8046ecf534ea6 |
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 |