ide/Project: Fixed and simplified platform exclusion code
authorJerome St-Louis <jerome@ecere.com>
Fri, 16 Nov 2012 05:03:06 +0000 (00:03 -0500)
committerJerome St-Louis <jerome@ecere.com>
Fri, 16 Nov 2012 05:03:06 +0000 (00:03 -0500)
- Fixed broken multiple-platform exclusion/inclusion were broken
- Do not attempt to exclude folders, as this does not allow to reinclude them
- Future potential improvement: group exclusions together based on included platform combinations
- Updated libecere Makefile

ecere/Makefile
ide/src/project/Project.ec
ide/src/project/ProjectNode.ec

index 2de44dc..d57fc36 100755 (executable)
@@ -688,32 +688,24 @@ $(OBJ)PNGFormat.sym: src/gfx/bitmaps/PNGFormat.ec
 $(OBJ)RGBFormat.sym: src/gfx/bitmaps/RGBFormat.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/bitmaps/RGBFormat.ec -o $(OBJ)RGBFormat.sym
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D8DisplayDriver.sym: src/gfx/drivers/Direct3D8DisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D8DisplayDriver.ec -o $(OBJ)Direct3D8DisplayDriver.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D9DisplayDriver.sym: src/gfx/drivers/Direct3D9DisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Direct3D9DisplayDriver.ec -o $(OBJ)Direct3D9DisplayDriver.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)DirectDrawDisplayDriver.sym: src/gfx/drivers/DirectDrawDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/DirectDrawDisplayDriver.ec -o $(OBJ)DirectDrawDisplayDriver.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)GDIDisplayDriver.sym: src/gfx/drivers/GDIDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/GDIDisplayDriver.ec -o $(OBJ)GDIDisplayDriver.sym
-
 endif
 
 $(OBJ)lfbBlit.sym: src/gfx/drivers/lfbBlit.ec
@@ -725,49 +717,37 @@ $(OBJ)lfbConvert.sym: src/gfx/drivers/lfbConvert.ec
 $(OBJ)LFBDisplayDriver.sym: src/gfx/drivers/LFBDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/LFBDisplayDriver.ec -o $(OBJ)LFBDisplayDriver.sym
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesDisplayDriver.sym: src/gfx/drivers/NCursesDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/NCursesDisplayDriver.ec -o $(OBJ)NCursesDisplayDriver.sym
-
 endif
 
 $(OBJ)OpenGLDisplayDriver.sym: src/gfx/drivers/OpenGLDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/OpenGLDisplayDriver.ec -o $(OBJ)OpenGLDisplayDriver.sym
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32BitmapPrinterDisplayDriver.sym: src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec -o $(OBJ)Win32BitmapPrinterDisplayDriver.sym
-
 endif
 
-ifdef OSX_TARGET
-
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaOpenGLDisplayDriver.sym: src/gfx/drivers/CocoaOpenGLDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/CocoaOpenGLDisplayDriver.ec -o $(OBJ)CocoaOpenGLDisplayDriver.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleDisplayDriver.sym: src/gfx/drivers/Win32ConsoleDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32ConsoleDisplayDriver.ec -o $(OBJ)Win32ConsoleDisplayDriver.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32PrinterDisplayDriver.sym: src/gfx/drivers/Win32PrinterDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/Win32PrinterDisplayDriver.ec -o $(OBJ)Win32PrinterDisplayDriver.sym
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(LINUX_TARGET)" ""
 $(OBJ)XDisplayDriver.sym: src/gfx/drivers/XDisplayDriver.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/XDisplayDriver.ec -o $(OBJ)XDisplayDriver.sym
-
 endif
 
 $(OBJ)Bitmap.sym: src/gfx/Bitmap.ec
@@ -869,42 +849,34 @@ $(OBJ)ReplaceDialog.sym: src/gui/dialogs/ReplaceDialog.ec
 $(OBJ)WindowList.sym: src/gui/dialogs/WindowList.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/dialogs/WindowList.ec -o $(OBJ)WindowList.sym
 
-ifdef OSX_TARGET
-
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaDispatch.sym: src/gui/drivers/cocoa/CocoaDispatch.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaDispatch.ec -o $(OBJ)CocoaDispatch.sym
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaInterface.sym: src/gui/drivers/cocoa/CocoaInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaInterface.ec -o $(OBJ)CocoaInterface.sym
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesInterface.sym: src/gui/drivers/NCursesInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/NCursesInterface.ec -o $(OBJ)NCursesInterface.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32Interface.sym: src/gui/drivers/Win32Interface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32Interface.ec -o $(OBJ)Win32Interface.sym
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleInterface.sym: src/gui/drivers/Win32ConsoleInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/Win32ConsoleInterface.ec -o $(OBJ)Win32ConsoleInterface.sym
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)XInterface.sym: src/gui/drivers/XInterface.ec
        $(ECP) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/XInterface.ec -o $(OBJ)XInterface.sym
