prepare for something

This commit is contained in:
tildearrow 2022-05-08 15:59:42 -05:00
parent f8642ae8f0
commit 40e992cc6f
3 changed files with 50 additions and 36 deletions

View file

@ -17,18 +17,17 @@ set(CMAKE_PROJECT_VERSION_MAJOR 0)
set(CMAKE_PROJECT_VERSION_MINOR 6) set(CMAKE_PROJECT_VERSION_MINOR 6)
set(CMAKE_PROJECT_VERSION_PATCH 0) set(CMAKE_PROJECT_VERSION_PATCH 0)
set(BUILD_GUI_DEFAULT ON)
set(SYSTEM_SDL2_DEFAULT OFF)
if (ANDROID) if (ANDROID)
set(BUILD_GUI_DEFAULT OFF)
set(USE_RTMIDI_DEFAULT OFF) set(USE_RTMIDI_DEFAULT OFF)
set(SYSTEM_SDL2_DEFAULT ON)
else() else()
set(BUILD_GUI_DEFAULT ON)
set(USE_RTMIDI_DEFAULT ON) set(USE_RTMIDI_DEFAULT ON)
set(SYSTEM_SDL2_DEFAULT OFF)
endif() endif()
find_package(PkgConfig) find_package(PkgConfig)
if (PKG_CONFIG_FOUND) if (PKG_CONFIG_FOUND AND NOT ANDROID)
pkg_check_modules(JACK jack) pkg_check_modules(JACK jack)
set(WITH_JACK_DEFAULT ${JACK_FOUND}) set(WITH_JACK_DEFAULT ${JACK_FOUND})
else() else()
@ -168,8 +167,13 @@ if (SYSTEM_SDL2)
endif() endif()
message(STATUS "Using system-installed SDL2") message(STATUS "Using system-installed SDL2")
else() else()
if (ANDROID)
set(SDL_SHARED ON CACHE BOOL "Force no dynamically-linked SDL" FORCE)
set(SDL_STATIC OFF CACHE BOOL "Force statically-linked SDL" FORCE)
else()
set(SDL_SHARED OFF CACHE BOOL "Force no dynamically-linked SDL" FORCE) set(SDL_SHARED OFF CACHE BOOL "Force no dynamically-linked SDL" FORCE)
set(SDL_STATIC ON CACHE BOOL "Force statically-linked SDL" FORCE) set(SDL_STATIC ON CACHE BOOL "Force statically-linked SDL" FORCE)
endif()
# https://github.com/libsdl-org/SDL/issues/1481 # https://github.com/libsdl-org/SDL/issues/1481
# On 2014-06-22 17:15:50 +0000, Sam Lantinga wrote: # On 2014-06-22 17:15:50 +0000, Sam Lantinga wrote:
# If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses. # If you link SDL statically, you also need to define HAVE_LIBC so it builds with the C runtime that your application uses.
@ -177,7 +181,11 @@ else()
set(SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE) set(SDL_LIBC ON CACHE BOOL "Tell SDL that we want it to use our C runtime (required for proper static linking)" FORCE)
add_subdirectory(extern/SDL EXCLUDE_FROM_ALL) add_subdirectory(extern/SDL EXCLUDE_FROM_ALL)
list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include) list(APPEND DEPENDENCIES_INCLUDE_DIRS extern/SDL/include)
if (ANDROID)
list(APPEND DEPENDENCIES_LIBRARIES SDL2)
else()
list(APPEND DEPENDENCIES_LIBRARIES SDL2-static) list(APPEND DEPENDENCIES_LIBRARIES SDL2-static)
endif()
# Work around add_subdirectory'd SDL not propagating HAVE_LIBC to MSVC furnace build # Work around add_subdirectory'd SDL not propagating HAVE_LIBC to MSVC furnace build
if (MSVC) if (MSVC)
list(APPEND DEPENDENCIES_COMPILE_OPTIONS "/DHAVE_LIBC") list(APPEND DEPENDENCIES_COMPILE_OPTIONS "/DHAVE_LIBC")
@ -500,6 +508,8 @@ endif()
if (MSVC) if (MSVC)
add_executable(furnace WIN32 ${USED_SOURCES}) add_executable(furnace WIN32 ${USED_SOURCES})
elseif(ANDROID)
add_library(furnace SHARED ${USED_SOURCES})
else() else()
add_executable(furnace ${USED_SOURCES}) add_executable(furnace ${USED_SOURCES})
endif() endif()
@ -521,9 +531,10 @@ if (PKG_CONFIG_FOUND AND (SYSTEM_FMT OR SYSTEM_LIBSNDFILE OR SYSTEM_ZLIB OR SYST
endif() endif()
endif() endif()
install(TARGETS furnace RUNTIME DESTINATION bin) if (NOT ANDROID)
install(TARGETS furnace RUNTIME DESTINATION bin)
if (NOT WIN32 AND NOT APPLE) if (NOT WIN32 AND NOT APPLE)
include(GNUInstallDirs) include(GNUInstallDirs)
install(FILES res/furnace.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications) install(FILES res/furnace.desktop DESTINATION ${CMAKE_INSTALL_DATADIR}/applications)
install(FILES res/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) install(FILES res/furnace.appdata.xml DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo)
@ -531,13 +542,13 @@ if (NOT WIN32 AND NOT APPLE)
install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/furnace) install(FILES LICENSE DESTINATION ${CMAKE_INSTALL_DATADIR}/licenses/furnace)
install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace) install(DIRECTORY demos DESTINATION ${CMAKE_INSTALL_DATADIR}/furnace)
install(FILES res/logo.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/1024x1024/apps) install(FILES res/logo.png RENAME furnace.png DESTINATION ${CMAKE_INSTALL_DATADIR}/icons/hicolor/1024x1024/apps)
endif() endif()
set(CPACK_PACKAGE_NAME "Furnace") set(CPACK_PACKAGE_NAME "Furnace")
set(CPACK_PACKAGE_VENDOR "tildearrow") set(CPACK_PACKAGE_VENDOR "tildearrow")
set(CPACK_PACKAGE_DESCRIPTION "free and open-source chiptune tracker") set(CPACK_PACKAGE_DESCRIPTION "free and open-source chiptune tracker")
if (APPLE) if (APPLE)
set(CPACK_GENERATOR Bundle) set(CPACK_GENERATOR Bundle)
set(CPACK_DMG_SLA_DIR ${CMAKE_SOURCE_DIR}/res/macLicense) set(CPACK_DMG_SLA_DIR ${CMAKE_SOURCE_DIR}/res/macLicense)
set(CPACK_DMG_SLA_LANGUAGES en) set(CPACK_DMG_SLA_LANGUAGES en)
@ -546,6 +557,7 @@ if (APPLE)
set(CPACK_BUNDLE_PLIST ${CMAKE_SOURCE_DIR}/res/Info.plist) set(CPACK_BUNDLE_PLIST ${CMAKE_SOURCE_DIR}/res/Info.plist)
set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/res/icon.icns) set(CPACK_BUNDLE_ICON ${CMAKE_SOURCE_DIR}/res/icon.icns)
set(CPACK_BUNDLE_STARTUP_COMMAND "furnace") set(CPACK_BUNDLE_STARTUP_COMMAND "furnace")
endif() endif()
include(CPack) include(CPack)
endif()

View file

@ -2648,6 +2648,8 @@ bool DivEngine::init() {
// init config // init config
#ifdef _WIN32 #ifdef _WIN32
configPath=getWinConfigPath(); configPath=getWinConfigPath();
#elif defined(ANDROID)
configPath=SDL_GetPrefPath("tildearrow","furnace");
#else #else
struct stat st; struct stat st;
char* home=getenv("HOME"); char* home=getenv("HOME");

View file

@ -243,7 +243,7 @@ void initParams() {
// TODO: add crash log // TODO: add crash log
int main(int argc, char** argv) { int main(int argc, char** argv) {
initLog(); initLog();
#if !(defined(__APPLE__) || defined(_WIN32)) #if !(defined(__APPLE__) || defined(_WIN32) || defined(ANDROID))
// workaround for Wayland HiDPI issue // workaround for Wayland HiDPI issue
if (getenv("SDL_VIDEODRIVER")==NULL) { if (getenv("SDL_VIDEODRIVER")==NULL) {
setenv("SDL_VIDEODRIVER","x11",1); setenv("SDL_VIDEODRIVER","x11",1);