Skip to content

Commit d6bf3fe

Browse files
separate tests target
1 parent 22abcdf commit d6bf3fe

File tree

3 files changed

+56
-12
lines changed

3 files changed

+56
-12
lines changed

.github/workflows/ci.yml

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,24 @@ jobs:
137137
138138
cd "${GITHUB_WORKSPACE}"
139139
mkdir -p build
140-
cmake -DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake" -B build -S .
140+
141+
# the main target needs to be cross compiled
142+
echo "--- Building ALL ---"
143+
cmake \
144+
-B build \
145+
-S . \
146+
-DCMAKE_TOOLCHAIN_FILE="${nxdk_dir}/share/toolchain-nxdk.cmake"
141147
cmake --build build
142148
149+
# the tests target should not be cross compiled
150+
# https://stackoverflow.com/a/64335131/11214013
151+
echo "--- Building tests ---"
152+
cmake \
153+
-B build/tests \
154+
-S . \
155+
-DBUILD_TESTS=ON
156+
cmake --build build/tests --target test_moonlight
157+
143158
# recursively list all files in build directory
144159
ls -R build
145160

CMakeLists.txt

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ message(STATUS "XBOX_ISO: ${XBOX_ISO}")
1515
#
1616
# Options
1717
#
18-
option(BUILD_TESTS "Build tests" ON)
18+
option(BUILD_TESTS "Build tests" OFF)
1919

2020
# create the xbe directory if it doesn't exist
2121
file(MAKE_DIRECTORY ${XBOX_XBE_DIR})
@@ -28,21 +28,26 @@ endif()
2828
set(CMAKE_CXX_FLAGS_RELEASE "-O2")
2929
set(CMAKE_C_FLAGS_RELEASE "-O2")
3030

31-
# Stop lots of warning spam
32-
add_compile_options(-Wno-builtin-macro-redefined)
33-
add_definitions(-DXBOX -DNXDK)
34-
3531
set(MOONLIGHT_SOURCES
3632
"${CMAKE_CURRENT_SOURCE_DIR}/src/main.cpp"
3733
)
3834
set(MOONLIGHT_EXTERNAL_LIBRARIES
3935
"${NXDK_DIR}/lib/libpbkit.lib"
4036
)
37+
set(MOONLIGHT_INCLUDE_DIRS
38+
"${NXDK_DIR}/lib"
39+
)
40+
set(MOONLIGHT_COMPILE_OPTIONS "-Wno-builtin-macro-redefined")
41+
set(MOONLIGHT_DEFINITIONS "-DXBOX -DNXDK")
42+
43+
# Stop lots of warning spam
44+
add_compile_options(${MOONLIGHT_COMPILE_OPTIONS})
45+
add_definitions(${MOONLIGHT_DEFINITIONS})
4146

4247
add_executable(${CMAKE_PROJECT_NAME}
4348
${MOONLIGHT_SOURCES}
4449
)
45-
include_directories("${NXDK_DIR}/lib")
50+
include_directories(SYSTEM ${MOONLIGHT_INCLUDE_DIRS})
4651
target_link_libraries(${CMAKE_PROJECT_NAME} PUBLIC
4752
${MOONLIGHT_EXTERNAL_LIBRARIES}
4853
)
@@ -53,20 +58,26 @@ target_compile_definitions(${CMAKE_PROJECT_NAME} PRIVATE "")
5358
# tests
5459
#
5560
if(BUILD_TESTS)
56-
add_subdirectory(tests)
61+
add_subdirectory(tests EXCLUDE_FROM_ALL)
5762
endif()
5863

5964
# Post-build exe to xbe conversion
6065
add_custom_target(cxbe_convert ALL
61-
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env ./tools/cxbe/cxbe -OUT:${XBOX_XBE_DIR}/default.xbe -TITLE:${XBE_TITLE} ${CMAKE_CURRENT_BINARY_DIR}/${XBE_TITLE}.exe
66+
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env
67+
./tools/cxbe/cxbe
68+
-OUT:${XBOX_XBE_DIR}/default.xbe
69+
-TITLE:${XBE_TITLE}
70+
${CMAKE_CURRENT_BINARY_DIR}/${XBE_TITLE}.exe
6271
WORKING_DIRECTORY ${NXDK_DIR}
6372
COMMENT "CXBE Conversion: [EXE -> XBE]"
6473
)
6574
add_dependencies(cxbe_convert ${CMAKE_PROJECT_NAME})
6675