-
 endif
 
 $(OBJ)TVisionSkin.sym: src/gui/skins/TVisionSkin.ec
@@ -1125,32 +1097,24 @@ $(OBJ)PNGFormat.c: src/gfx/bitmaps/PNGFormat.ec $(OBJ)PNGFormat.sym | $(SYMBOLS)
 $(OBJ)RGBFormat.c: src/gfx/bitmaps/RGBFormat.ec $(OBJ)RGBFormat.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/bitmaps/RGBFormat.ec -o $(OBJ)RGBFormat.c -symbols $(OBJ)
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D8DisplayDriver.c: src/gfx/drivers/Direct3D8DisplayDriver.ec $(OBJ)Direct3D8DisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/Direct3D8DisplayDriver.ec -o $(OBJ)Direct3D8DisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D9DisplayDriver.c: src/gfx/drivers/Direct3D9DisplayDriver.ec $(OBJ)Direct3D9DisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/Direct3D9DisplayDriver.ec -o $(OBJ)Direct3D9DisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)DirectDrawDisplayDriver.c: src/gfx/drivers/DirectDrawDisplayDriver.ec $(OBJ)DirectDrawDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/DirectDrawDisplayDriver.ec -o $(OBJ)DirectDrawDisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)GDIDisplayDriver.c: src/gfx/drivers/GDIDisplayDriver.ec $(OBJ)GDIDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/GDIDisplayDriver.ec -o $(OBJ)GDIDisplayDriver.c -symbols $(OBJ)
-
 endif
 
 $(OBJ)lfbBlit.c: src/gfx/drivers/lfbBlit.ec $(OBJ)lfbBlit.sym | $(SYMBOLS)
