0% found this document useful (0 votes)
14 views3 pages

CMakeLists

Uploaded by

OmarLo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views3 pages

CMakeLists

Uploaded by

OmarLo
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 3

cmake_minimum_required(VERSION 2.

8)
project(SDLPoP)

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -std=c99")

# have CMake output binaries to the directory that contains the source files
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${SDLPoP_SOURCE_DIR}/..")

# SDLPoP requires the SDL2 and SDL2_image development libraries.


# You can pass the SDL2 location to CMake like so: -DSDL2="C:/work/libraries/SDL2-
2.0.8"
# Or alternatively, specify the SDL2 location below:

#set(SDL2 "C:/work/libraries/SDL2-2.0.8")

# On macOS, if you used Homebrew to install SDL2, the location may be something
like this:

#set(SDL2 "/usr/local/Cellar/sdl2/2.0.5")

if (NOT(WIN32) AND (DEFINED SDL2))


include_directories(${SDL2}/include/SDL2)
link_directories(${SDL2}/lib)
endif()

if (WIN32)
if (MSVC)
# Don't let Visual Studio run CMake
message(SEND_ERROR "To build using MSVC on Windows, you can use NMake or
run build.bat.")
return()
endif()

# Use the -mwindows compiler flag when compiling with MinGW to hide the console
window
# Only do this when not in debug mode
if (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mwindows")
endif (NOT (CMAKE_BUILD_TYPE STREQUAL "Debug"))

# If the location of SDL2 is not specified, we will try to guess it.


if (NOT(DEFINED SDL2))
cmake_policy(SET CMP0015 NEW) # suppress warning about relative paths
set(SDL2 "../../SDL2-2.0.8")
endif()

# Automatically detect whether we need the x86 or x64 version of the SDL2
library.
if (CMAKE_SIZEOF_VOID_P EQUAL 8)
set(SDL2_ARCH "x86_64-w64-mingw32")
else()
set(SDL2_ARCH "i686-w64-mingw32")
endif()

include_directories(${SDL2}/${SDL2_ARCH}/include)
link_directories(${SDL2}/${SDL2_ARCH}/lib)
endif()

set(SOURCE_FILES
main.c
common.h
config.h
data.c
data.h
proto.h
types.h
seg000.c
seg001.c
seg002.c
seg003.c
seg004.c
seg005.c
seg006.c
seg007.c
seg008.c
seg009.c
seqtbl.c
options.c
midi.c opl3.c opl3.h
replay.c
lighting.c
screenshot.c
menu.c
stb_vorbis.c
icon.rc
)

if (NOT(APPLE AND CREATE_BUNDLE))


add_executable(prince ${SOURCE_FILES})
else()

# macOS-specific:
# By default, a normal binary executable will be created.
# If you want an Application Bundle instead, pass CREATE_BUNDLE to CMake like
so: -DCREATE_BUNDLE=1

# NOTE: Currently, the SDL2 and SDL2_image frameworks are not being correctly
included/linked in the bundle!
# As long as this isn't fixed, these bundles will only work if SDL2 and
SDL2_image are installed.

set (SDLPoP_VERSION "1.23")


set (MACOSX_BUNDLE_INFO_STRING ${PROJECT_NAME})
set (MACOSX_BUNDLE_ICON_FILE "icon.icns")
set_source_files_properties(${MACOSX_BUNDLE_ICON_FILE} PROPERTIES
MACOSX_PACKAGE_LOCATION Resources)
set (MACOSX_BUNDLE_GUI_IDENTIFIER "org.princed.SDLPoP")
set (MACOSX_BUNDLE_LONG_VERSION_STRING ${SDLPoP_VERSION})
set (MACOSX_BUNDLE_BUNDLE_NAME "SDLPoP")
set (MACOSX_BUNDLE_SHORT_VERSION_STRING ${SDLPoP_VERSION})
set (MACOSX_BUNDLE_BUNDLE_VERSION ${SDLPoP_VERSION})
set (MACOSX_BUNDLE_COPYRIGHT "GNU General Public Licence, v3")
add_executable(prince MACOSX_BUNDLE ${SOURCE_FILES} ${MACOSX_BUNDLE_ICON_FILE})
add_custom_command(TARGET prince POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/../data
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/prince.app/Contents/MacOS/data)
add_custom_command(TARGET prince POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_directory
${CMAKE_SOURCE_DIR}/../doc
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/prince.app/Contents/MacOS/doc)
add_custom_command(TARGET prince POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_SOURCE_DIR}/../SDLPoP.ini
${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/prince.app/Contents/MacOS/SDLPoP.ini)
endif()

if(WIN32)
target_link_libraries(prince mingw32 SDL2main SDL2 SDL2_image)
elseif(APPLE)
target_link_libraries(prince SDL2main SDL2 SDL2_image m)
else() # Linux, *BSD, etc.
target_link_libraries(prince SDL2 SDL2_image m)
endif()

You might also like