aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStanislav Ershov <digital.stream.of.mind@gmail.com>2018-02-27 18:34:43 +0300
committerRobert Schumacher <roschuma@microsoft.com>2018-02-27 07:34:43 -0800
commitcbe62a8e1e619538621d398ec300b59651abd9a8 (patch)
tree06831e427cfff20a8f3c8f62eddbb08c1e280ae8
parent9db298e34a3ad6efebd4f0d95a0ca45e2d70b377 (diff)
downloadvcpkg-cbe62a8e1e619538621d398ec300b59651abd9a8.tar.gz
vcpkg-cbe62a8e1e619538621d398ec300b59651abd9a8.zip
[gl3w] Initial port (#2561)
* [gl3w] Initial port * [gl3w] Call python inside the portfile -- CMakeLists.txt simplification
-rw-r--r--ports/gl3w/0001-enable-shared-build.patch60
-rw-r--r--ports/gl3w/CMakeLists.txt41
-rw-r--r--ports/gl3w/CONTROL3
-rw-r--r--ports/gl3w/portfile.cmake53
4 files changed, 157 insertions, 0 deletions
diff --git a/ports/gl3w/0001-enable-shared-build.patch b/ports/gl3w/0001-enable-shared-build.patch
new file mode 100644
index 000000000..f43437e9d
--- /dev/null
+++ b/ports/gl3w/0001-enable-shared-build.patch
@@ -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
+
diff --git a/ports/gl3w/CMakeLists.txt b/ports/gl3w/CMakeLists.txt
new file mode 100644
index 000000000..30a94eddb
--- /dev/null
+++ b/ports/gl3w/CMakeLists.txt
@@ -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()
diff --git a/ports/gl3w/CONTROL b/ports/gl3w/CONTROL
new file mode 100644
index 000000000..10a2c2b76
--- /dev/null
+++ b/ports/gl3w/CONTROL
@@ -0,0 +1,3 @@
+Source: gl3w
+Version: 8f7f459d
+Description: Simple OpenGL core profile loading
diff --git a/ports/gl3w/portfile.cmake b/ports/gl3w/portfile.cmake
new file mode 100644
index 000000000..bb3f245c9
--- /dev/null
+++ b/ports/gl3w/portfile.cmake
@@ -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)