@@ -1162,49 +1126,37 @@ $(OBJ)lfbConvert.c: src/gfx/drivers/lfbConvert.ec $(OBJ)lfbConvert.sym | $(SYMBO
 $(OBJ)LFBDisplayDriver.c: src/gfx/drivers/LFBDisplayDriver.ec $(OBJ)LFBDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/LFBDisplayDriver.ec -o $(OBJ)LFBDisplayDriver.c -symbols $(OBJ)
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesDisplayDriver.c: src/gfx/drivers/NCursesDisplayDriver.ec $(OBJ)NCursesDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/NCursesDisplayDriver.ec -o $(OBJ)NCursesDisplayDriver.c -symbols $(OBJ)
-
 endif
 
 $(OBJ)OpenGLDisplayDriver.c: src/gfx/drivers/OpenGLDisplayDriver.ec $(OBJ)OpenGLDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/OpenGLDisplayDriver.ec -o $(OBJ)OpenGLDisplayDriver.c -symbols $(OBJ)
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32BitmapPrinterDisplayDriver.c: src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec $(OBJ)Win32BitmapPrinterDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/Win32BitmapPrinterDisplayDriver.ec -o $(OBJ)Win32BitmapPrinterDisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef OSX_TARGET
-
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaOpenGLDisplayDriver.c: src/gfx/drivers/CocoaOpenGLDisplayDriver.ec $(OBJ)CocoaOpenGLDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/CocoaOpenGLDisplayDriver.ec -o $(OBJ)CocoaOpenGLDisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleDisplayDriver.c: src/gfx/drivers/Win32ConsoleDisplayDriver.ec $(OBJ)Win32ConsoleDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/Win32ConsoleDisplayDriver.ec -o $(OBJ)Win32ConsoleDisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32PrinterDisplayDriver.c: src/gfx/drivers/Win32PrinterDisplayDriver.ec $(OBJ)Win32PrinterDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/Win32PrinterDisplayDriver.ec -o $(OBJ)Win32PrinterDisplayDriver.c -symbols $(OBJ)
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(LINUX_TARGET)" ""
 $(OBJ)XDisplayDriver.c: src/gfx/drivers/XDisplayDriver.ec $(OBJ)XDisplayDriver.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gfx/drivers/XDisplayDriver.ec -o $(OBJ)XDisplayDriver.c -symbols $(OBJ)
-
 endif
 
 $(OBJ)Bitmap.c: src/gfx/Bitmap.ec $(OBJ)Bitmap.sym | $(SYMBOLS)
@@ -1306,42 +1258,34 @@ $(OBJ)ReplaceDialog.c: src/gui/dialogs/ReplaceDialog.ec $(OBJ)ReplaceDialog.sym
 $(OBJ)WindowList.c: src/gui/dialogs/WindowList.ec $(OBJ)WindowList.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/dialogs/WindowList.ec -o $(OBJ)WindowList.c -symbols $(OBJ)
 
-ifdef OSX_TARGET
-
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaDispatch.c: src/gui/drivers/cocoa/CocoaDispatch.ec $(OBJ)CocoaDispatch.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/cocoa/CocoaDispatch.ec -o $(OBJ)CocoaDispatch.c -symbols $(OBJ)
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaInterface.c: src/gui/drivers/cocoa/CocoaInterface.ec $(OBJ)CocoaInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/cocoa/CocoaInterface.ec -o $(OBJ)CocoaInterface.c -symbols $(OBJ)
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesInterface.c: src/gui/drivers/NCursesInterface.ec $(OBJ)NCursesInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/NCursesInterface.ec -o $(OBJ)NCursesInterface.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32Interface.c: src/gui/drivers/Win32Interface.ec $(OBJ)Win32Interface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/Win32Interface.ec -o $(OBJ)Win32Interface.c -symbols $(OBJ)
-
 endif
 
-ifdef WINDOWS_TARGET
-
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleInterface.c: src/gui/drivers/Win32ConsoleInterface.ec $(OBJ)Win32ConsoleInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/Win32ConsoleInterface.ec -o $(OBJ)Win32ConsoleInterface.c -symbols $(OBJ)
-
 endif
 
-ifdef LINUX_TARGET
-
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)XInterface.c: src/gui/drivers/XInterface.ec $(OBJ)XInterface.sym | $(SYMBOLS)
        $(ECC) $(CFLAGS) $(CECFLAGS) $(ECFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c src/gui/drivers/XInterface.ec -o $(OBJ)XInterface.c -symbols $(OBJ)
-
 endif
 
 $(OBJ)TVisionSkin.c: src/gui/skins/TVisionSkin.ec $(OBJ)TVisionSkin.sym | $(SYMBOLS)
@@ -1628,17 +1572,25 @@ $(OBJ)harfbuzz-impl.o: src/gfx/drivers/harfbuzz/harfbuzz-impl.c
 $(OBJ)harfbuzz-thai.o: src/gfx/drivers/harfbuzz/harfbuzz-thai.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gfx/drivers/harfbuzz/harfbuzz-thai.c -o $(OBJ)harfbuzz-thai.o
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D8DisplayDriver.o: $(OBJ)Direct3D8DisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Direct3D8DisplayDriver.c -o $(OBJ)Direct3D8DisplayDriver.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Direct3D9DisplayDriver.o: $(OBJ)Direct3D9DisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Direct3D9DisplayDriver.c -o $(OBJ)Direct3D9DisplayDriver.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)DirectDrawDisplayDriver.o: $(OBJ)DirectDrawDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)DirectDrawDisplayDriver.c -o $(OBJ)DirectDrawDisplayDriver.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)GDIDisplayDriver.o: $(OBJ)GDIDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)GDIDisplayDriver.c -o $(OBJ)GDIDisplayDriver.o
+endif
 
 $(OBJ)lfbBlit.o: $(OBJ)lfbBlit.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)lfbBlit.c -o $(OBJ)lfbBlit.o
@@ -1649,26 +1601,38 @@ $(OBJ)lfbConvert.o: $(OBJ)lfbConvert.c
 $(OBJ)LFBDisplayDriver.o: $(OBJ)LFBDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)LFBDisplayDriver.c -o $(OBJ)LFBDisplayDriver.o
 
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesDisplayDriver.o: $(OBJ)NCursesDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)NCursesDisplayDriver.c -o $(OBJ)NCursesDisplayDriver.o
+endif
 
 $(OBJ)OpenGLDisplayDriver.o: $(OBJ)OpenGLDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)OpenGLDisplayDriver.c -o $(OBJ)OpenGLDisplayDriver.o
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32BitmapPrinterDisplayDriver.o: $(OBJ)Win32BitmapPrinterDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Win32BitmapPrinterDisplayDriver.c -o $(OBJ)Win32BitmapPrinterDisplayDriver.o
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaOpenGLDisplayDriver.o: $(OBJ)CocoaOpenGLDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)CocoaOpenGLDisplayDriver.c -o $(OBJ)CocoaOpenGLDisplayDriver.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleDisplayDriver.o: $(OBJ)Win32ConsoleDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Win32ConsoleDisplayDriver.c -o $(OBJ)Win32ConsoleDisplayDriver.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32PrinterDisplayDriver.o: $(OBJ)Win32PrinterDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Win32PrinterDisplayDriver.c -o $(OBJ)Win32PrinterDisplayDriver.o
+endif
 
