Skip to content

Commit 56d7ea7

Browse files
author
Icer
committed
MetalNES - v1.0
1 parent 679058a commit 56d7ea7

File tree

3,167 files changed

+920341
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,167 files changed

+920341
-0
lines changed

CMakeLists.txt

+203
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
2+
cmake_minimum_required(VERSION 3.1)
3+
4+
set(CMAKE_CXX_STANDARD 17)
5+
set(CMAKE_CXX_STANDARD_REQUIRED ON)
6+
set(CMAKE_CXX_EXTENSIONS OFF)
7+
8+
set(CMAKE_BUILD_TYPE RelWithDebInfo )
9+
10+
project(MetalNes LANGUAGES C CXX)
11+
12+
13+
set(APP_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/app)
14+
set(COMMON_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/source)
15+
set(EXTERNAL_DIR ${CMAKE_CURRENT_SOURCE_DIR}/external)
16+
set(IMGUI_SOURCE_DIR ${EXTERNAL_DIR}/imgui)
17+
set(DATA_DIR ${CMAKE_CURRENT_SOURCE_DIR}/data)
18+
19+
20+
21+
add_subdirectory(${EXTERNAL_DIR}/hlsl2glslfork)
22+
23+
24+
25+
set(IMGUI_SOURCE
26+
${IMGUI_SOURCE_DIR}/imgui.cpp
27+
${IMGUI_SOURCE_DIR}/imgui_draw.cpp
28+
${IMGUI_SOURCE_DIR}/imgui_widgets.cpp
29+
${IMGUI_SOURCE_DIR}/imgui_demo.cpp
30+
${IMGUI_SOURCE_DIR}/imgui_tables.cpp
31+
)
32+
33+
34+
set(TRIANGLE_SOURCE
35+
${EXTERNAL_DIR}/triangle/triangle.c
36+
${EXTERNAL_DIR}/triangle/tricall.c
37+
)
38+
39+
40+
set(COMMON_SOURCE
41+
${COMMON_SOURCE_DIR}/Core/Matrix.cpp
42+
${COMMON_SOURCE_DIR}/Core/File.cpp
43+
${COMMON_SOURCE_DIR}/Core/DateTime.cpp
44+
${COMMON_SOURCE_DIR}/Core/Log.cpp
45+
${COMMON_SOURCE_DIR}/Core/Path.cpp
46+
${COMMON_SOURCE_DIR}/Core/StopWatch.cpp
47+
${COMMON_SOURCE_DIR}/Core/String.cpp
48+
${COMMON_SOURCE_DIR}/metalnes/audio_device.cpp
49+
${COMMON_SOURCE_DIR}/metalnes/chiprender.cpp
50+
${COMMON_SOURCE_DIR}/metalnes/logger.cpp
51+
${COMMON_SOURCE_DIR}/metalnes/nesdisasm.cpp
52+
${COMMON_SOURCE_DIR}/metalnes/nesrom.cpp
53+
${COMMON_SOURCE_DIR}/metalnes/raster_device.cpp
54+
${COMMON_SOURCE_DIR}/metalnes/serializer.cpp
55+
${COMMON_SOURCE_DIR}/metalnes/system.cpp
56+
${COMMON_SOURCE_DIR}/metalnes/triangulate.cpp
57+
${COMMON_SOURCE_DIR}/metalnes/wire_defs.cpp
58+
${COMMON_SOURCE_DIR}/metalnes/wire_gui.cpp
59+
${COMMON_SOURCE_DIR}/metalnes/wire_module.cpp
60+
${COMMON_SOURCE_DIR}/metalnes/wire_node_resolver.cpp
61+
${COMMON_SOURCE_DIR}/render/context.cpp
62+
${COMMON_SOURCE_DIR}/imgui_support.cpp
63+
${COMMON_SOURCE_DIR}/Application.cpp
64+
${COMMON_SOURCE_DIR}/UnitTests.cpp
65+
${COMMON_SOURCE_DIR}/AudioFileWriter.cpp
66+
)
67+
68+
69+
if (APPLE)
70+
set(PLATFORM_SOURCE
71+
${COMMON_SOURCE_DIR}/Platform/OSX/CoreAudio.mm
72+
)
73+
74+
elseif (UNIX)
75+
set(PLATFORM_SOURCE
76+
)
77+
78+
79+
elseif (WIN32)
80+
set(PLATFORM_SOURCE
81+
)
82+
83+
else()
84+
message(FATAL_ERROR "Target platform not supported")
85+
endif()
86+
87+
88+
89+
include_directories(
90+
${COMMON_SOURCE_DIR}
91+
)
92+
93+
94+
if (APPLE)
95+
96+
97+
add_executable(MetalNes
98+
${TRIANGLE_SOURCE}
99+
${IMGUI_SOURCE}
100+
${COMMON_SOURCE}
101+
${PLATFORM_SOURCE}
102+
# ${APP_SOURCE_DIR}/OSX/main.mm
103+
${APP_SOURCE_DIR}/Linux/main.cpp
104+
)
105+
106+
target_link_libraries(
107+
MetalNes
108+
hlsl2glsl
109+
"-framework CoreGraphics"
110+
"-framework Foundation"
111+
"-framework AppKit"
112+
"-framework AudioToolbox"
113+
"-framework CoreAudio"
114+
"-framework Metal"
115+
"-framework MetalKit"
116+
"-framework GameController"
117+
)
118+
119+
120+
set_property (TARGET MetalNes APPEND_STRING PROPERTY COMPILE_FLAGS "-fobjc-arc")
121+
122+
elseif (EMSCRIPTEN)
123+
124+
125+
include_directories(
126+
${INCLUDE_DIRS}
127+
)
128+
129+
SET(APP_NAME ${CMAKE_PROJECT_NAME} )
130+
131+
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -s USE_ZLIB -Wno-deprecated-register -Wno-version-check")
132+
133+
134+
135+
add_executable(MetalNes
136+
${TRIANGLE_SOURCE}
137+
${IMGUI_SOURCE}
138+
${COMMON_SOURCE}
139+
${PLATFORM_SOURCE}
140+
# ${COMMON_SOURCE_DIR}/Platform/OSX/main.mm
141+
${APP_SOURCE_DIR}/Linux/main.cpp
142+
${COMMON_SOURCE_DIR}/render/gles/context_gles.cpp
143+
# ${APP_SOURCE_DIR}/emscripten/emscripten_main.cpp
144+
145+
)
146+
147+
148+
# Include libraries needed for lib
149+
target_link_libraries(${APP_NAME}
150+
${LIBS}
151+
hlsl2glsl
152+
)
153+
154+
# set(SHELL_FILE ${CMAKE_SOURCE_DIR}/app/emscripten/shell_minimal.html )
155+
set(SHELL_FILE ${CMAKE_SOURCE_DIR}/app/emscripten/emscripten_shell.html )
156+
157+
set_target_properties(${APP_NAME} PROPERTIES LINK_FLAGS
158+
"--preload-file ${CMAKE_SOURCE_DIR}/data@/assets \
159+
--shell-file ${SHELL_FILE} \
160+
-emrun \
161+
-s TOTAL_MEMORY=536870912 \
162+
-s LLD_REPORT_UNDEFINED \
163+
-s NO_EXIT_RUNTIME=0 \
164+
-s DEMANGLE_SUPPORT=1 \
165+
-s WASM=1 \
166+
-s ASSERTIONS=1 \
167+
-s USE_WEBGL2=1 \
168+
-s USE_SDL=2 \
169+
-s MIN_WEBGL_VERSION=2 \
170+
-s MAX_WEBGL_VERSION=2 \
171+
-s DISABLE_DEPRECATED_FIND_EVENT_TARGET_BEHAVIOR=1 \
172+
-mnontrapping-fptoint \
173+
-lopenal"
174+
)
175+
176+
set(CMAKE_EXECUTABLE_SUFFIX ".html")
177+
# set_target_properties(${APP_NAME} PROPERTIES OUTPUT_NAME "metalnes.html")
178+
179+
180+
181+
182+
183+
elseif (UNIX)
184+
185+
target_link_libraries(
186+
MetalNes
187+
hlsl2glsl
188+
pthread
189+
)
190+
191+
192+
elseif (WIN32)
193+
194+
target_link_libraries(
195+
MetalNes
196+
hlsl2glsl
197+
)
198+
199+
else()
200+
message(FATAL_ERROR "Target platform not supported")
201+
endif()
202+
203+

0 commit comments

Comments
 (0)