6776
# Post-build xbe to xiso conversion
6877
add_custom_target(xbe_iso ALL
69-
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env ${NXDK_DIR}/tools/extract-xiso/build/extract-xiso -c ${XBOX_XBE_DIR} ${XBOX_ISO}
78+
VERBATIM COMMAND "${CMAKE_COMMAND}" -E env
79+
${NXDK_DIR}/tools/extract-xiso/build/extract-xiso
80+
-c ${XBOX_XBE_DIR} ${XBOX_ISO}
7081
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
7182
COMMENT "CXBE Conversion: [XBE -> XISO]"
7283
)

tests/CMakeLists.txt

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,27 @@ cmake_minimum_required(VERSION 3.13)
44
project(test_moonlight)
55

66
include_directories("${CMAKE_SOURCE_DIR}")
7+
include_directories(SYSTEM ${MOONLIGHT_INCLUDE_DIRS})
8+
9+
# nxdk include dirs, these are set by the toolchain for ALL targets except this one since we don't use the toolchain
10+
include_directories(SYSTEM
11+
"${NXDK_DIR}/lib/libcxx/include"
12+
"${NXDK_DIR}/lib"
13+
"${NXDK_DIR}/lib/xboxrt/libc_extensions"
14+
"${NXDK_DIR}/lib/pdclib/include"
15+
"${NXDK_DIR}/lib/pdclib/platform/xbox/include"
16+
"${NXDK_DIR}/lib/winapi"
17+
"${NXDK_DIR}/lib/xboxrt/vcruntime"
18+
)
719

820
enable_testing()
921

1022
# Add GoogleTest directory to the project
1123
set(GTEST_SOURCE_DIR "${CMAKE_SOURCE_DIR}/third-party/googletest")
1224
set(INSTALL_GTEST OFF)
1325
set(INSTALL_GMOCK OFF)
14-
add_subdirectory("${GTEST_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/googletest")
15-
include_directories("${GTEST_SOURCE_DIR}/googletest/include" "${GTEST_SOURCE_DIR}")
26+
add_subdirectory("${GTEST_SOURCE_DIR}" "${CMAKE_CURRENT_BINARY_DIR}/googletest" EXCLUDE_FROM_ALL)
27+
include_directories(SYSTEM "${GTEST_SOURCE_DIR}/googletest/include" "${GTEST_SOURCE_DIR}")
1628

1729
# coverage
1830
# https://gcovr.com/en/stable/guide/compiling.html#compiler-options
@@ -33,6 +45,10 @@ file(GLOB_RECURSE TEST_SOURCES CONFIGURE_DEPENDS
3345
# TODO
3446
# list(REMOVE_ITEM MOONLIGHT_SOURCES ${CMAKE_SOURCE_DIR}/src/main.cpp)
3547

48+
# Stop lots of warning spam
49+
add_compile_options(${MOONLIGHT_COMPILE_OPTIONS})
50+
add_definitions(${MOONLIGHT_DEFINITIONS})
51+
3652
add_executable(${PROJECT_NAME}
3753
${TEST_SOURCES}
3854
${MOONLIGHT_SOURCES})
@@ -50,4 +66,6 @@ target_compile_definitions(${PROJECT_NAME} PUBLIC ${MOONLIGHT_DEFINITIONS} ${TES
5066
target_compile_options(${PROJECT_NAME} PRIVATE $<$<COMPILE_LANGUAGE:CXX>:${MOONLIGHT_COMPILE_OPTIONS}>)
5167
target_link_options(${PROJECT_NAME} PRIVATE)
5268

69+
add_dependencies(${PROJECT_NAME} gtest gtest_main gmock gmock_main)
70+
5371
add_test(NAME ${PROJECT_NAME} COMMAND moonlight_test)

0 commit comments

Comments
 (0)