+ifneq "$(LINUX_TARGET)" ""
 $(OBJ)XDisplayDriver.o: $(OBJ)XDisplayDriver.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)XDisplayDriver.c -o $(OBJ)XDisplayDriver.o
+endif
 
 $(OBJ)Bitmap.o: $(OBJ)Bitmap.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Bitmap.c -o $(OBJ)Bitmap.o
@@ -1769,33 +1733,45 @@ $(OBJ)ReplaceDialog.o: $(OBJ)ReplaceDialog.c
 $(OBJ)WindowList.o: $(OBJ)WindowList.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)WindowList.c -o $(OBJ)WindowList.o
 
-ifdef OSX_TARGET
-
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaDispatch.o: $(OBJ)CocoaDispatch.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)CocoaDispatch.c -o $(OBJ)CocoaDispatch.o
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaEcereBridge.o: src/gui/drivers/cocoa/CocoaEcereBridge.m
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/CocoaEcereBridge.m -o $(OBJ)CocoaEcereBridge.o
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)CocoaInterface.o: $(OBJ)CocoaInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)CocoaInterface.c -o $(OBJ)CocoaInterface.o
+endif
 
+ifneq "$(OSX_TARGET)" ""
 $(OBJ)EcereView.o: src/gui/drivers/cocoa/EcereView.m
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) -c src/gui/drivers/cocoa/EcereView.m -o $(OBJ)EcereView.o
-
 endif
 
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)NCursesInterface.o: $(OBJ)NCursesInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)NCursesInterface.c -o $(OBJ)NCursesInterface.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32Interface.o: $(OBJ)Win32Interface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Win32Interface.c -o $(OBJ)Win32Interface.o
+endif
 
+ifneq "$(WINDOWS_TARGET)" ""
 $(OBJ)Win32ConsoleInterface.o: $(OBJ)Win32ConsoleInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)Win32ConsoleInterface.c -o $(OBJ)Win32ConsoleInterface.o
+endif
 
+ifneq "$(or $(LINUX_TARGET),$(OSX_TARGET))" ""
 $(OBJ)XInterface.o: $(OBJ)XInterface.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)XInterface.c -o $(OBJ)XInterface.o
+endif
 
 $(OBJ)TVisionSkin.o: $(OBJ)TVisionSkin.c
        $(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)TVisionSkin.c -o $(OBJ)TVisionSkin.o
index ab2ecc8..067912a 100755 (executable)
@@ -2711,32 +2711,19 @@ private:
 
          f.Puts("# SYMBOL RULES\n");
          f.Puts("\n");
-         {
-            Map<Platform, bool> excludedPlatforms { };
-            topNode.GenMakefilePrintSymbolRules(f, this, config, excludedPlatforms,
-                  nodeCFlagsMapping, nodeECFlagsMapping);
-            delete excludedPlatforms;
-         }
+
+         topNode.GenMakefilePrintSymbolRules(f, this, config, nodeCFlagsMapping, nodeECFlagsMapping);
 
          f.Puts("# C OBJECT RULES\n");
          f.Puts("\n");
-         {
-            Map<Platform, bool> excludedPlatforms { };
-            topNode.GenMakefilePrintCObjectRules(f, this, config, excludedPlatforms,
-                  nodeCFlagsMapping, nodeECFlagsMapping);
-            delete excludedPlatforms;
-         }
+
+         topNode.GenMakefilePrintCObjectRules(f, this, config, nodeCFlagsMapping, nodeECFlagsMapping);
 
          f.Puts("# OBJECT RULES\n");
          f.Puts("\n");
          // todo call this still but only generate rules whith specific options
          // see we-have-file-specific-options in ProjectNode.ec
-         {
-            Map<Platform, bool> excludedPlatforms { };
-            topNode.GenMakefilePrintObjectRules(f, this, namesInfo, config, excludedPlatforms,
-                  nodeCFlagsMapping, nodeECFlagsMapping);
-            delete excludedPlatforms;
-         }
+         topNode.GenMakefilePrintObjectRules(f, this, namesInfo, config, nodeCFlagsMapping, nodeECFlagsMapping);
 
          if(numCObjects)
             GenMakefilePrintMainObjectRule(f, config);
@@ -2874,13 +2861,12 @@ private:
          {
 #endif
             f.Puts("$(OBJ)$(MODULE).main$(O): $(OBJ)$(MODULE).main.c\n");
+            f.Printf("\t$(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.%s -o $(OBJ)$(MODULE).main$(O)\n", extension);
+            f.Puts("\n");
 #if 0
          }
       }
 #endif
