diff --git a/CMakeLists.txt b/CMakeLists.txt
index bc764fc874bcca07461a732d9e0846482b5c28f4..6f901d3d79e44eee1cc1453a4eedd5e2e7ca1caf 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -117,8 +117,6 @@ set(SRB2_SDL2_EXE_NAME srb2 CACHE STRING "Executable binary output name")
 
 include_directories(${CMAKE_CURRENT_BINARY_DIR}/src)
 
-add_executable(SRB2SDL2 MACOSX_BUNDLE WIN32)
-
 add_subdirectory(src)
 add_subdirectory(assets)
 
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 0148d605f4cee14b60d12d204cfe624781466184..3b690a20a1d596a53f390c651355580a5c289f5d 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,5 +1,7 @@
 # SRB2 Core
 
+add_executable(SRB2SDL2 MACOSX_BUNDLE WIN32)
+
 # Core sources
 target_sourcefile(c)
 target_sources(SRB2SDL2 PRIVATE comptime.c md5.c config.h)
@@ -206,9 +208,13 @@ if(${SRB2_CONFIG_USEASM})
 		set(CMAKE_ASM_NASM_FLAGS "${SRB2_ASM_FLAGS}" CACHE STRING "Flags used by the assembler during all build types.")
 		enable_language(ASM_NASM)
 	endif()
+
 	set(SRB2_USEASM ON)
 	target_compile_definitions(SRB2SDL2 PRIVATE -DUSEASM)
 	set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse3 -mfpmath=sse")
+
+	target_sources(SRB2SDL2 PRIVATE ${SRB2_ASM_SOURCES}
+		${SRB2_NASM_SOURCES})
 else()
 	set(SRB2_USEASM OFF)
 	target_compile_definitions(SRB2SDL2 PRIVATE -DNONX86 -DNORUSEASM)
diff --git a/src/sdl/CMakeLists.txt b/src/sdl/CMakeLists.txt
index a1d55ad4d8d4713d9cc793f6d093ea91155a6610..4f19d93dff20c791d6b031fa18c1ab9f5efe0c71 100644
--- a/src/sdl/CMakeLists.txt
+++ b/src/sdl/CMakeLists.txt
@@ -56,8 +56,6 @@ endif()
 
 if(${SDL2_FOUND})
 	if(${SRB2_USEASM})
-		target_sources(SRB2SDL2 PRIVATE ${SRB2_ASM_SOURCES}
-			${SRB2_NASM_SOURCES})
 		set_source_files_properties(${SRB2_ASM_SOURCES} PROPERTIES LANGUAGE C)
 		set_source_files_properties(${SRB2_ASM_SOURCES} PROPERTIES COMPILE_FLAGS "-x assembler-with-cpp")
 	endif()