diff --git a/alethzero/CMakeLists.txt b/alethzero/CMakeLists.txt index 656f03ea6..b9dd8635c 100644 --- a/alethzero/CMakeLists.txt +++ b/alethzero/CMakeLists.txt @@ -4,38 +4,31 @@ if ("${TARGET_PLATFORM}" STREQUAL "w64") cmake_policy(SET CMP0020 NEW) endif () + set(CMAKE_INCLUDE_CURRENT_DIR ON) aux_source_directory(. SRC_LIST) include_directories(..) link_directories(../libethereum) -# brew install qt5 libpng -# install X11 (now called XQuartz) -if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - execute_process( - COMMAND brew info qt5 | grep Cellar | awk -F ' ' '{print $1}' - OUTPUT_VARIABLE osx_qt5 - OUTPUT_STRIP_TRAILING_WHITESPACE) +# Find Qt5 for Apple and update src_list for windows +if (APPLE) + # homebrew defaults to qt4 and installs qt5 as 'keg-only' + # which places it into /usr/local/opt insteadof /usr/local. + set(CMAKE_PREFIX_PATH /usr/local/opt/qt5) include_directories(/usr/local/opt/qt5/include /usr/local/include) -endif(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - -if (${TARGET_PLATFORM} STREQUAL "w64") +elseif (${TARGET_PLATFORM} STREQUAL "w64") set(SRC_LIST ${SRC_LIST} ../windows/qt_plugin_import.cpp) -else () endif () -find_package(Qt5Widgets REQUIRED) +find_package(Qt5Widgets REQUIRED) +qt5_wrap_ui(Main.ui) -if(!APPLE) - add_executable(alethzero Main.ui ${SRC_LIST}) - qt5_wrap_ui(ui_Main.h Main.ui) - qt5_use_modules(alethzero Widgets Network ) - target_link_libraries(alethzero ethereum) - install( TARGETS alethzero RUNTIME DESTINATION bin ) -else() +# Set name of binary and add_executable() +if (APPLE) + set(EXECUTEABLE AlethZero) set(CMAKE_INSTALL_PREFIX ./) set(BIN_INSTALL_DIR ".") set(DOC_INSTALL_DIR ".") @@ -47,65 +40,59 @@ else() set(MACOSX_BUNDLE_SHORT_VERSION_STRING "${PROJECT_VERSION}") set(MACOSX_BUNDLE_COPYRIGHT "${PROJECT_COPYRIGHT_YEAR} ${PROJECT_VENDOR}") set(MACOSX_BUNDLE_GUI_IDENTIFIER "${PROJECT_DOMAIN_SECOND}.${PROJECT_DOMAIN_FIRST}") - set(MACOSX_BUNDLE_BUNDLE_NAME "AlethZero") + set(MACOSX_BUNDLE_BUNDLE_NAME ${EXECUTEABLE}) + include(BundleUtilities) + + add_executable(${EXECUTEABLE} MACOSX_BUNDLE Main.ui ${SRC_LIST}) +else () + set(EXECUTABLE alethzero) + add_executable(${EXECUTEABLE} Main.ui ${SRC_LIST}) +endif () - INCLUDE(BundleUtilities) +qt5_use_modules(${EXECUTEABLE} Core Gui Widgets Network) +target_link_libraries(${EXECUTEABLE} ethereum) - ADD_EXECUTABLE( - AlethZero - MACOSX_BUNDLE - Main.ui ${SRC_LIST} - ) - - set_target_properties(AlethZero PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/EthereumMacOSXBundleInfo.plist.in") - qt5_wrap_ui(ui_Main.h Main.ui) - qt5_use_modules(AlethZero Widgets Network) - target_link_libraries(AlethZero ethereum) +if (APPLE) + set_target_properties(${EXECUTEABLE} PROPERTIES MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/EthereumMacOSXBundleInfo.plist.in") - SET_SOURCE_FILES_PROPERTIES( - AlethZero - PROPERTIES - MACOSX_PACKAGE_LOCATION MacOS - ) + set_source_files_properties(${EXECUTEABLE} PROPERTIES MACOSX_PACKAGE_LOCATION MacOS) - if(NOT CMAKE_BUILD_TYPE) + # This is a workaround for when the build-type defaults to Debug, but isn't + # populated for macros. + if (NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE Debug) - endif() + endif () set(BUILD_TYPE ${CMAKE_BUILD_TYPE}) get_filename_component(APP_INSTALL_PATH ${CMAKE_INSTALL_PREFIX} REALPATH) - set(APPS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/AlethZero.app) # CMAKE_CURRENT_BINARY_DIR, CMAKE_RUNTIME_OUTPUT_DIRECTORY + set(APPS ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${EXECUTEABLE}.app) # CMAKE_CURRENT_BINARY_DIR, CMAKE_RUNTIME_OUTPUT_DIRECTORY install(CODE " include(BundleUtilities) set(BU_CHMOD_BUNDLE_ITEMS 1) fixup_bundle(\"${APPS}\" \"${BUNDLELIBS}\" \"\") " COMPONENT RUNTIME ) - add_custom_target(addframeworks ALL - COMMAND /usr/local/opt/qt5/bin/macdeployqt ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/AlethZero.app + add_custom_target(addframeworks ALL + COMMAND /usr/local/opt/qt5/bin/macdeployqt ${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_BUILD_TYPE}/${EXECUTEABLE}.app WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} DEPENDS ${PROJECT_NAME} ) -endif() - -if (${TARGET_PLATFORM} STREQUAL "w64") +elseif (${TARGET_PLATFORM} STREQUAL "w64") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-keep-inline-dllexport -static-libgcc -static-libstdc++ -static") set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-s -Wl,-subsystem,windows -mthreads -L/usr/x86_64-w64-mingw32/plugins/platforms") - target_link_libraries(alethzero gcc) - target_link_libraries(alethzero mingw32 qtmain mswsock iphlpapi qwindows shlwapi Qt5PlatformSupport gdi32 comdlg32 oleaut32 imm32 winmm ole32 uuid ws2_32) - target_link_libraries(alethzero boost_system-mt-s) - target_link_libraries(alethzero boost_filesystem-mt-s) - target_link_libraries(alethzero boost_thread_win32-mt-s) - target_link_libraries(alethzero Qt5PlatformSupport) + target_link_libraries(${EXECUTEABLE} gcc) + target_link_libraries(${EXECUTEABLE} mingw32 qtmain mswsock iphlpapi qwindows shlwapi Qt5PlatformSupport gdi32 comdlg32 oleaut32 imm32 winmm ole32 uuid ws2_32) + target_link_libraries(${EXECUTEABLE} boost_system-mt-s) + target_link_libraries(${EXECUTEABLE} boost_filesystem-mt-s) + target_link_libraries(${EXECUTEABLE} boost_thread_win32-mt-s) + target_link_libraries(${EXECUTEABLE} Qt5PlatformSupport) set(CMAKE_SHARED_LIBRARY_LINK_CXX_FLAGS) else () - target_link_libraries(alethzero boost_system) - target_link_libraries(alethzero boost_filesystem) + target_link_libraries(${EXECUTEABLE} boost_system) + target_link_libraries(${EXECUTEABLE} boost_filesystem) find_package(Threads REQUIRED) - target_link_libraries(alethzero ${CMAKE_THREAD_LIBS_INIT}) + target_link_libraries(${EXECUTEABLE} ${CMAKE_THREAD_LIBS_INIT}) + install( TARGETS ${EXECUTEABLE} RUNTIME DESTINATION bin ) endif () -qt5_use_modules(alethzero Core Gui Widgets Network) - -install( TARGETS alethzero RUNTIME DESTINATION bin )