diff --git a/.travis.yml b/.travis.yml
index 5815e711f1611f76ea7b395a093730ff46ebaffa..df89593c4ab62be3b9bd89c2d83162491bf58eee 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -2,8 +2,9 @@ language: c
 sudo: required
 dist: trusty
 
-env:
-- CFLAGS=-Wno-absolute-value -Werror
+os:
+  - linux
+  - osx
 
 compiler:
   - gcc
@@ -32,4 +33,10 @@ before_script:
   - cd build
   - cmake ..
 
+before_install:
+  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
+  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install sdl2_mixer game-music-emu p7zip ; fi
+  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -O -L https://www.libsdl.org/release/SDL2-2.0.4.dmg; hdiutil attach SDL2-2.0.4.dmg; sudo cp -a /Volumes/SDL2/SDL2.framework /Library/Frameworks/; fi
+  - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then curl -O -L https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.dmg; hdiutil attach SDL2_mixer-2.0.1.dmg; sudo cp -a /Volumes/SDL2_mixer/SDL2_mixer.framework /Library/Frameworks/; fi
+
 script: make
diff --git a/src/doomtype.h b/src/doomtype.h
index 8e7da6881df87beb351470bbc1d6bfb01fead98a..d833176f780d32f9dd357ed0bbf9850b06830b68 100644
--- a/src/doomtype.h
+++ b/src/doomtype.h
@@ -94,7 +94,6 @@ typedef long ssize_t;
 #ifdef __APPLE_CC__
 #define DIRECTFULLSCREEN
 #define DEBUG_LOG
-#define HWRENDER
 #define NOIPX
 #endif
 
diff --git a/src/md5.c b/src/md5.c
index aeaac2cdee6d5421e0c8c391b0da3246351f6e31..ba89c499b11ba6875e3420b450444ef365ac96ff 100644
--- a/src/md5.c
+++ b/src/md5.c
@@ -36,7 +36,7 @@
  #include <stdlib.h>
 #else
  #ifndef HAVE_MEMCPY
-  #if !((defined (_WIN32) || defined (_WIN32_WCE)) && !defined (__CYGWIN__))
+  #if !((defined (_WIN32) || defined (_WIN32_WCE)) && !defined (__CYGWIN__)) && !defined (__APPLE__)
    #define memcpy(d, s, n) bcopy ((s), (d), (n))
   #endif
  #endif
diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt
index 7190efaac6ec08b8e25bc4b1372fc1f4cc7afb4b..7f6771262dcbd2415639f41d20ad7a15a3092da4 100644
--- a/src/sdl/CMakeLists.txt
+++ b/src/sdl/CMakeLists.txt
@@ -117,11 +117,12 @@ if(${SDL2_FOUND})
 	add_executable(SRB2SDL2 MACOSX_BUNDLE WIN32 ${SRB2_SDL2_TOTAL_SOURCES})
 	set_target_properties(SRB2SDL2 PROPERTIES OUTPUT_NAME ${SRB2_SDL2_EXE_NAME})
 
-	if((CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang"))
-		add_framework(CoreFoundation SRB2SDL2)
-		add_framework(SDL2 SRB2SDL2)
-		add_framework(SDL2_mixer SRB2SDL2)
+	if(${CMAKE_SYSTEM} MATCHES Darwin)
+		find_library(CORE_LIB CoreFoundation)
 		target_link_libraries(SRB2SDL2 PRIVATE
+			${CORE_LIB}
+			SDL2
+			SDL2_mixer
 			${GME_LIBRARIES}
 			${PNG_LIBRARIES}
 			${ZLIB_LIBRARIES}
@@ -227,7 +228,7 @@ if(${SDL2_FOUND})
 	endif()
 
 	#### Installation ####
-	if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+	if(${CMAKE_SYSTEM} MATCHES Darwin)
 		install(TARGETS SRB2SDL2
 			BUNDLE DESTINATION .
 		)
@@ -268,7 +269,7 @@ if(${SDL2_FOUND})
 
 
 	# Mac bundle fixup
-	if (CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
+	if(${CMAKE_SYSTEM} MATCHES Darwin)
 		install(CODE "
 			include(BundleUtilities)
 			fixup_bundle(\"${CMAKE_INSTALL_PREFIX}/Sonic Robo Blast 2.app\"
diff --git a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj
index 98599fb60b7ad0a89046d317f63292bc461dbae3..c3f0d3b38ca398116070f687881a551969feefbb 100644
--- a/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj
+++ b/src/sdl/macosx/Srb2mac.xcodeproj/project.pbxproj
@@ -1270,6 +1270,7 @@
 					HAVE_BLUA,
 					LUA_USE_POSIX,
 					COMPVERSION,
+					HWRENDER,
 				);
 				GCC_THREADSAFE_STATICS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
@@ -1392,6 +1393,7 @@
 					HAVE_BLUA,
 					LUA_USE_POSIX,
 					COMPVERSION,
+					HWRENDER,
 				);
 				GCC_THREADSAFE_STATICS = NO;
 				GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS = YES;
diff --git a/src/string.c b/src/string.c
index 436757309d96845a8e516e95326132261031fc25..19540547c937bf49b1f8eb755f14f9a87830322d 100644
--- a/src/string.c
+++ b/src/string.c
@@ -15,6 +15,8 @@
 #include <string.h>
 #include "doomdef.h"
 
+#if !defined (__APPLE__)
+
 // Like the OpenBSD version, but it doesn't check for src not being a valid
 // C string.
 size_t strlcat(char *dst, const char *src, size_t siz)
@@ -46,3 +48,5 @@ size_t strlcpy(char *dst, const char *src, size_t siz)
 	dst[0] = '\0';
 	return strlcat(dst, src, siz);
 }
+
+#endif