-
-      f.Printf("\t$(CC) $(CFLAGS) $(PRJ_CFLAGS) $(FVISIBILITY) -c $(OBJ)$(MODULE).main.%s -o $(OBJ)$(MODULE).main$(O)\n", extension);
-      f.Puts("\n");
    }
 
    void GenMakePrintCustomFlags(File f, String variableName, bool printNonCustom, Map<String, int> cflagsVariations)
index eaa49e8..0b70871 100755 (executable)
@@ -383,6 +383,34 @@ private:
    // This is only set for Top Nodes
    Project project;
 
+   void OpenRulesPlatformExclusionIfs(File f, int * ifCount, Array<Platform> platforms)
+   {
+      if(!platforms.Find(unknown))  // unknown is "Common"
+      {
+         // e.g. ifneq "$(or $(or $(OSX_TARGET),$(LINUX_TARGET)),$(WINDOWS_TARGET))"
+         int i = 0;
+         f.Puts("ifneq \"");
+         for(i = 0; i < platforms.count - 1; i++)
+            f.Puts("$(or ");
+         i = 0;
+         for(p : platforms)
+         {
+            if(i > 0)
+               f.Puts(",");
+            f.Puts("$(");
+            f.Puts(PlatformToMakefileTargetVariable(p));
+            f.Puts(")");
+            if(i > 0)
+               f.Puts(")");
+            i++;
+         }
+         f.Puts("\" \"\"\n");
+         (*ifCount)++;
+      }
+      else
+         *ifCount = 0;
+   }
+
    ProjectConfig GetMatchingNodeConfig(ProjectConfig prjConfig)
    {
       ProjectConfig nodeConfig = null;
@@ -1377,11 +1405,11 @@ private:
    }
 
    void GenMakefilePrintSymbolRules(File f, Project project,
-         ProjectConfig prjConfig, Map<Platform, bool> parentExcludedPlatforms,
+         ProjectConfig prjConfig, //Map<Platform, bool> parentExcludedPlatforms,
          Map<int, int> nodeCFlagsMapping, Map<int, int> nodeECFlagsMapping)
    {
       int ifCount = 0;
-      Array<Platform> platforms = GetPlatformsArrayFromExcluisionInfo(prjConfig);
+      Array<Platform> platforms = GetPlatformsArrayFromExclusionInfo(prjConfig);
       //ProjectNode child;
       //char objDir[MAX_LOCATION];
       //ReplaceSpaces(objDir, config.objDir.dir);
@@ -1405,6 +1433,7 @@ private:
             ReplaceSpaces(modulePath, path);
             if(modulePath[0]) strcat(modulePath, SEPS);
 
+            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms);
 #if 0
             // *** Dependency command ***
             sprintf(command, "gcc -MT $(OBJ)%s.o -MM %s%s.%s", moduleName,
@@ -1475,29 +1504,25 @@ private:
                if(!result)
                {
 #endif
-               OpenRulesPlatformExclusionIfs(f, &ifCount, platforms[0], parentExcludedPlatforms, null);
                   f.Printf("$(OBJ)%s.sym: %s%s.%s\n",
                      moduleName, modulePath, moduleName, extension);
-#if 0
-               }
-            }
-#endif
-         /*
-            f.Printf("\t$(ECP) %s%s.%s %s.sym\n\n",
-               modulePath, moduleName, extension, moduleName);
-            */
 
-            f.Puts("\t$(ECP)");
+                  f.Puts("\t$(ECP)");
 
-            f.Puts(" $(CFLAGS)");
-            f.Puts(" $(CECFLAGS)"); // tocheck: what of this? should this stuff be per-file customized?
+                  f.Puts(" $(CFLAGS)");
+                  f.Puts(" $(CECFLAGS)"); // tocheck: what of this? should this stuff be per-file customized?
 
-            GenMakePrintNodeFlagsVariable(this, nodeECFlagsMapping, "ECFLAGS", f);
-            GenMakePrintNodeFlagsVariable(this, nodeCFlagsMapping, "PRJ_CFLAGS", f);
+                  GenMakePrintNodeFlagsVariable(this, nodeECFlagsMapping, "ECFLAGS", f);
+                  GenMakePrintNodeFlagsVariable(this, nodeCFlagsMapping, "PRJ_CFLAGS", f);
 
-            f.Printf(" -c %s%s.%s -o $(OBJ)%s.sym\n\n",
-               modulePath, moduleName, extension, moduleName);
-            CloseRulesPlatformExclusionIfs(f, ifCount);
+                  f.Printf(" -c %s%s.%s -o $(OBJ)%s.sym\n",
+                     modulePath, moduleName, extension, moduleName);
+                  if(ifCount) f.Puts("endif\n");
+                  f.Puts("\n");
+#if 0
+               }
+            }
+#endif
          }
       }
       if(files)
