nitg: use libgc only if platform supports it
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 13 Jun 2014 22:09:32 +0000 (18:09 -0400)
committerAlexis Laferrière <alexis.laf@xymus.net>
Mon, 16 Jun 2014 16:09:22 +0000 (12:09 -0400)
Signed-off-by: Alexis Laferrière <alexis.laf@xymus.net>

src/abstract_compiler.nit
src/platform.nit

index 0093e60..c1078af 100644 (file)
@@ -202,8 +202,12 @@ class MakefileToolchain
        do
                if self.toolcontext.opt_stacktrace.value == "nitstack" then compiler.build_c_to_nit_bindings
 
+               var platform = compiler.mainmodule.target_platform
+               var cc_opt_with_libgc = "-DWITH_LIBGC"
+               if platform != null and not platform.supports_libgc then cc_opt_with_libgc = ""
+
                # Add gc_choser.h to aditionnal bodies
-               var gc_chooser = new ExternCFile("gc_chooser.c", "-DWITH_LIBGC")
+               var gc_chooser = new ExternCFile("gc_chooser.c", cc_opt_with_libgc)
                compiler.extern_bodies.add(gc_chooser)
                compiler.files_to_copy.add "{cc_paths.first}/gc_chooser.c"
                compiler.files_to_copy.add "{cc_paths.first}/gc_chooser.h"
index 17257f5..3c5367f 100644 (file)
@@ -113,6 +113,8 @@ end
 abstract class Platform
        fun supports_libunwind: Bool do return true
 
+       fun supports_libgc: Bool do return true
+
        # Does this platform declare its own main function? If so, we won't generate one in Nit.
        fun no_main: Bool do return false
 end