[glui] Add new port (#9155)

* [glui] Add new port

* [freeglut] Fix static linking

* [glui] Fix description

* [glui] Update
This commit is contained in:
myd7349 2020-01-16 08:46:35 +08:00 committed by Victor Romero
parent 6f41e5cc7c
commit b2f7823dd2
6 changed files with 130 additions and 1 deletions

View File

@ -1,4 +1,4 @@
Source: freeglut
Version: 3.0.0-7
Version: 3.0.0-8
Homepage: https://sourceforge.net/projects/freeglut/
Description: Open source implementation of GLUT with source and binary backwards compatibility.

View File

@ -32,6 +32,14 @@ string(REGEX REPLACE "\"freeglut_static.lib\""
"\"freeglut.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}")
string(REGEX REPLACE "\"freeglut_staticd.lib\""
"\"freeglutd.lib\"" FREEGLUT_STDH "${FREEGLUT_STDH}")
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
string(REPLACE
"ifdef FREEGLUT_STATIC"
"if 1 //ifdef FREEGLUT_STATIC"
FREEGLUT_STDH
"${FREEGLUT_STDH}"
)
endif()
file(WRITE ${SOURCE_PATH}/include/GL/freeglut_std.h "${FREEGLUT_STDH}")
vcpkg_configure_cmake(

5
ports/glui/CONTROL Normal file
View File

@ -0,0 +1,5 @@
Source: glui
Version: 2019-11-30
Description: GLUI is a GLUT-based C++ user interface library
Homepage: https://github.com/libglui/glui
Build-Depends: freeglut

View File

@ -0,0 +1,70 @@
diff --git a/CMakeLists.txt b/CMakeLists.txt
index c0f7d32..8446f3c 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -59,6 +59,22 @@ target_include_directories(glui_obj
# create static *and* shared libraries without double compilation
set_target_properties( glui_obj PROPERTIES POSITION_INDEPENDENT_CODE 1)
+if (MSVC)
+ target_compile_options(glui_obj
+ PRIVATE
+ /D_CRT_SECURE_NO_WARNINGS
+ /wd4244
+ /wd4305
+ )
+endif()
+
+if(BUILD_SHARED_LIBS)
+ if(WIN32)
+ target_compile_definitions(glui_obj
+ PRIVATE GLUI_BUILDING_LIB
+ PUBLIC GLUIDLL
+ )
+ endif()
add_library(glui SHARED $<TARGET_OBJECTS:glui_obj>)
target_include_directories(glui
PUBLIC
@@ -71,7 +87,7 @@ set_target_properties(glui PROPERTIES
DEBUG_POSTFIX "d"
VERSION ${PROJECT_VERSION}
SOVERSION ${PROJECT_VERSION})
-
+else()
add_library(glui_static STATIC $<TARGET_OBJECTS:glui_obj>)
target_include_directories(glui_static
PUBLIC
@@ -81,7 +97,9 @@ target_include_directories(glui_static
${GLUT_INCLUDE_DIR})
target_link_libraries(glui_static PUBLIC ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
set_target_properties(glui_static PROPERTIES DEBUG_POSTFIX "d")
+endif()
+if(GLUI_BUILD_EXAMPLES)
add_executable(ppm2array tools/ppm.cpp tools/ppm2array.cpp)
target_link_libraries(ppm2array)
@@ -97,7 +115,7 @@ add_executable(example5 example/example5.cpp)
target_link_libraries(example5 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
add_executable(example6 example/example6.cpp)
target_link_libraries(example6 glui_static ${GLUT_LIBRARIES} ${OPENGL_LIBRARIES})
-
+endif()
####
@@ -130,8 +148,13 @@ configure_package_config_file(
)
# Targets:
+if(BUILD_SHARED_LIBS)
+ set(glui_target glui)
+else()
+ set(glui_target glui_static)
+endif()
install(
- TARGETS glui_static glui
+ TARGETS ${glui_target}
EXPORT "${targets_export_name}"
LIBRARY DESTINATION "lib"
ARCHIVE DESTINATION "lib"

37
ports/glui/portfile.cmake Normal file
View File

@ -0,0 +1,37 @@
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO libglui/glui
REF 093edc777c02118282910bdee59f8db1bd46a84d
SHA512 650e169a6a55cd7d599176ac0767cd95b511fbc0a9b27aab2fa4f94a6395fa1a5762b6c23f5f1a9fc5ac9ce70c44fee4e4cbb6d6afd2307130cedfb80aae877a
HEAD_REF master
PATCHES
install-one-flavor.patch
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/${PORT})
file(COPY
${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake
DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT}
)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
if(VCPKG_LIBRARY_LINKAGE STREQUAL dynamic)
vcpkg_replace_string(
${CURRENT_PACKAGES_DIR}/include/GL/glui.h
"ifdef GLUIDLL"
"if 1 //ifdef GLUIDLL"
)
endif()
file(INSTALL ${SOURCE_PATH}/license.md DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)

View File

@ -0,0 +1,9 @@
_find_package(${ARGS})
if(TARGET glui::glui AND NOT TARGET glui::glui_static)
add_library(glui::glui_static INTERFACE IMPORTED)
set_target_properties(glui::glui_static PROPERTIES INTERFACE_LINK_LIBRARIES glui::glui)
elseif(TARGET glui::glui_static AND NOT TARGET glui::glui)
add_library(glui::glui INTERFACE IMPORTED)
set_target_properties(glui::glui PROPERTIES INTERFACE_LINK_LIBRARIES glui::glui_static)
endif()