117 lines
3.1 KiB
CMake
117 lines
3.1 KiB
CMake
|
|
add_subdirectory(tests)
|
|
|
|
find_package(Threads REQUIRED)
|
|
include(GenerateCppResourceFile)
|
|
|
|
set(UPDATER_SOURCES
|
|
AppInfo.cpp
|
|
AppInfo.h
|
|
DirIterator.cpp
|
|
DirIterator.h
|
|
FileUtils.cpp
|
|
FileUtils.h
|
|
Log.cpp
|
|
Log.h
|
|
ProcessUtils.cpp
|
|
ProcessUtils.h
|
|
StandardDirs.cpp
|
|
StandardDirs.h
|
|
UpdateDialog.cpp
|
|
UpdateInstaller.cpp
|
|
UpdateInstaller.h
|
|
UpdateScript.cpp
|
|
UpdateScript.h
|
|
UpdaterOptions.cpp
|
|
UpdaterOptions.h
|
|
)
|
|
|
|
add_definitions(-DTIXML_USE_STL)
|
|
|
|
if(WIN32)
|
|
set(UPDATER_SOURCES ${UPDATER_SOURCES} UpdateDialogWin32.cpp UpdateDialogWin32.h)
|
|
endif()
|
|
|
|
if(UNIX)
|
|
set(UPDATER_SOURCES ${UPDATER_SOURCES} UpdateDialogAscii.cpp UpdateDialogAscii.h)
|
|
add_definitions(-Wall -Wconversion)
|
|
if(APPLE)
|
|
set(MAC_DOCK_ICON_CPP_FILE ${CMAKE_CURRENT_BINARY_DIR}/mac_dock_icon.cpp)
|
|
set(MAC_INFO_PLIST_FILE ${CMAKE_CURRENT_BINARY_DIR}/mac_info_plist.cpp)
|
|
generate_cpp_resource_file(resource_macdockicon ${CMAKE_CURRENT_SOURCE_DIR}/resources/mac.icns ${MAC_DOCK_ICON_CPP_FILE})
|
|
generate_cpp_resource_file(resource_macplist ${CMAKE_CURRENT_SOURCE_DIR}/resources/Info.plist ${MAC_INFO_PLIST_FILE})
|
|
set(UPDATER_SOURCES ${UPDATER_SOURCES}
|
|
MacBundle.h
|
|
MacBundle.cpp
|
|
StandardDirs.mm
|
|
StlSymbolsLeopard.cpp
|
|
UpdateDialogCocoa.mm
|
|
UpdateDialogCocoa.h
|
|
mac_dock_icon.cpp
|
|
mac_info_plist.cpp
|
|
)
|
|
else() # linuxes and other similar systems
|
|
find_package(GTK2 REQUIRED gtk)
|
|
include_directories(${GTK2_INCLUDE_DIRS})
|
|
add_library(updatergtk SHARED UpdateDialogGtk.cpp UpdateDialogGtk.h)
|
|
target_link_libraries(updatergtk ${GTK2_LIBRARIES})
|
|
|
|
# embed the GTK helper library into the updater binary.
|
|
# At runtime it will be extracted and loaded if the
|
|
# GTK libraries are available
|
|
get_property(GTK_UPDATER_LIB TARGET updatergtk PROPERTY LOCATION)
|
|
set(GTK_BIN_CPP_FILE ${CMAKE_CURRENT_BINARY_DIR}/libupdatergtk.cpp)
|
|
generate_cpp_resource_file(resource_updatergtk ${GTK_UPDATER_LIB} ${GTK_BIN_CPP_FILE})
|
|
add_dependencies(resource_updatergtk updatergtk)
|
|
|
|
set(UPDATER_SOURCES ${UPDATER_SOURCES} UpdateDialogGtkFactory.cpp UpdateDialogGtkFactory.h ${GTK_BIN_CPP_FILE})
|
|
endif()
|
|
endif()
|
|
|
|
add_library(updatershared STATIC ${UPDATER_SOURCES})
|
|
|
|
target_link_libraries(updatershared anyoption tinyxml)
|
|
|
|
if(UNIX)
|
|
if(APPLE)
|
|
find_library(COCOA_LIBRARY Cocoa)
|
|
find_library(SECURITY_LIBRARY Security)
|
|
target_link_libraries(updatershared ${SECURITY_LIBRARY} ${COCOA_LIBRARY})
|
|
else()
|
|
add_dependencies(updatershared resource_updatergtk)
|
|
endif()
|
|
target_link_libraries(updatershared pthread dl)
|
|
endif()
|
|
|
|
if(WIN32)
|
|
set(EXE_FLAGS WIN32 resources/updater.rc)
|
|
endif()
|
|
|
|
add_executable(updater ${EXE_FLAGS} main.cpp)
|
|
|
|
target_link_libraries(updater updatershared)
|
|
|
|
|
|
#### Updater Executable ####
|
|
if(WIN32)
|
|
install(TARGETS updater
|
|
BUNDLE DESTINATION . COMPONENT Runtime
|
|
LIBRARY DESTINATION . COMPONENT Runtime
|
|
RUNTIME DESTINATION . COMPONENT Runtime
|
|
)
|
|
endif()
|
|
if(UNIX)
|
|
if(APPLE)
|
|
install(TARGETS updater
|
|
BUNDLE DESTINATION . COMPONENT Runtime
|
|
RUNTIME DESTINATION MultiMC.app/Contents/MacOS COMPONENT Runtime
|
|
)
|
|
else()
|
|
install(TARGETS updater
|
|
BUNDLE DESTINATION . COMPONENT Runtime
|
|
RUNTIME DESTINATION bin COMPONENT Runtime
|
|
)
|
|
endif()
|
|
endif()
|
|
|