Skip to content

Commit

Permalink
🔨 Add target_chomp_sources to allow for generating chk files (#3)
Browse files Browse the repository at this point in the history
🔨 Add target_chomp_sources to allow for generating chk files

This is currently barely working, and there are clearly some issues with
regards to the preprocessor. 😔


Fix TargetChompSources and clean up CHTs (#4)
Fix target_chomp_sources and clean up CHTs

This patches up some of the accidental misspells in the
TargetChompSources CMake script and moves the IN_80386 and WIN
preprocessor defines to COMPILE_DEFINITIONS, as the CHT files require it
for some Mac / Windows differences.
The CHT files have also been cleaned up, so they shouldn't report any
preprocessor warnings anymore.


Signed-off-by: bjrkk <cfxqpkjq@gmail.com>
Signed-off-by: Izzy Muerte <63051+bruxisma@users.noreply.github.com>
Co-authored-by: björk <61477479+bjrkk@users.noreply.github.com>
  • Loading branch information
bruxisma and bjrkk authored May 20, 2022
1 parent 886bfc8 commit 895fe06
Show file tree
Hide file tree
Showing 14 changed files with 158 additions and 316 deletions.
64 changes: 42 additions & 22 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake")
set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")
set(CMAKE_CXX_STANDARD 14)

include(TargetChompSources)

find_package(AudioMan REQUIRED)
find_package(BRender REQUIRED)

Expand All @@ -25,6 +27,10 @@ endif()

# Local Tooling

add_compile_definitions(
$<$<PLATFORM_ID:Windows>:WIN>
$<$<PLATFORM_ID:Windows>:IN_80386>)

add_executable(kcdc-386 EXCLUDE_FROM_ALL)
target_sources(kcdc-386 PRIVATE "${PROJECT_SOURCE_DIR}/kauai/src/kcdc_386.c")
target_include_directories(kcdc-386 PRIVATE $<TARGET_PROPERTY:kauai,INCLUDE_DIRECTORIES>)
Expand All @@ -33,11 +39,21 @@ add_executable(kcd2-386 EXCLUDE_FROM_ALL)
target_sources(kcd2-386 PRIVATE "${PROJECT_SOURCE_DIR}/kauai/src/kcd2_386.c")
target_include_directories(kcd2-386 PRIVATE $<TARGET_PROPERTY:kauai,INCLUDE_DIRECTORIES>)

add_executable(chelp EXCLUDE_FROM_ALL)
target_sources(chelp PRIVATE "${PROJECT_SOURCE_DIR}/kauai/tools/chelp.cpp")
target_include_directories(chelp PRIVATE $<TARGET_PROPERTY:kauai,INCLUDE_DIRECTORIES>)
target_link_libraries(chelp PRIVATE $<TARGET_NAME_IF_EXISTS:kauai>)

add_executable(chomp EXCLUDE_FROM_ALL)
target_sources(chomp PRIVATE "${PROJECT_SOURCE_DIR}/kauai/tools/chomp.cpp")
target_include_directories(chomp PRIVATE $<TARGET_PROPERTY:kauai,INCLUDE_DIRECTORIES>)
target_link_libraries(chomp PRIVATE $<TARGET_NAME_IF_EXISTS:kauai>)

# These are only here to ensure configure is rerun when dependencies are generated.
# This is
file(GLOB building-chunk-sources CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/SRC/BUILDING/*.cht")
file(GLOB studio-chunk-sources CONFIGURE_DEPENDS "${PROJECT_SORUCE_DIR}/SRC/STUDIO/*.cht")

add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/generated/kauai/src/kcdc_386.h"
COMMAND cmake -E make_directory "${PROJECT_BINARY_DIR}/generated/kauai/src"
Expand All @@ -64,49 +80,44 @@ target_include_directories(
kauai
PUBLIC
"${PROJECT_SOURCE_DIR}/kauai/src"
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/generated/kauai/src>"
)
"$<BUILD_INTERFACE:${PROJECT_BINARY_DIR}/generated/kauai/src>")

target_sources(kauai
PRIVATE
"${PROJECT_BINARY_DIR}/generated/kauai/src/kcdc_386.h"
"${PROJECT_BINARY_DIR}/generated/kauai/src/kcd2_386.h"
${kauai-sources}
)
${kauai-sources})

target_compile_definitions(kauai PUBLIC
_LPCVOID_DEFINED
STRICT
$<$<PLATFORM_ID:Windows>:IN_80386>
$<$<PLATFORM_ID:Windows>:WIN>
)
STRICT)

target_link_libraries(kauai
PUBLIC
3DMMForever::AudioMan
$<$<PLATFORM_ID:Windows>:Msacm32>
$<$<PLATFORM_ID:Windows>:Vfw32>
$<$<PLATFORM_ID:Windows>:Winmm>
$<$<PLATFORM_ID:Windows>:mpr>
)
$<$<PLATFORM_ID:Windows>:mpr>)

add_library(brender)
file(GLOB brender-sources CONFIGURE_DEPENDS
"${PROJECT_SOURCE_DIR}/BREN/*.CPP"
"${PROJECT_SOURCE_DIR}/BREN/*.C"
)
"${PROJECT_SOURCE_DIR}/BREN/*.C")

list(FILTER brender-sources EXCLUDE REGEX "(MATERIAL|BRENFUN).CPP$")
target_sources(brender PRIVATE ${brender-sources})
target_include_directories(brender PUBLIC "${PROJECT_SOURCE_DIR}/BREN/INC")
target_link_libraries(brender
PUBLIC
kauai
BRender::Libraries
)
BRender::Libraries)

add_library(engine)
file(GLOB engine-sources CONFIGURE_DEPENDS "${PROJECT_SOURCE_DIR}/SRC/ENGINE/*.CPP")
target_sources(engine PRIVATE ${engine-sources})
target_include_directories(engine PUBLIC
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/INC>
)
$<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/INC>)
target_link_libraries(engine PUBLIC kauai brender)

# On non-windows WIN32 is a no-op
Expand All @@ -118,19 +129,28 @@ list(FILTER studio-sources EXCLUDE REGEX "UTESTSCB.CPP$")
target_sources(studio PRIVATE ${studio-sources})
target_include_directories(studio
PUBLIC $<TARGET_PROPERTY:engine,INCLUDE_DIRECTORIES>
"${PROJECT_SOURCE_DIR}/SRC"
)
"${PROJECT_SOURCE_DIR}/SRC")
target_chomp_sources(studio
"${PROJECT_SOURCE_DIR}/SRC/STUDIO/UTEST.CHT"
"${PROJECT_SOURCE_DIR}/SRC/STUDIO/STUDIO.CHT"
"${PROJECT_SOURCE_DIR}/SRC/BUILDING/BLDGHD.CHT"
"${PROJECT_SOURCE_DIR}/SRC/BUILDING/BUILDING.CHT"
"${PROJECT_SOURCE_DIR}/SRC/HELPAUD/HELPAUD.CHT"
"${PROJECT_SOURCE_DIR}/SRC/HELP/HELP.CHT"
"${PROJECT_SOURCE_DIR}/SRC/SHARED/SHARED.CHT"
"${PROJECT_SOURCE_DIR}/SRC/SHARED/SHARECD.CHT")

target_link_libraries(studio PRIVATE engine)
set_property(TARGET studio PROPERTY OUTPUT_NAME 3dmovie)
target_link_options(studio BEFORE PRIVATE $<$<LINK_LANG_AND_ID:CXX,MSVC>:/MANIFESTUAC:NO>)
target_link_options(studio
BEFORE PRIVATE
$<$<AND:$<LINK_LANG_AND_ID:CXX,MSVC>,$<CONFIG:DEBUG>>:/NODEFAULTLIB:libcmt.lib>)


# Please pay attention to the ending / in each DIRECTORY declaration. It
# affects the destination!
install(TARGETS studio RUNTIME DESTINATION .)
install(FILES $<TARGET_PROPERTY:studio,CHOMPED_CHUNKS>
DESTINATION "Microsoft Kids/3D Movie Maker")
install(DIRECTORY "${PROJECT_SOURCE_DIR}/cd9/"
DESTINATION "Microsoft Kids/3D Movie Maker")
install(DIRECTORY "${PROJECT_BINARY_DIR}/generated/chomp/"
DESTINATION "Microsoft Kids/3D Movie Maker"
FILES_MATCHING PATTERN "*.chk")
1 change: 0 additions & 1 deletion INC/HELPRES.H
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@
#define mbmpBrwsBackground 0x2003E
#define mbmpBrwsActor 0x2003F
#define mbmpBrwsProp 0x20040
#define mbmpBrwsThreeD 0x20041
#define mbmpSettingsBrowser 0x20042
#define mbmpBrwsBkSound 0x20043
#define mbmpBrwsFXSound 0x20044
Expand Down
2 changes: 1 addition & 1 deletion INC/KIDGS.CHH
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
#ifdef NAMES
#define __NAME(x) x
#else
#define __NAME(x)
#define __NAME(...)
#endif


Expand Down
Loading

0 comments on commit 895fe06

Please sign in to comment.