diff --git a/CMakeLists.txt b/CMakeLists.txt
index c55d63e69ae2398ada9fae44bb414d610b6f7d31..0cffa367ecdfe4ad8dd473a4a216e371bd231b89 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,8 +1,6 @@
 #
 # Simple CMakeLists for Sonic Robo Blast 2
 #
-# Tweaked for FreeBSD, but should be extendable to support other systems
-#
 PROJECT(SRB2)
 
 CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
@@ -19,9 +17,8 @@ FIND_PACKAGE(PNG)
 #
 
 # not added defines:
-# -DUSEASM - unportable assembler not needed
 # -DHAVE_PNG - does not build (incorrect use of PNG_EXPORT etc.)
-ADD_DEFINITIONS(-DDIRECTFULLSCREEN -DSDL -DHAVE_MIXER -DNOHW -DHW3SOUND -DHAVE_BLUA)
+ADD_DEFINITIONS(-DDIRECTFULLSCREEN -DSDL -DHAVE_MIXER -DNOHW -DHW3SOUND -DHAVE_BLUA -DNOASM)
 
 SET(SDL_DIR sdl) # may be set to SDL2 optionally
 
@@ -145,15 +142,24 @@ SET(COMMON_SRCS
 #
 # Platform-specific stuff
 #
+
+MACRO(EXTRALIB NAME)
+	FIND_LIBRARY(${NAME}_LIBRARY NAMES ${NAME})
+	IF(${NAME}_LIBRARY)
+		MESSAGE(STATUS "Found lib${NAME}: ${${NAME}_LIBRARY}")
+		SET(EXTRA_LIBRARIES ${EXTRA_LIBRARIES} ${${NAME}_LIBRARY})
+	ELSE(${NAME}_LIBRARY)
+		MESSAGE(FATAL_ERROR "Could not find lib${NAME}!")
+	ENDIF(${NAME}_LIBRARY)
+ENDMACRO(EXTRALIB)
+
 IF(${CMAKE_SYSTEM} MATCHES "FreeBSD")
-	FIND_LIBRARY(KVM_LIBRARY NAMES kvm)
-	IF(KVM_LIBRARY)
-		MESSAGE(STATUS "Found libkvm: ${KVM_LIBRARY}")
-		SET(EXTRA_LIBRARIES ${EXTRA_LIBRARIES} ${KVM_LIBRARY})
-	ELSE(KVM_LIBRARY)
-		MESSAGE(FATAL_ERROR "Could not find libkvm!")
-	ENDIF(KVM_LIBRARY)
 	ADD_DEFINITIONS(-DUNIXCOMMON -DLINUX -DFREEBSD)
+	EXTRALIB(kvm)
+ELSEIF(${CMAKE_SYSTEM} MATCHES "Linux")
+	ADD_DEFINITIONS(-DUNIXCOMMON -DLINUX)
+	EXTRALIB(m)
+	EXTRALIB(rt)
 ELSE(${CMAKE_SYSTEM} MATCHES "FreeBSD")
 	ADD_DEFINITIONS(-DUNIXCOMMON -DLINUX)
 	MESSAGE(WARNING "No specific settings for you system, it may be not supported!")