[gl3w] Initial port (#2561)

* [gl3w] Initial port

* [gl3w] Call python inside the portfile -- CMakeLists.txt simplification
This commit is contained in:
Stanislav Ershov 2018-02-27 18:34:43 +03:00 committed by Robert Schumacher
parent 9db298e34a
commit cbe62a8e1e
4 changed files with 157 additions and 0 deletions

View File

@ -0,0 +1,60 @@
From 5f482a64c642f830f1d25f8abae7cae6dd2c6c2b Mon Sep 17 00:00:00 2001
From: Stanislav Ershov <digital.stream.of.mind@gmail.com>
Date: Mon, 8 Jan 2018 03:16:07 +0300
Subject: [PATCH] enable shared build
---
gl3w_gen.py | 18 ++++++++++++------
1 file changed, 12 insertions(+), 6 deletions(-)
diff --git a/gl3w_gen.py b/gl3w_gen.py
index 611331a..3515cf9 100755
--- a/gl3w_gen.py
+++ b/gl3w_gen.py
@@ -130,6 +130,10 @@ with open(os.path.join(args.root, 'include/GL/gl3w.h'), 'wb') as f:
#include <GL/glcorearb.h>
+#ifndef GL3W_API
+ #define GL3W_API
+#endif
+
#ifndef __gl_h_
#define __gl_h_
#endif
@@ -147,10 +151,10 @@ typedef void (*GL3WglProc)(void);
typedef GL3WglProc (*GL3WGetProcAddressProc)(const char *proc);
/* gl3w api */
-int gl3wInit(void);
-int gl3wInit2(GL3WGetProcAddressProc proc);
-int gl3wIsSupported(int major, int minor);
-GL3WglProc gl3wGetProcAddress(const char *proc);
+GL3W_API int gl3wInit(void);
+GL3W_API int gl3wInit2(GL3WGetProcAddressProc proc);
+GL3W_API int gl3wIsSupported(int major, int minor);
+GL3W_API GL3WglProc gl3wGetProcAddress(const char *proc);
/* gl3w internal state */
''')
@@ -162,7 +168,7 @@ GL3WglProc gl3wGetProcAddress(const char *proc);
write(f, r''' } gl;
};
-extern union GL3WProcs gl3wProcs;
+GL3W_API extern union GL3WProcs gl3wProcs;
/* OpenGL functions */
''')
@@ -329,7 +333,7 @@ static const char *proc_names[] = {
write(f, '\t"{0}",\n'.format(proc))
write(f, r'''};
-union GL3WProcs gl3wProcs;
+GL3W_API union GL3WProcs gl3wProcs;
static void load_procs(GL3WGetProcAddressProc proc)
{
--
2.15.0.windows.1

41
ports/gl3w/CMakeLists.txt Normal file
View File

@ -0,0 +1,41 @@
cmake_minimum_required(VERSION 3.9)
project(gl3w C)
set(HEADER_FILES
"include/GL/gl3w.h"
"include/GL/glcorearb.h"
)
find_package(OpenGL REQUIRED)
add_library(gl3w src/gl3w.c)
target_include_directories(gl3w PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:include>
)
if(BUILD_SHARED_LIBS)
target_compile_definitions(gl3w PRIVATE "-DGL3W_API=__declspec(dllexport)")
endif()
target_include_directories(gl3w PRIVATE ${OPENGL_INCLUDE_DIR})
target_link_libraries(gl3w PRIVATE ${OPENGL_LIBRARIES})
install(TARGETS gl3w
EXPORT gl3wExport
RUNTIME DESTINATION bin
LIBRARY DESTINATION lib
ARCHIVE DESTINATION lib
)
install(
EXPORT gl3wExport
FILE gl3wConfig.cmake
NAMESPACE unofficial::gl3w::
DESTINATION share/gl3w
)
if(NOT DISABLE_INSTALL_HEADERS)
install(DIRECTORY include/GL DESTINATION include)
endif()

3
ports/gl3w/CONTROL Normal file
View File

@ -0,0 +1,3 @@
Source: gl3w
Version: 8f7f459d
Description: Simple OpenGL core profile loading

53
ports/gl3w/portfile.cmake Normal file
View File

@ -0,0 +1,53 @@
include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO skaslev/gl3w
REF 8f7f459df8725c9614136b49a96023de276219f2
SHA512 7674008716accb25347c81f755f2db7a885ecb5c51b481e0e8f337bc8ee0949a5a58f5816b27a66535ed4da0b9438ba6a6a84712560c7b1a0f1b2908b4eb81e5
HEAD_REF master
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
vcpkg_download_distfile(
GLCOREARB_H
URLS "http://www.opengl.org/registry/api/GL/glcorearb.h"
FILENAME "glcorearb-2018-02-27.h"
SHA512 02c3672606e6360f2e1e8335fe581bc2d2b3d518b0f24b0c327006a70de07261dace4b53b13e93029a8eb2af43bcba904c4392f2c35ac512c7f278534ef8eb5d
)
file(INSTALL ${GLCOREARB_H} DESTINATION ${SOURCE_PATH}/include/GL RENAME glcorearb.h)
vcpkg_apply_patches(
SOURCE_PATH ${SOURCE_PATH}
PATCHES ${CMAKE_CURRENT_LIST_DIR}/0001-enable-shared-build.patch
)
vcpkg_find_acquire_program(PYTHON3)
vcpkg_execute_required_process(
COMMAND ${PYTHON3} ${SOURCE_PATH}/gl3w_gen.py
WORKING_DIRECTORY ${SOURCE_PATH}
LOGNAME gl3w-gen
)
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS_DEBUG -DDISABLE_INSTALL_HEADERS=ON
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
vcpkg_fixup_cmake_targets(CONFIG_PATH share/gl3w)
if(VCPKG_LIBRARY_LINKAGE STREQUAL "dynamic")
set(HEADER ${CURRENT_PACKAGES_DIR}/include/GL/gl3w.h)
file(READ ${HEADER} _contents)
string(REPLACE "#define GL3W_API" "#define GL3W_API __declspec(dllimport)" _contents "${_contents}")
file(WRITE ${HEADER} "${_contents}")
endif()
file(INSTALL ${SOURCE_PATH}/UNLICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/gl3w RENAME copyright)