@@ -1516,32 +1541,24 @@ private:
          }
          if(needed)
          {
-            Map<Platform, bool> excludedPlatforms { };
-            for(mn : parentExcludedPlatforms) if(mn) excludedPlatforms[&mn] = true;
-            for(platform : platforms)
+            for(child : files)
             {
-               OpenRulesPlatformExclusionIfs(f, &ifCount, platform, parentExcludedPlatforms, excludedPlatforms);
-               for(child : files)
-               {
-                  if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
-                     child.GenMakefilePrintSymbolRules(f, project, prjConfig, excludedPlatforms,
-                           nodeCFlagsMapping, nodeECFlagsMapping);
-               }
+               if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
+                  child.GenMakefilePrintSymbolRules(f, project, prjConfig, /*excludedPlatforms,*/
+                        nodeCFlagsMapping, nodeECFlagsMapping);
             }
-            CloseRulesPlatformExclusionIfs(f, ifCount);
-            delete excludedPlatforms;
          }
       }
       delete platforms;
    }
 
    void GenMakefilePrintPrepecsRules(File f, Project project,
-         ProjectConfig prjConfig, Map<Platform, bool> parentExcludedPlatforms,
+         ProjectConfig prjConfig, /*Map<Platform, bool> parentExcludedPlatforms,*/
          Map<int, int> nodeCFlagsMapping, Map<int, int> nodeECFlagsMapping)
    {
       int ifCount = 0;
       ProjectConfig config = GetMatchingNodeConfig(prjConfig);
-      Array<Platform> platforms = GetPlatformsArrayFromExcluisionInfo(prjConfig);
+      Array<Platform> platforms = GetPlatformsArrayFromExclusionInfo(prjConfig);
       //ProjectNode child;
       //char objDir[MAX_LOCATION];
       //ReplaceSpaces(objDir, config.objDir.dir);
@@ -1565,7 +1582,7 @@ private:
             ReplaceSpaces(modulePath, path);
             if(modulePath[0]) strcat(modulePath, SEPS);
 
-            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms[0], parentExcludedPlatforms, null);
+            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms);
             f.Printf("$(OBJ)%s$(EC): %s%s.%s\n",
                moduleName, modulePath, moduleName, extension);
             //$(CPP) -x c -E ../extras/gui/controls/DirectoriesBox.ec -o $(OBJ)DirectoriesBox$(EC)
@@ -1579,9 +1596,10 @@ private:
             //GenMakePrintNodeFlagsVariable(this, nodeECFlagsMapping, "ECFLAGS", f);
             GenMakePrintNodeFlagsVariable(this, nodeCFlagsMapping, "PRJ_CFLAGS", f);
 
-            f.Printf(" -x c -E %s%s.%s -o $(OBJ)%s$(EC)\n\n",
+            f.Printf(" -x c -E %s%s.%s -o $(OBJ)%s$(EC)\n",
                modulePath, moduleName, extension, moduleName);
-            CloseRulesPlatformExclusionIfs(f, ifCount);
+            if(ifCount) f.Puts("endif\n");
+            f.Puts("\n");
          }
       }
       if(files)
@@ -1600,32 +1618,24 @@ private:
          }
          if(needed)
          {
-            Map<Platform, bool> excludedPlatforms { };
-            for(mn : parentExcludedPlatforms) if(mn) excludedPlatforms[&mn] = true;
-            for(platform : platforms)
+            for(child : files)
             {
-               OpenRulesPlatformExclusionIfs(f, &ifCount, platform, parentExcludedPlatforms, excludedPlatforms);
-               for(child : files)
-               {
-                  if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
-                     child.GenMakefilePrintPrepecsRules(f, project, prjConfig, excludedPlatforms,
-                           nodeCFlagsMapping, nodeECFlagsMapping);
-               }
+               if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
+                  child.GenMakefilePrintPrepecsRules(f, project, prjConfig, /*excludedPlatforms,*/
+                        nodeCFlagsMapping, nodeECFlagsMapping);
             }
-            CloseRulesPlatformExclusionIfs(f, ifCount);
-            delete excludedPlatforms;
          }
       }
       delete platforms;
    }
 
    void GenMakefilePrintCObjectRules(File f, Project project,
-      ProjectConfig prjConfig, Map<Platform, bool> parentExcludedPlatforms,
+      ProjectConfig prjConfig, /*Map<Platform, bool> parentExcludedPlatforms,*/
       Map<int, int> nodeCFlagsMapping, Map<int, int> nodeECFlagsMapping)
    {
       int ifCount = 0;
       ProjectConfig config = GetMatchingNodeConfig(prjConfig);
-      Array<Platform> platforms = GetPlatformsArrayFromExcluisionInfo(prjConfig);
+      Array<Platform> platforms = GetPlatformsArrayFromExclusionInfo(prjConfig);
       //ProjectNode child;
       //char objDir[MAX_LOCATION];
       //ReplaceSpaces(objDir, config.objDir.dir);
@@ -1648,6 +1658,7 @@ private:
             ReplaceSpaces(modulePath, path);
             if(modulePath[0]) strcat(modulePath, SEPS);
 
+            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms);
 #if 0
             // *** Dependency command ***
             sprintf(command, "gcc -MT $(OBJ)%s.o -MM %s%s.%s",
@@ -1722,7 +1733,6 @@ private:
                      moduleName, modulePath, moduleName, extension);
                   */
 #endif
