From 26fabaf8803cbf4ce36b98c542e2224277e56c98 Mon Sep 17 00:00:00 2001 From: Robert Schumacher Date: Mon, 5 Mar 2018 12:07:43 -0800 Subject: [PATCH] [glib][atk] Disable static builds, fix generation to happen outside the source directory --- ports/atk/CMakeLists.txt | 31 ++++++++++++++++++------------- ports/atk/CONTROL | 2 +- ports/atk/portfile.cmake | 5 ++--- ports/glib/CMakeLists.txt | 5 ++++- ports/glib/CONTROL | 2 +- ports/glib/portfile.cmake | 7 +++---- 6 files changed, 29 insertions(+), 23 deletions(-) diff --git a/ports/atk/CMakeLists.txt b/ports/atk/CMakeLists.txt index f260e09e977df..41937fff940f1 100644 --- a/ports/atk/CMakeLists.txt +++ b/ports/atk/CMakeLists.txt @@ -11,21 +11,26 @@ endif() # generate atkmarshal.c and atkmarshal.h source files # glib-genmarshal should be installed along with glib -if(NOT EXISTS ${CMAKE_SOURCE_DIR}/atk/atkmarshal.h OR NOT EXISTS ${CMAKE_SOURCE_DIR}/atk/atkmarshal.c) - find_program(GLIB_GENMARSHAL glib-genmarshal PATH_SUFFIXES glib) - execute_process( - COMMAND ${GLIB_GENMARSHAL} --prefix=atk_marshal atkmarshal.list --header - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/atk - OUTPUT_FILE ${CMAKE_SOURCE_DIR}/atk/atkmarshal.h) - execute_process( - COMMAND ${GLIB_GENMARSHAL} --prefix=atk_marshal atkmarshal.list --body - WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/atk - OUTPUT_FILE ${CMAKE_SOURCE_DIR}/atk/atkmarshal.c) -endif() +find_program(GLIB_GENMARSHAL glib-genmarshal PATH_SUFFIXES glib) +file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/atk) + +message("Generating atkmarshal.h: ${GLIB_GENMARSHAL} --prefix=atk_marshal ${CMAKE_CURRENT_SOURCE_DIR}/atk/atkmarshal.list --header") +execute_process( + COMMAND ${GLIB_GENMARSHAL} --prefix=atk_marshal ${CMAKE_CURRENT_SOURCE_DIR}/atk/atkmarshal.list --header + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/atk + OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/atk/atkmarshal.h +) + +message("Generating atkmarshal.c: ${GLIB_GENMARSHAL} --prefix=atk_marshal ${CMAKE_CURRENT_SOURCE_DIR}/atk/atkmarshal.list --body") +execute_process( + COMMAND ${GLIB_GENMARSHAL} --prefix=atk_marshal ${CMAKE_CURRENT_SOURCE_DIR}/atk/atkmarshal.list --body + WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/atk + OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/atk/atkmarshal.c +) -configure_file(config.h.win32 ${CMAKE_SOURCE_DIR}/config.h COPYONLY) +configure_file(config.h.win32 ${CMAKE_CURRENT_BINARY_DIR}/config.h COPYONLY) add_definitions(-DHAVE_CONFIG_H) -include_directories(. ./atk) +include_directories(. ./atk ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_BINARY_DIR}/atk) find_path(GLIB_INCLUDE_DIR glib.h) find_library(GLIB_GLIB_LIBRARY glib-${GLIB_LIB_VERSION}) diff --git a/ports/atk/CONTROL b/ports/atk/CONTROL index 0af45eab49fcc..b4bdda0ebc759 100644 --- a/ports/atk/CONTROL +++ b/ports/atk/CONTROL @@ -1,4 +1,4 @@ Source: atk -Version: 2.24.0-1 +Version: 2.24.0-2 Description: GNOME Accessibility Toolkit Build-Depends: glib, gettext diff --git a/ports/atk/portfile.cmake b/ports/atk/portfile.cmake index 66207d5ca997a..8b65312e5ed10 100644 --- a/ports/atk/portfile.cmake +++ b/ports/atk/portfile.cmake @@ -1,7 +1,6 @@ # ATK uses DllMain -if (VCPKG_LIBRARY_LINKAGE STREQUAL static) - message(STATUS "Warning: Static building not supported. Building dynamic.") - set(VCPKG_LIBRARY_LINKAGE dynamic) +if (VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR VCPKG_CRT_LINKAGE STREQUAL "static") + message(FATAL_ERROR "ATK only supports dynamic library and crt linkage") endif() include(vcpkg_common_functions) diff --git a/ports/glib/CMakeLists.txt b/ports/glib/CMakeLists.txt index 40763e8cdfd05..25218a7f8e32a 100644 --- a/ports/glib/CMakeLists.txt +++ b/ports/glib/CMakeLists.txt @@ -27,6 +27,8 @@ find_library(PCRE_LIBRARY pcre${PCRE_SUFFIX}) # libiconv find_path(ICONV_INCLUDE_DIR iconv.h) find_library(ICONV_LIBRARY NAMES iconv libiconv) +# libiconv +find_library(CHARSET_LIBRARY NAMES charset libcharset) # libffi find_path(FFI_INCLUDE_DIR ffi.h) find_library(FFI_LIBRARY NAMES ffi libffi) @@ -64,7 +66,7 @@ extract_vcproj_sources(win32/vs14/glib.vcxproj GLIB_SOURCES) list(APPEND GLIB_SOURCES glib/libcharset/localcharset.c) # modified internal version with prefixed symbols add_library(glib ${GLIB_SOURCES}) target_compile_definitions(glib PRIVATE USE_SYSTEM_PCRE ${GLIB_EXPORT_MACRO} GLIB_COMPILATION G_LOG_DOMAIN="GLib" LIBDIR) -target_link_libraries(glib ws2_32 winmm ${PCRE_LIBRARY} ${ICONV_LIBRARY} ${LIBINTL_LIBRARY}) +target_link_libraries(glib ws2_32 winmm ${PCRE_LIBRARY} ${ICONV_LIBRARY} ${CHARSET_LIBRARY} ${LIBINTL_LIBRARY}) target_include_directories(glib PRIVATE ${PCRE_INCLUDE_DIR} ${ICONV_INCLUDE_DIR}) target_include_directories(glib PUBLIC ${LIBINTL_INCLUDE_DIR}) list(APPEND GLIB_TARGETS glib) @@ -161,5 +163,6 @@ message(STATUS "Link-time dependencies:") message(STATUS " " ${ZLIB_LIBRARIES}) message(STATUS " " ${PCRE_LIBRARY}) message(STATUS " " ${ICONV_LIBRARY}) +message(STATUS " " ${CHARSET_LIBRARY}) message(STATUS " " ${FFI_LIBRARY}) message(STATUS " " ${LIBINTL_LIBRARY}) diff --git a/ports/glib/CONTROL b/ports/glib/CONTROL index a4e467bbc11d5..4f06e4e2eb38d 100644 --- a/ports/glib/CONTROL +++ b/ports/glib/CONTROL @@ -1,4 +1,4 @@ Source: glib -Version: 2.52.3-1 +Version: 2.52.3-2 Description: Portable, general-purpose utility library. Build-Depends: zlib, pcre, libffi, gettext, libiconv diff --git a/ports/glib/portfile.cmake b/ports/glib/portfile.cmake index 9482b43864e84..9618b66861c62 100644 --- a/ports/glib/portfile.cmake +++ b/ports/glib/portfile.cmake @@ -1,12 +1,11 @@ # Glib uses winapi functions not available in WindowsStore -if (VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore) +if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL WindowsStore) message(FATAL_ERROR "Error: UWP builds are currently not supported.") endif() # Glib relies on DllMain -if (VCPKG_LIBRARY_LINKAGE STREQUAL static) - message(STATUS "Warning: Static building not supported. Building dynamic.") - set(VCPKG_LIBRARY_LINKAGE dynamic) +if(VCPKG_LIBRARY_LINKAGE STREQUAL "static" OR VCPKG_CRT_LINKAGE STREQUAL "static") + message(FATAL_ERROR "Glib only supports dynamic library and crt linkage") endif() include(vcpkg_common_functions)