diff --git a/CMakeLists.txt b/CMakeLists.txt index d4e0dea..204b083 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,33 +15,33 @@ include(cmake/PrepUtils.cmake) set(CMAKE_INCLUDE_CURRENT_DIR ON) IF("${CMAKE_SYSTEM}" MATCHES "Linux") - SET(LINUX ON) - SET(LINUX ON PARENT_SCOPE) + SET(LINUX ON) + SET(LINUX ON PARENT_SCOPE) ENDIF() IF(FORCE32) - if(APPLE) - SET(CMAKE_OSX_ARCHITECTURES "i386") - else() - SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") - SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") - endif() + if(APPLE) + SET(CMAKE_OSX_ARCHITECTURES "i386") + else() + SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") + endif() ENDIF() set(CMAKE_OSX_DEPLOYMENT_TARGET 10.6) IF(LINUX) - if(CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT(FORCE32) ) - set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86_64") - set(BIN_RPATH "\$ORIGIN/lib64") - else() - set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86") - set(BIN_RPATH "\$ORIGIN/lib") - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FILE_OFFSET_BITS=64") - endif() + if(CMAKE_SIZEOF_VOID_P MATCHES "8" AND NOT(FORCE32) ) + set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86_64") + set(BIN_RPATH "\$ORIGIN/lib64") + else() + set(CMAKE_EXECUTABLE_SUFFIX ".bin.x86") + set(BIN_RPATH "\$ORIGIN/lib") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D_FILE_OFFSET_BITS=64") + endif() elseif(APPLE) - SET(BIN_RPATH "@executable_path/../Frameworks") + SET(BIN_RPATH "@executable_path/../Frameworks") endif() set(CMAKE_SKIP_BUILD_RPATH TRUE) @@ -54,23 +54,23 @@ set(CMAKE_INSTALL_RPATH_USE_LINK_PATH FALSE) find_package(PkgConfig REQUIRED) if (EXTERNAL_LIB_PATH) - set(CMAKE_PREFIX_PATH ${EXTERNAL_LIB_PATH}) - if(EXISTS "${EXTERNAL_LIB_PATH}/lib/pkgconfig/") - SET(ENV{PKG_CONFIG_PATH} "${EXTERNAL_LIB_PATH}/lib/pkgconfig/") - endif() - if(APPLE) - set(PLATFORM_SHARED_LIBS - libSDL2.dylib libSDL2_image-2.0.0.dylib libSDL2_ttf-2.0.0.dylib libSDL_sound-1.0.1.dylib - libfreetype.6.dylib libsigc-2.0.0.dylib - CACHE STRING "List of shared libraries that need to be copied into the OS X bundle") - foreach(lib ${PLATFORM_SHARED_LIBS}) - if(EXISTS ${EXTERNAL_LIB_PATH}/lib/${lib}) - list(APPEND PLATFORM_COPY_LIBS - ${EXTERNAL_LIB_PATH}/lib/${lib} - ) - endif() - endforeach() - endif() + set(CMAKE_PREFIX_PATH ${EXTERNAL_LIB_PATH}) + if(EXISTS "${EXTERNAL_LIB_PATH}/lib/pkgconfig/") + SET(ENV{PKG_CONFIG_PATH} "${EXTERNAL_LIB_PATH}/lib/pkgconfig/") + endif() + if(APPLE) + set(PLATFORM_SHARED_LIBS + libSDL2.dylib libSDL2_image-2.0.0.dylib libSDL2_ttf-2.0.0.dylib libSDL_sound-1.0.1.dylib + libfreetype.6.dylib libsigc-2.0.0.dylib + CACHE STRING "List of shared libraries that need to be copied into the OS X bundle") + foreach(lib ${PLATFORM_SHARED_LIBS}) + if(EXISTS ${EXTERNAL_LIB_PATH}/lib/${lib}) + list(APPEND PLATFORM_COPY_LIBS + ${EXTERNAL_LIB_PATH}/lib/${lib} + ) + endif() + endforeach() + endif() endif() pkg_check_modules(SIGCXX REQUIRED sigc++-2.0) @@ -90,7 +90,7 @@ find_package(zlib REQUIRED) ## Setup main source ## set(MAIN_HEADERS - src/quadarray.h + src/quadarray.h src/audio.h src/binding.h src/bitmap.h @@ -130,7 +130,7 @@ set(MAIN_HEADERS src/perftimer.h src/sharedstate.h src/al-util.h - src/boost-hash.h + src/boost-hash.h src/debugwriter.h ) @@ -166,202 +166,203 @@ set(MAIN_SOURCE ## Setup embedded source ## set(EMBEDDED_INPUT - shader/transSimple.frag - shader/trans.frag - shader/hue.frag - shader/sprite.frag - shader/plane.frag - shader/bitmapBlit.frag - shader/simple.frag - shader/simpleColor.frag - shader/simpleAlpha.frag - shader/flashMap.frag - shader/simple.vert - shader/simpleColor.vert - shader/sprite.vert - assets/liberation.ttf + shader/transSimple.frag + shader/trans.frag + shader/hue.frag + shader/sprite.frag + shader/plane.frag + shader/bitmapBlit.frag + shader/simple.frag + shader/simpleColor.frag + shader/simpleAlpha.frag + shader/flashMap.frag + shader/simple.vert + shader/simpleColor.vert + shader/sprite.vert + assets/liberation.ttf ) if (RGSS2) - list(APPEND EMBEDDED_INPUT - shader/blur.frag - shader/blurH.vert - shader/blurV.vert - shader/simpleMatrix.vert - ) + list(APPEND EMBEDDED_INPUT + shader/blur.frag + shader/blurH.vert + shader/blurV.vert + shader/simpleMatrix.vert + ) endif() ## Process Embeddeds ## find_program(XXD_EXE xxd - DOC "Location of the xxd executable" + DOC "Location of the xxd executable" ) macro(ProcessWithXXD outvar inputfile outdir) - get_filename_component(basefile ${inputfile} NAME) - set(outputfile ${outdir}/${basefile}.xxd) - set_source_files_properties(${outputfile} PROPERTIES HEADER_ONLY TRUE) - add_custom_command( - OUTPUT ${outputfile} - COMMAND ${XXD_EXE} -i ${inputfile} ${outputfile} - WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} - DEPENDS ${inputfile} - COMMENT "Generating XXD for ${inputfile}" - ) - list(APPEND ${outvar} - ${outputfile} - ) + get_filename_component(basefile ${inputfile} NAME) + set(outputfile ${outdir}/${basefile}.xxd) + set_source_files_properties(${outputfile} PROPERTIES HEADER_ONLY TRUE) + add_custom_command( + OUTPUT ${outputfile} + COMMAND ${XXD_EXE} -i ${inputfile} ${outputfile} + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} + DEPENDS ${inputfile} + COMMENT "Generating XXD for ${inputfile}" + ) + list(APPEND ${outvar} + ${outputfile} + ) endmacro() file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/xxdhack) include_directories( - ${CMAKE_CURRENT_BINARY_DIR}/xxdhack + ${CMAKE_CURRENT_BINARY_DIR}/xxdhack ) foreach(item ${EMBEDDED_INPUT}) - ProcessWithXXD(EMBEDDED_SOURCE ${item} ${CMAKE_CURRENT_BINARY_DIR}) + ProcessWithXXD(EMBEDDED_SOURCE ${item} ${CMAKE_CURRENT_BINARY_DIR}) endforeach() ## Setup binding source ## if (BINDING STREQUAL "MRI") - set(MRIVERSION "2.0" CACHE STRING "Version of MRI to link with") - pkg_check_modules(MRI REQUIRED ruby-${MRIVERSION}) - list(APPEND DEFINES - BINDING_MRI - ) - set(BINDING_HEADERS - binding-mri/binding-util.h - binding-mri/binding-types.h - binding-mri/serializable-binding.h - binding-mri/disposable-binding.h - binding-mri/sceneelement-binding.h - binding-mri/viewportelement-binding.h - binding-mri/flashable-binding.h - ) - set(BINDING_SOURCE - binding-mri/binding-mri.cpp - binding-mri/binding-util.cpp - binding-mri/table-binding.cpp - binding-mri/etc-binding.cpp - binding-mri/bitmap-binding.cpp - binding-mri/font-binding.cpp - binding-mri/graphics-binding.cpp - binding-mri/input-binding.cpp - binding-mri/sprite-binding.cpp - binding-mri/viewport-binding.cpp - binding-mri/plane-binding.cpp - binding-mri/window-binding.cpp - binding-mri/tilemap-binding.cpp - binding-mri/audio-binding.cpp - binding-mri/module_rpg.cpp - binding-mri/filesystem-binding.cpp - ) + set(MRIVERSION "2.0" CACHE STRING "Version of MRI to link with") + pkg_check_modules(MRI REQUIRED ruby-${MRIVERSION}) + list(APPEND DEFINES + BINDING_MRI + ) + set(BINDING_HEADERS + binding-mri/binding-util.h + binding-mri/binding-types.h + binding-mri/serializable-binding.h + binding-mri/disposable-binding.h + binding-mri/sceneelement-binding.h + binding-mri/viewportelement-binding.h + binding-mri/flashable-binding.h + ) + set(BINDING_SOURCE + binding-mri/binding-mri.cpp + binding-mri/binding-util.cpp + binding-mri/table-binding.cpp + binding-mri/etc-binding.cpp + binding-mri/bitmap-binding.cpp + binding-mri/font-binding.cpp + binding-mri/graphics-binding.cpp + binding-mri/input-binding.cpp + binding-mri/sprite-binding.cpp + binding-mri/viewport-binding.cpp + binding-mri/plane-binding.cpp + binding-mri/window-binding.cpp + binding-mri/tilemap-binding.cpp + binding-mri/audio-binding.cpp + binding-mri/module_rpg.cpp + binding-mri/filesystem-binding.cpp + ) elseif(BINDING STREQUAL "MRUBY") - list(APPEND DEFINES - BINDING_MRUBY - ) - set(BINDING_HEADERS - binding-mruby/binding-util.h - binding-mruby/disposable-binding.h - binding-mruby/flashable-binding.h - binding-mruby/binding-types.h - binding-mruby/sceneelement-binding.h - binding-mruby/viewportelement-binding.h - binding-mruby/serializable-binding.h - binding-mruby/mrb-ext/file.h - binding-mruby/mrb-ext/rwmem.h - binding-mruby/mrb-ext/marshal.h - ) - set(BINDING_SOURCE - binding-mruby/binding-mruby.cpp - binding-mruby/binding-util.cpp - binding-mruby/window-binding.cpp - binding-mruby/bitmap-binding.cpp - binding-mruby/sprite-binding.cpp - binding-mruby/font-binding.cpp - binding-mruby/viewport-binding.cpp - binding-mruby/plane-binding.cpp - binding-mruby/audio-binding.cpp - binding-mruby/tilemap-binding.cpp - binding-mruby/etc-binding.cpp - binding-mruby/graphics-binding.cpp - binding-mruby/input-binding.cpp - binding-mruby/table-binding.cpp - binding-mruby/module_rpg.c - binding-mruby/mrb-ext/file.cpp - binding-mruby/mrb-ext/marshal.cpp - binding-mruby/mrb-ext/rwmem.cpp - binding-mruby/mrb-ext/kernel.cpp - binding-mruby/mrb-ext/time.cpp - ) + message(FATAL_ERROR "Mruby support in CMake needs to be finished") + list(APPEND DEFINES + BINDING_MRUBY + ) + set(BINDING_HEADERS + binding-mruby/binding-util.h + binding-mruby/disposable-binding.h + binding-mruby/flashable-binding.h + binding-mruby/binding-types.h + binding-mruby/sceneelement-binding.h + binding-mruby/viewportelement-binding.h + binding-mruby/serializable-binding.h + binding-mruby/mrb-ext/file.h + binding-mruby/mrb-ext/rwmem.h + binding-mruby/mrb-ext/marshal.h + ) + set(BINDING_SOURCE + binding-mruby/binding-mruby.cpp + binding-mruby/binding-util.cpp + binding-mruby/window-binding.cpp + binding-mruby/bitmap-binding.cpp + binding-mruby/sprite-binding.cpp + binding-mruby/font-binding.cpp + binding-mruby/viewport-binding.cpp + binding-mruby/plane-binding.cpp + binding-mruby/audio-binding.cpp + binding-mruby/tilemap-binding.cpp + binding-mruby/etc-binding.cpp + binding-mruby/graphics-binding.cpp + binding-mruby/input-binding.cpp + binding-mruby/table-binding.cpp + binding-mruby/module_rpg.c + binding-mruby/mrb-ext/file.cpp + binding-mruby/mrb-ext/marshal.cpp + binding-mruby/mrb-ext/rwmem.cpp + binding-mruby/mrb-ext/kernel.cpp + binding-mruby/mrb-ext/time.cpp + ) elseif(BINDING STREQUAL "NULL") - set(BINDING_SOURCE - binding-null/binding-null.cpp - ) + set(BINDING_SOURCE + binding-null/binding-null.cpp + ) else() - message(FATAL_ERROR "Must choose a valid binding type. MRI, MRUBY, or NULL") + message(FATAL_ERROR "Must choose a valid binding type. MRI, MRUBY, or NULL") endif() ## Setup main executable ## if(APPLE) - find_library(CARBON_LIBRARY Carbon) - find_library(IOKIT_LIBRARY IOKit) - mark_as_advanced(CARBON_LIBRARY IOKIT_LIBRARY) - list(APPEND PLATFORM_LIBRARIES - ${CARBON_LIBRARY} - ${IOKIT_LIBRARY} - ) + find_library(CARBON_LIBRARY Carbon) + find_library(IOKIT_LIBRARY IOKit) + mark_as_advanced(CARBON_LIBRARY IOKIT_LIBRARY) + list(APPEND PLATFORM_LIBRARIES + ${CARBON_LIBRARY} + ${IOKIT_LIBRARY} + ) endif() link_directories( - ${SIGCXX_LIBRARY_DIRS} - ${PIXMAN_LIBRARY_DIRS} - ${PHYSFS_LIBRARY_DIRS} - ${SDL2_LIBRARY_DIRS} # Blindly assume other SDL bits are in same directory - ${Boost_LIBRARY_DIR} - ${MRI_LIBDIR} + ${SIGCXX_LIBRARY_DIRS} + ${PIXMAN_LIBRARY_DIRS} + ${PHYSFS_LIBRARY_DIRS} + ${SDL2_LIBRARY_DIRS} # Blindly assume other SDL bits are in same directory + ${Boost_LIBRARY_DIR} + ${MRI_LIBDIR} ) add_executable(${PROJECT_NAME} MACOSX_BUNDLE - ${MAIN_HEADERS} - ${MAIN_SOURCE} - ${BINDING_SOURCE} - ${EMBEDDED_SOURCE} + ${MAIN_HEADERS} + ${MAIN_SOURCE} + ${BINDING_SOURCE} + ${EMBEDDED_SOURCE} ) target_compile_definitions(${PROJECT_NAME} PRIVATE - ${DEFINES} + ${DEFINES} ) target_include_directories(${PROJECT_NAME} PRIVATE - src - ${SIGCXX_INCLUDE_DIRS} - ${PIXMAN_INCLUDE_DIRS} - ${PHYSFS_INCLUDE_DIRS} - ${SDL2_INCLUDE_DIRS} # Blindly assume other SDL bits are in same directory - ${Boost_INCLUDE_DIR} - ${GLEW_INCLUDE_DIR}/GL - ${MRI_INCLUDE_DIRS} - ${OPENAL_INCLUDE_DIR} + src + ${SIGCXX_INCLUDE_DIRS} + ${PIXMAN_INCLUDE_DIRS} + ${PHYSFS_INCLUDE_DIRS} + ${SDL2_INCLUDE_DIRS} # Blindly assume other SDL bits are in same directory + ${Boost_INCLUDE_DIR} + ${GLEW_INCLUDE_DIR}/GL + ${MRI_INCLUDE_DIRS} + ${OPENAL_INCLUDE_DIR} ) target_link_libraries(${PROJECT_NAME} - ${SIGCXX_LIBRARIES} - ${SDL2_LIBRARIES} - ${SDL2_IMAGE_LIBRARIES} - ${SDL2_TTF_LIBRARIES} - ${SDL_SOUND_LIBRARIES} - ${PHYSFS_LIBRARIES} - ${PIXMAN_LIBRARIES} - ${Boost_LIBRARIES} - ${MRI_LIBRARIES} - ${OPENAL_LIBRARY} - ${OPENGL_gl_LIBRARY} - ${GLEW_LIBRARY} - ${ZLIB_LIBRARY} + ${SIGCXX_LIBRARIES} + ${SDL2_LIBRARIES} + ${SDL2_IMAGE_LIBRARIES} + ${SDL2_TTF_LIBRARIES} + ${SDL_SOUND_LIBRARIES} + ${PHYSFS_LIBRARIES} + ${PIXMAN_LIBRARIES} + ${Boost_LIBRARIES} + ${MRI_LIBRARIES} + ${OPENAL_LIBRARY} + ${OPENGL_gl_LIBRARY} + ${GLEW_LIBRARY} + ${ZLIB_LIBRARY} - ${PLATFORM_LIBRARIES} + ${PLATFORM_LIBRARIES} ) PostBuildMacBundle(${PROJECT_NAME} "" "${PLATFORM_COPY_LIBS}")