-            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms[0], parentExcludedPlatforms, null);
                   f.Printf("$(OBJ)%s.c: %s%s.%s $(OBJ)%s.sym | $(SYMBOLS)\n",
                      moduleName, modulePath, moduleName, extension, moduleName);
 #if 0
@@ -1742,9 +1752,10 @@ private:
             GenMakePrintNodeFlagsVariable(this, nodeCFlagsMapping, "PRJ_CFLAGS", f);
             f.Puts(" $(FVISIBILITY)");
 
-            f.Printf(" -c %s%s.%s -o $(OBJ)%s.c -symbols $(OBJ)\n\n",
+            f.Printf(" -c %s%s.%s -o $(OBJ)%s.c -symbols $(OBJ)\n",
                modulePath, moduleName, extension, moduleName);
-            CloseRulesPlatformExclusionIfs(f, ifCount);
+            if(ifCount) f.Puts("endif\n");
+            f.Puts("\n");
          }
       }
       if(files)
@@ -1763,20 +1774,12 @@ private:
          }
          if(needed)
          {
-            Map<Platform, bool> excludedPlatforms { };
-            for(mn : parentExcludedPlatforms) if(mn) excludedPlatforms[&mn] = true;
-            for(platform : platforms)
+            for(child : files)
             {
-               OpenRulesPlatformExclusionIfs(f, &ifCount, platform, parentExcludedPlatforms, excludedPlatforms);
-               for(child : files)
-               {
-                  if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
-                     child.GenMakefilePrintCObjectRules(f, project, prjConfig, excludedPlatforms,
-                           nodeCFlagsMapping, nodeECFlagsMapping);
-               }
+               if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
+                  child.GenMakefilePrintCObjectRules(f, project, prjConfig, /*excludedPlatforms,*/
+                        nodeCFlagsMapping, nodeECFlagsMapping);
             }
-            CloseRulesPlatformExclusionIfs(f, ifCount);
-            delete excludedPlatforms;
          }
       }
       delete platforms;
@@ -1785,12 +1788,12 @@ private:
    void GenMakefilePrintObjectRules(File f, Project project,
       Map<String, NameCollisionInfo> namesInfo,
       ProjectConfig prjConfig,
-      Map<Platform, bool> parentExcludedPlatforms,
+      //Map<Platform, bool> parentExcludedPlatforms,
       Map<int, int> nodeCFlagsMapping, Map<int, int> nodeECFlagsMapping)
    {
       int ifCount = 0;
       ProjectConfig config = GetMatchingNodeConfig(prjConfig);
-      Array<Platform> platforms = GetPlatformsArrayFromExcluisionInfo(prjConfig);
+      Array<Platform> platforms = GetPlatformsArrayFromExclusionInfo(prjConfig);
       //ProjectNode child;
       //char objDir[MAX_LOCATION];
       //ReplaceSpaces(objDir, config.objDir.dir);
@@ -1830,11 +1833,15 @@ private:
                sprintf(command, "%s -MT $(OBJ)%s.o -MM %s%s.%s", (!strcmpi(extension, "cc") || !strcmpi(extension, "cxx") || !strcmpi(extension, "cpp")) ? "$(CXX)" : "$(CC)",
                   moduleName, modulePath, moduleName, extension);
 
+            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms);
+            /*
+#if 0
             if(!strcmpi(extension, "ec"))
+            {
                f.Printf("$(OBJ)%s.o: $(OBJ)%s.c\n", moduleName, moduleName);
+            }
             else
             {
-#if 0
                // System Includes (from global settings)
                for(item : compiler.dirs[includes])
                {
@@ -1900,31 +1907,31 @@ private:
                   // If we failed to generate dependencies...
                   if(!result)
                   {
-#endif
-            OpenRulesPlatformExclusionIfs(f, &ifCount, platforms[0], parentExcludedPlatforms, null);
 
-                     /*if(!strcmpi(extension, "ec"))
-                        f.Printf("$(OBJ)%s.o: $(OBJ)%s.c\n", moduleName, moduleName);
-                     else*/
-                        f.Printf("$(OBJ)%s%s%s.o: %s%s.%s\n", moduleName, 
-                              collision ? "." : "", collision ? extension : "", modulePath, moduleName, extension);
-#if 0
                   }
                }
