diff --git a/src/conio/Common.gmake b/src/conio/Common.gmake
index 61dcfcfc5b294ec9351dcd65cfb83dc52a8fe55f..64f1f06939d6808467531dc9d8d8a7dd874909d6 100644
--- a/src/conio/Common.gmake
+++ b/src/conio/Common.gmake
@@ -43,7 +43,7 @@ ifdef USE_SDL
    ifeq ($(os),darwin)
     CIOLIB-MT_CFLAGS	+=	-DWITH_SDL
     CIOLIB-MT_CFLAGS	+=	-I/Library/Frameworks/SDL.framework/Headers
-    CIOLIB-MT_LIBS	+=	$(SRC_ROOT)$(DIRSEP)conio$(DIRSEP)SDLMain.m -framework SDL -framework Cocoa -I/Library/Frameworks/SDL.framework/Headers
+    CIOLIB-MT_LIBS	+=	-framework SDL -framework Cocoa -I/Library/Frameworks/SDL.framework/Headers
    endif
   endif
  endif
diff --git a/src/conio/GNUmakefile b/src/conio/GNUmakefile
index 59c6ba9dcdf620a818577ae74063e230c0826f59..1f846dd18203868e09811dd55b5e404921d09a46 100644
--- a/src/conio/GNUmakefile
+++ b/src/conio/GNUmakefile
@@ -21,6 +21,18 @@ ifeq ($(os),netbsd)
  CFLAGS	+=	-DN_CURSES_LIB
 endif
 
+ifeq ($(os),darwin)
+ ifdef WITH_SDL
+  OBJS	+=	$(MTOBJODIR)$(DIRSEP)SDLMain$(OFILE)
+ endif
+endif
+
+ifeq ($(os),darwin)
+$(MTOBJODIR)$(DIRSEP)SDLMain$(OFILE): SDLMain.m
+	@echo $(COMPILE_MSG) $<
+	$(QUIET)$(CC) $(CFLAGS) $(CCFLAGS) -o $@ -c $<
+endif
+
 $(MTOBJODIR)$(DIRSEP)console$(OFILE).static:
 	$(QUIET)$(DELETE) $(MTOBJODIR)$(DIRSEP)console$(OFILE)*
 	$(QUIET)touch $(MTOBJODIR)$(DIRSEP)console$(OFILE).static