[WIP] Slap together some cmake nonsense

Used vcproj2cmake[1] (github mirror[2]) as a starting point, and then
added libxmp as a submodule and hacked up the CMakeLists until it was able to
successfully cross-compile on Linux via mingw. (Side note, I was using the
master branch of vcproj2cmake, but apparently there are several more recent
branches, including experimental_unverified which has more than 1000(!)
additional commits...)

Could definitely stand to get rid of more cruft in the recipe, esp since
we almost certainly won't be autogenerating the cmake stuff from the vcproj
going forward. Could even rewrite it from scratch instead, if someone
wanted to.

As such, this is definitely not in a state where it's ready to stand on its
own, lmao

[1]: https://sourceforge.net/projects/vcproj2cmake/
[2]: https://github.com/p/vcproj2cmake
This commit is contained in:
Will 2024-03-24 18:30:00 -07:00
parent 90ac8e2561
commit 310e1a8ed4
3 changed files with 299 additions and 0 deletions

3
.gitmodules vendored Normal file
View file

@ -0,0 +1,3 @@
[submodule "Keygender32/libxmp"]
path = Keygender32/libxmp
url = https://github.com/libxmp/libxmp

295
Keygender32/CMakeLists.txt Normal file
View file

@ -0,0 +1,295 @@
#
# TEMPORARY Build file, AUTO-GENERATED by http://vcproj2cmake.sf.net
# DO NOT CHECK INTO VERSION CONTROL OR APPLY "PERMANENT" MODIFICATIONS!!
#
# >= 2.6 due to crucial set_property(... COMPILE_DEFINITIONS_* ...)
cmake_minimum_required(VERSION 2.6)
if(COMMAND cmake_policy)
if(POLICY CMP0005)
cmake_policy(SET CMP0005 NEW) # automatic quoting of brackets
endif(POLICY CMP0005)
if(POLICY CMP0011)
# we do want the includer to be affected by our updates,
# since it might define project-global settings.
cmake_policy(SET CMP0011 OLD)
endif(POLICY CMP0011)
if(POLICY CMP0015)
# .vcproj contains relative paths to additional library directories, thus we need to be able to cope with that
cmake_policy(SET CMP0015 NEW)
endif(POLICY CMP0015)
endif(COMMAND cmake_policy)
set(V2C_BASE "/home/skirmisher/buildzone/vcproj2cmake")
set(CMAKE_MODULE_PATH "${V2C_BASE}/cmake/Modules" ${CMAKE_MODULE_PATH})
set(V2C_CONFIG_DIR_LOCAL "${V2C_BASE}/cmake/vcproj2cmake")
# include the main file for pre-defined vcproj2cmake helper functions
include(vcproj2cmake_func)
# include the main file for pre-defined vcproj2cmake definitions
include(vcproj2cmake_defs)
include(${V2C_CONFIG_DIR_LOCAL}/hook_pre.txt OPTIONAL)
project( Keygender32 )
if(CMAKE_BUILD_TYPE STREQUAL "Release_ANSI")
set(libxmp_CMAKE_BUILD_TYPE "Release" CACHE INTERNAL "" FORCE)
endif(CMAKE_BUILD_TYPE STREQUAL "Release_ANSI")
if(CMAKE_BUILD_TYPE STREQUAL "Debug_ANSI")
set(libxmp_CMAKE_BUILD_TYPE "Debug" CACHE INTERNAL "" FORCE)
endif(CMAKE_BUILD_TYPE STREQUAL "Debug_ANSI")
set(BUILD_SHARED_LIBS OFF CACHE INTERNAL "" FORCE)
set(BUILD_SHARED OFF CACHE INTERNAL "" FORCE)
set(BUILD_STATIC ON CACHE INTERNAL "" FORCE)
set(LIBXMP_DISABLE_DEPACKERS ON CACHE INTERNAL "" FORCE)
set(LIBXMP_DISABLE_PROWIZARD ON CACHE INTERNAL "" FORCE)
set(LIBXMP_DOCS OFF CACHE INTERNAL "" FORCE)
add_subdirectory(libxmp)
include_directories(libxmp/include)
# this part is for including a file which contains
# _globally_ applicable settings for all sub projects of a master project
# (compiler flags, path settings, platform stuff, ...)
# e.g. have vcproj2cmake-specific MasterProjectDefaults_vcproj2cmake
# which then _also_ includes a global MasterProjectDefaults module
# for _all_ CMakeLists.txt. This needs to sit post-project()
# since e.g. compiler info is dependent on a valid project.
# MasterProjectDefaults_vcproj2cmake is supposed to define
# generic settings (such as V2C_HOOK_PROJECT, defined as e.g.
# ./cmake/vcproj2cmake/hook_project.txt, and other hook include variables below).
# NOTE: it usually should also reset variables V2C_LIBS, V2C_SOURCES etc.
# as used below since they should contain directory-specific contents only, not accumulate!
include(MasterProjectDefaults_vcproj2cmake OPTIONAL)
# hook e.g. for invoking Find scripts as expected by
# the _LIBRARIES / _INCLUDE_DIRS mappings created
# by your include/dependency map files.
include(${V2C_HOOK_PROJECT} OPTIONAL)
set(SOURCES_files_Source_Files
BGM.c
Debug.c
Dialog.c
Generator.c
Keygender32.c
Nfo.c
Random.c
Starfield.c
stdafx.c
)
source_group("Source Files" FILES ${SOURCES_files_Source_Files})
set(SOURCES_Source_Files
${SOURCES_files_Source_Files}
)
set(SOURCES_files_Header_Files
BGM.h
Debug.h
Dialog.h
Generator.h
Keygender32.h
Nfo.h
Random.h
resource.h
Starfield.h
stdafx.h
)
source_group("Header Files" FILES ${SOURCES_files_Header_Files})
set(SOURCES_Header_Files
${SOURCES_files_Header_Files}
)
set(SOURCES_files_Resource_Files
Keygender32.rc
)
source_group("Resource Files" FILES ${SOURCES_files_Resource_Files})
set(SOURCES_Resource_Files
${SOURCES_files_Resource_Files}
)
set(SOURCES_files_
../keygendr.for.win32.HL.NFO
space_debris.mod
)
set(SOURCES_
${SOURCES_Source_Files}
${SOURCES_Header_Files}
${SOURCES_Resource_Files}
${SOURCES_files_}
)
include_directories(BEFORE ${PROJECT_SOURCE_DIR})
include(${V2C_HOOK_POST_SOURCES} OPTIONAL)
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
# hook include after all definitions have been made
# (but _before_ target is created using the source list!)
include(${V2C_HOOK_POST_DEFINITIONS} OPTIONAL)
set(SOURCES
${SOURCES_}
${V2C_SOURCES}
)
link_directories(
${V2C_LIB_DIRS}
)
add_executable( Keygender32 WIN32 ${SOURCES} )
target_link_libraries(Keygender32
xmp_static
shlwapi
msimg32
winmm
comctl32
${V2C_LIBS}
)
# e.g. to be used for tweaking target properties etc.
include(${V2C_HOOK_POST_TARGET} OPTIONAL)
endif(CMAKE_BUILD_TYPE STREQUAL "Debug")
if(TARGET Keygender32)
set_property(TARGET Keygender32 APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG
LIBXMP_STATIC
WIN32
_DEBUG
_WINDOWS
)
endif(TARGET Keygender32)
if(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "Release")
# hook include after all definitions have been made
# (but _before_ target is created using the source list!)
include(${V2C_HOOK_POST_DEFINITIONS} OPTIONAL)
set(SOURCES
${SOURCES_}
${V2C_SOURCES}
)
link_directories(
${V2C_LIB_DIRS}
)
add_executable( Keygender32 WIN32 ${SOURCES} )
target_link_libraries(Keygender32
xmp_static
shlwapi
msimg32
winmm
comctl32
${V2C_LIBS}
)
# e.g. to be used for tweaking target properties etc.
include(${V2C_HOOK_POST_TARGET} OPTIONAL)
endif(CMAKE_CONFIGURATION_TYPES OR CMAKE_BUILD_TYPE STREQUAL "Release")
if(TARGET Keygender32)
set_property(TARGET Keygender32 APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE
LIBXMP_STATIC
NDEBUG
WIN32
_WINDOWS
)
endif(TARGET Keygender32)
if(CMAKE_BUILD_TYPE STREQUAL "Release_ANSI")
# hook include after all definitions have been made
# (but _before_ target is created using the source list!)
include(${V2C_HOOK_POST_DEFINITIONS} OPTIONAL)
set(SOURCES
${SOURCES_}
${V2C_SOURCES}
)
link_directories(
${V2C_LIB_DIRS}
)
add_executable( Keygender32 WIN32 ${SOURCES} )
target_link_libraries(Keygender32
xmp_static
shlwapi
msimg32
winmm
comctl32
${V2C_LIBS}
)
# e.g. to be used for tweaking target properties etc.
include(${V2C_HOOK_POST_TARGET} OPTIONAL)
endif(CMAKE_BUILD_TYPE STREQUAL "Release_ANSI")
if(TARGET Keygender32)
set_property(TARGET Keygender32 APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE_ANSI
LIBXMP_STATIC
NDEBUG
WIN32
_WINDOWS
)
endif(TARGET Keygender32)
if(CMAKE_BUILD_TYPE STREQUAL "Debug_ANSI")
# hook include after all definitions have been made
# (but _before_ target is created using the source list!)
include(${V2C_HOOK_POST_DEFINITIONS} OPTIONAL)
set(SOURCES
${SOURCES_}
${V2C_SOURCES}
)
link_directories(
${V2C_LIB_DIRS}
)
add_executable( Keygender32 WIN32 ${SOURCES} )
target_link_libraries(Keygender32
xmp_static
shlwapi
msimg32
winmm
comctl32
${V2C_LIBS}
)
# e.g. to be used for tweaking target properties etc.
include(${V2C_HOOK_POST_TARGET} OPTIONAL)
endif(CMAKE_BUILD_TYPE STREQUAL "Debug_ANSI")
if(TARGET Keygender32)
set_property(TARGET Keygender32 APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG_ANSI
LIBXMP_STATIC
WIN32
_DEBUG
_WINDOWS
)
endif(TARGET Keygender32)
set_property(TARGET Keygender32 PROPERTY PROJECT_LABEL "Keygender32")
set_property(TARGET Keygender32 PROPERTY VS_KEYWORD "Win32Proj")
#v2c_rebuild_on_update(Keygender32 "${CMAKE_CURRENT_SOURCE_DIR}/Keygender32.vcproj" ${CMAKE_CURRENT_LIST_FILE} "/home/skirmisher/buildzone/vcproj2cmake/scripts/vcproj2cmake.rb" ".")
include(${V2C_HOOK_POST} OPTIONAL)

1
Keygender32/libxmp Submodule

@ -0,0 +1 @@
Subproject commit 8201d26cf933688a8be64292457c429fd8e654ab