-#endif
             }
+#endif
+         */
+            if(!strcmpi(extension, "ec"))
+               f.Printf("$(OBJ)%s.o: $(OBJ)%s.c\n", moduleName, moduleName);
+            else
+               f.Printf("$(OBJ)%s%s%s.o: %s%s.%s\n", moduleName, 
+                     collision ? "." : "", collision ? extension : "", modulePath, moduleName, extension);
             f.Printf("\t$(%s)", (!strcmpi(extension, "cc") || !strcmpi(extension, "cpp") || !strcmpi(extension, "cxx")) ? "CXX" : "CC");
 
             f.Puts(" $(CFLAGS)");
             GenMakePrintNodeFlagsVariable(this, nodeCFlagsMapping, "PRJ_CFLAGS", f);
 
             if(!strcmpi(extension, "ec"))
-               f.Printf(" $(FVISIBILITY) -c $(OBJ)%s.c -o $(OBJ)%s.o\n\n", moduleName, moduleName);
+               f.Printf(" $(FVISIBILITY) -c $(OBJ)%s.c -o $(OBJ)%s.o\n", moduleName, moduleName);
             else
-               f.Printf(" -c %s%s.%s -o $(OBJ)%s%s%s.o\n\n",
+               f.Printf(" -c %s%s.%s -o $(OBJ)%s%s%s.o\n",
                      modulePath, moduleName, !strcmpi(extension, "ec") ? "c" : extension, moduleName,
                      collision ? "." : "", collision ? extension : "");
-            CloseRulesPlatformExclusionIfs(f, ifCount);
+
+            if(ifCount) f.Puts("endif\n");
+            f.Puts("\n");
          }
       }
       if(files)
@@ -1940,20 +1947,12 @@ private:
          }
          if(needed)
          {
-            Map<Platform, bool> excludedPlatforms { };
-            for(mn : parentExcludedPlatforms) if(mn) excludedPlatforms[&mn] = true;
-            for(platform : platforms)
+            for(child : files)
             {
-               OpenRulesPlatformExclusionIfs(f, &ifCount, platform, parentExcludedPlatforms, excludedPlatforms);
-               for(child : files)
-               {
-                  if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
-                     child.GenMakefilePrintObjectRules(f, project, namesInfo, prjConfig, excludedPlatforms,
-                           nodeCFlagsMapping, nodeECFlagsMapping);
-               }
+               if(child.type != resources && (child.type == folder || !child.GetIsExcluded(prjConfig)))
+                  child.GenMakefilePrintObjectRules(f, project, namesInfo, prjConfig, /*excludedPlatforms,*/
+                        nodeCFlagsMapping, nodeECFlagsMapping);
             }
-            CloseRulesPlatformExclusionIfs(f, ifCount);
-            delete excludedPlatforms;
          }
       }
       delete platforms;
@@ -2220,7 +2219,7 @@ private:
       }
    }
 
-   Array<Platform> GetPlatformsArrayFromExcluisionInfo(ProjectConfig prjConfig)
+   Array<Platform> GetPlatformsArrayFromExclusionInfo(ProjectConfig prjConfig)
    {
       Array<Platform> platforms { };
       Map<Platform, SetBool> exclusionInfo { };
@@ -2900,28 +2899,3 @@ class NameCollisionInfo
      return colliding;
    }
 }
-
-static inline void OpenRulesPlatformExclusionIfs(File f, int * ifCount, Platform platform,
-      Map<Platform, bool> parentExcludedPlatforms, Map<Platform, bool> excludedPlatforms)
-{
-   if(platform != unknown && !parentExcludedPlatforms[platform])
-   {
-      if(*ifCount)             // we really need a if defined(a) || defined(b) here
-         f.Puts("else\n");     // instead of repeating the rules for each platform
-      (*ifCount)++;            // hmm... what?
-      f.Printf("ifdef %s\n\n", PlatformToMakefileTargetVariable(platform));
-      if(excludedPlatforms)
-         excludedPlatforms[platform] = true;
-   }
-}
-
-static inline void CloseRulesPlatformExclusionIfs(File f, int ifCount)
-{
-   if(ifCount)
-   {
-      int c;
-      for(c = 0; c < ifCount; c++)
-         f.Puts("endif\n");
-      f.Puts("\n");
-   }
-}