mirror of
https://github.com/daniel5151/ANESE.git
synced 2024-05-17 19:50:17 -04:00
cd756d0a2d
first commit in a _long_ time, and it's just because I installed a fresh linux distro and wanted to see if ANESE compiles on it. It does, but I noticed a couple of warnings and bugs, so these are some quick fixes. looks like I had an unintended fallthrough in my bgr_fetch routine. not sure how mission-critical this is, but maybe it fixes stuff? other than that, g++ helpfuly noted some other silly errors and unused vars, so I cleaned those up too. lastly, I removed some code that skipped the first directory returned by cute_files in the menu component. Not _super_ sure why that was there in the first place, but directory traversal now works on some more linux distros (such as the one I am running)
116 lines
4 KiB
CMake
116 lines
4 KiB
CMake
# I have no idea how cmake works, this is pretty much me copying and pasting
|
|
# stuff from around the web until things "work"
|
|
# I mean, that's how you learn, right?
|
|
|
|
project(anese)
|
|
cmake_minimum_required(VERSION 2.8.3)
|
|
|
|
if(APPLE)
|
|
set(GUI_TYPE MACOSX_BUNDLE)
|
|
endif(APPLE)
|
|
|
|
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${anese_SOURCE_DIR}/cmake")
|
|
set(BIN_DIR ${anese_SOURCE_DIR}/bin)
|
|
|
|
# anese source
|
|
include_directories(src)
|
|
file(GLOB_RECURSE SRC_FILES
|
|
src/*.cc
|
|
src/*.cpp
|
|
src/*.h
|
|
src/*.hpp
|
|
)
|
|
|
|
# ANESE executable
|
|
add_executable(anese ${SRC_FILES})
|
|
|
|
# Set a default build type if none was specified
|
|
if(NOT CMAKE_BUILD_TYPE)
|
|
set(CMAKE_BUILD_TYPE "Release" CACHE STRING
|
|
"Choose the type of build, options are: Debug Release RelWithDebInfo MinSizeRel." FORCE)
|
|
endif(NOT CMAKE_BUILD_TYPE)
|
|
|
|
# Setup compiler flags for different platforms
|
|
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -fno-exceptions -fno-rtti -Wno-class-memaccess -std=c++11")
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS} -g -fsanitize=undefined -fsanitize=address")
|
|
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -g")
|
|
elseif (${CMAKE_CXX_COMPILER_ID} STREQUAL MSVC)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W4 /O2 /fp:fast")
|
|
# suppress some MSVC warnings
|
|
|
|
# suppress warnings about "unsafe" funcs (fprintf and such)
|
|
target_compile_definitions(anese PRIVATE _CRT_SECURE_NO_WARNINGS)
|
|
|
|
# 4458 - declaration of 'x' hides class member
|
|
# * non issue, since I always refer to class members through `this`
|
|
# 4310 - cast truncates constant value
|
|
# 4068 - unknown pragma
|
|
# 4244 - type conversion may lead to loss of data
|
|
# 4127 - conditianal expression is constant
|
|
# 4800 - forcing value to bool 'true' or 'false' (performance warning)
|
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4458 /wd4310 /wd4068 /wd4244 /wd4127 /wd4800")
|
|
|
|
# add icon manifest to windows builds
|
|
set(SRC_FILES ${SRC_FILES} resources/icons/anese.rc)
|
|
endif()
|
|
|
|
# handle various debug options
|
|
option(NESTEST "test CPU against NESTEST golden log" OFF)
|
|
if (NESTEST)
|
|
target_compile_definitions(anese PRIVATE NESTEST)
|
|
endif()
|
|
|
|
# And now, for some shit-tier dependency management
|
|
|
|
# ---- header only libs ---- #
|
|
include_directories(thirdparty/headeronly)
|
|
|
|
# ---- SDL2 ---- #
|
|
# since there is no standard install directory for sdl2 on windows, change this
|
|
# variable to point to _your_ SDL2 dev lib directory
|
|
set(SDL2_MORE_INCLUDE_DIR "C:/sdl2")
|
|
find_package(SDL2 REQUIRED)
|
|
include_directories(${SDL2_INCLUDE_DIR})
|
|
|
|
# ---- SDL_inprint ---- #
|
|
include_directories(thirdparty/SDL_inprint)
|
|
add_library(SDL_inprint STATIC thirdparty/SDL_inprint/SDL_inprint2.cc)
|
|
|
|
# ---- SimpleINI ---- #
|
|
include_directories(thirdparty/SimpleINI)
|
|
add_library(SimpleINI STATIC thirdparty/SimpleINI/ConvertUTF.c)
|
|
|
|
# ---- miniz ---- #
|
|
add_subdirectory(thirdparty/miniz)
|
|
include_directories(thirdparty/miniz)
|
|
|
|
# Finally, link up!
|
|
target_link_libraries(anese
|
|
${SDL2_LIBRARY}
|
|
SDL_inprint
|
|
SimpleINI
|
|
miniz
|
|
)
|
|
|
|
if (APPLE)
|
|
# Do some spooky macOS bundle magic that took far to long to figure out...
|
|
# note: this is a brittle system, as it relies on the SDL2 version on homebrew
|
|
# to stay constant! Not ideal!
|
|
install(CODE "
|
|
set(CMAKE_INSTALL_LOCAL_ONLY true) # no need to install miniz!
|
|
execute_process(COMMAND sh -c \"
|
|
cp /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib ../resources/ANESE.app/Contents/Frameworks/
|
|
chmod 755 ../resources/ANESE.app/Contents/Frameworks/libSDL2-2.0.0.dylib
|
|
cp ./anese ../resources/ANESE.app/Contents/MacOS/
|
|
install_name_tool -change /usr/local/opt/sdl2/lib/libSDL2-2.0.0.dylib @executable_path/../Frameworks/libSDL2-2.0.0.dylib ../resources/ANESE.app/Contents/MacOS/anese
|
|
mkdir ../bin/
|
|
cp -R ../resources/ANESE.app ../bin/
|
|
echo 'Success! ANESE.app built in `bin` directory.'
|
|
\")
|
|
" COMPONENT Runtime)
|
|
else()
|
|
install(CODE "set(CMAKE_INSTALL_LOCAL_ONLY true)") # no need to install miniz!
|
|
install(TARGETS anese RUNTIME DESTINATION ${BIN_DIR})
|
|
endif()
|