Skip to content

Commit 79ac0fc

Browse files
committed
Create Python package and Travis-CI config for building
This build configuration is slimmed down from the TkinterEP/python-gttk build configuration and currently is tested for building on Linux.
1 parent c553edb commit 79ac0fc

File tree

20 files changed

+493
-17836
lines changed

20 files changed

+493
-17836
lines changed

.gitignore

Lines changed: 107 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,107 @@
1-
win/Release*
2-
win/nmakehlp.out
3-
win/versions.vc
1+
# Prerequisites
2+
*.d
3+
4+
# Object files
5+
*.o
6+
*.ko
7+
*.obj
8+
*.elf
9+
10+
# Linker output
11+
*.ilk
12+
*.map
13+
*.exp
14+
15+
# Precompiled Headers
16+
*.gch
17+
*.pch
18+
19+
# Libraries
20+
*.lib
21+
*.a
22+
*.la
23+
*.lo
24+
25+
# Shared objects (inc. Windows DLLs)
26+
*.dll
27+
*.so
28+
*.so.*
29+
*.dylib
30+
31+
# Executables
32+
*.exe
33+
*.out
34+
*.app
35+
*.i*86
36+
*.x86_64
37+
*.hex
38+
39+
# Debug files
40+
*.dSYM/
41+
*.su
42+
*.idb
43+
*.pdb
44+
45+
# Kernel Module Compile Results
46+
*.mod*
47+
*.cmd
48+
.tmp_versions/
49+
modules.order
50+
Module.symvers
51+
Mkfile.old
52+
dkms.conf
53+
54+
# CLion
55+
/.idea
56+
57+
# CMake
58+
/CMakeFiles
59+
/cmake-build*
60+
61+
# Code::Blocks
62+
*.layout
63+
*.cbp
64+
*.depend
65+
66+
# Project Files
67+
Makefile
68+
main-*
69+
layout.*
70+
!layout.rst
71+
/_skbuild
72+
73+
# CMake
74+
CMakeCache.txt
75+
/CMakeTmp
76+
*CMakeTmp*
77+
*CMakeFiles*
78+
*CMakeCache.txt
79+
*cmake_install.cmake
80+
install_manifest.txt
81+
CTestTestfile.cmake
82+
83+
# Generated files
84+
/library/pkgIndex.tcl
85+
86+
# Python packages
87+
/*.egg-info
88+
/build
89+
/dist
90+
*.pyc
91+
MANIFEST
92+
/venv
93+
94+
# Documentation
95+
/docs/_build
96+
/docs/html
97+
/docs/_doctrees
98+
/docs/doxygen/xml
99+
/html
100+
/latex
101+
102+
# GTK Themes and configuration
103+
/tksvg/*
104+
!/tksvg/__init__.py
105+
106+
# Dependencies Program
107+
/deps

.travis.yml

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
language: python
2+
dist: bionic
3+
compiler: gcc
4+
python:
5+
- "3.8"
6+
services:
7+
- xvfb
8+
addons:
9+
apt:
10+
packages:
11+
- tcl-dev
12+
- tk-dev
13+
install:
14+
- sudo apt install cmake build-essential
15+
- python -m pip install nose scikit-build
16+
script:
17+
- python setup.py bdist_wheel
18+
- python setup.py install
19+
- rm -rf ./tksvg
20+
- python -m nose

CMakeLists.txt

Lines changed: 131 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,131 @@
1+
CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2+
3+
## ===========================================================================
4+
## Project Information
5+
## ===========================================================================
6+
PROJECT ( tksvg )
7+
## Package version information.
8+
SET ( PKG_NAME ${PROJECT_NAME} )
9+
set ( PKG_TARGET_LIB_NAME ${PROJECT_NAME} )
10+
SET ( PKG_MAJOR_VERSION 0 )
11+
SET ( PKG_MINOR_VERSION 7 )
12+
SET ( PKG_BUILD_VERSION 0 )
13+
SET ( PKG_VERSION "${PKG_MAJOR_VERSION}.${PKG_MINOR_VERSION}" )
14+
SET ( PKG_NAME_VERSION ${PKG_NAME}-${PKG_VERSION} )
15+
SET ( PKG_VENDOR "RedFantom" )
16+
SET ( PKG_HOME_DIR ${PROJECT_SOURCE_DIR} )
17+
SET ( NO_MSVCRT ON )
18+
19+
SET ( PKG_SOURCES
20+
generic/nanosvg.h
21+
generic/nanosvgrast.h
22+
generic/tkImgSVG.c)
23+
24+
MESSAGE ( STATUS "===========================================================" )
25+
MESSAGE ( STATUS " Welcome to the ${PKG_NAME} ${PKG_VERSION} build system!" )
26+
MESSAGE ( STATUS " * Selected generator: ${CMAKE_GENERATOR}" )
27+
MESSAGE ( STATUS " * Operating System ID: "
28+
${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_VERSION}-${CMAKE_SYSTEM_PROCESSOR} )
29+
MESSAGE ( STATUS " * Installation Directory: " ${CMAKE_INSTALL_PREFIX} )
30+
MESSAGE ( STATUS "===========================================================" )
31+
32+
## ===========================================================================
33+
## Locate Tcl/Tk
34+
## ===========================================================================
35+
MESSAGE(STATUS "Searching for Tcl/Tk...")
36+
FIND_PACKAGE(TCL REQUIRED)
37+
FIND_PACKAGE(TclStub REQUIRED)
38+
MESSAGE(STATUS " TCL_TCLSH: " ${TCL_TCLSH})
39+
MESSAGE(STATUS " TCL_INCLUDE_PATH: " ${TCL_INCLUDE_PATH})
40+
MESSAGE(STATUS " TCL_STUB_LIBRARY: " ${TCL_STUB_LIBRARY})
41+
MESSAGE(STATUS " TCL_LIBRARY: " ${TCL_LIBRARY})
42+
MESSAGE(STATUS " TK_WISH: " ${TK_WISH})
43+
MESSAGE(STATUS " TK_INCLUDE_PATH: " ${TK_INCLUDE_PATH})
44+
MESSAGE(STATUS " TK_STUB_LIBRARY: " ${TK_STUB_LIBRARY})
45+
MESSAGE(STATUS " TTK_STUB_LIBRARY: " ${TTK_STUB_LIBRARY})
46+
MESSAGE(STATUS " TK_LIBRARY: " ${TK_LIBRARY})
47+
# STRING ( REPLACE stub "" TCL_LIBRARY_STATIC ${TCL_STUB_LIBRARY} )
48+
# STRING ( REPLACE stub "" TK_LIBRARY_STATIC ${TK_STUB_LIBRARY} )
49+
# MESSAGE ( STATUS " TCL_LIBRARY_STATIC: " ${TCL_LIBRARY_STATIC} )
50+
# MESSAGE ( STATUS " TK_LIBRARY_STATIC: " ${TK_LIBRARY_STATIC} )
51+
52+
IF ( WIN32 AND NO_MSVCRT )
53+
STRING ( REPLACE /MD /MT CMAKE_C_FLAGS_RELEASE ${CMAKE_C_FLAGS_RELEASE} )
54+
STRING ( REPLACE /MDd /MTd CMAKE_C_FLAGS_DEBUG ${CMAKE_C_FLAGS_DEBUG} )
55+
STRING ( REPLACE /MD /MT CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE})
56+
STRING ( REPLACE /MDd /MTd CMAKE_CXX_FLAGS_DEBUG ${CMAKE_CXX_FLAGS_DEBUG} )
57+
# SET ( CMAKE_EXE_LINKER_FLAGS
58+
# "${CMAKE_EXE_LINKER_FLAGS} /nodefaultlib:MSVCRT.LIB" )
59+
SET ( CMAKE_EXE_LINKER_FLAGS_RELEASE
60+
"${CMAKE_EXE_LINKER_FLAGS_RELEASE} LIBCMT.LIB" )
61+
SET ( CMAKE_EXE_LINKER_FLAGS_DEBUG
62+
"${CMAKE_EXE_LINKER_FLAGS_DEBUG} LIBCMTD.LIB" )
63+
# SET ( CMAKE_SHARED_LINKER_FLAGS
64+
# "${CMAKE_SHARED_LINKER_FLAGS} /nodefaultlib:MSVCRT.LIB" )
65+
SET ( CMAKE_SHARED_LINKER_FLAGS_RELEASE
66+
"${CMAKE_SHARED_LINKER_FLAGS_RELEASE} LIBCMT.LIB" )
67+
SET ( CMAKE_SHARED_LINKER_FLAGS_DEBUG
68+
"${CMAKE_SHARED_LINKER_FLAGS_DEBUG}
69+
/nodefaultlib:LIBCMT.LIB LIBCMTD.LIB" )
70+
ADD_DEFINITIONS ( -D_STATIC_CPPLIB )
71+
ADD_DEFINITIONS ( -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES=1 )
72+
ADD_DEFINITIONS ( -D_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES_COUNT=1 )
73+
ENDIF ( WIN32 AND NO_MSVCRT )
74+
75+
IF ( WIN32 )
76+
ADD_DEFINITIONS ( -DWIN32 )
77+
ADD_DEFINITIONS ( -D_WIN32 )
78+
ADD_DEFINITIONS ( -D_WINDOWS )
79+
ADD_DEFINITIONS ( -D__WIN32__ )
80+
SET ( CMAKE_SHARED_LIBRARY_PREFIX lib )
81+
ENDIF ( WIN32 )
82+
83+
IF ( CMAKE_BUILD_TYPE STREQUAL Debug )
84+
ADD_DEFINITIONS ( -DGTTK_SYNCHRONIZE )
85+
ADD_DEFINITIONS ( -DGTTK_VERBOSE_XERROR_HANDLER )
86+
ENDIF ( CMAKE_BUILD_TYPE STREQUAL Debug )
87+
ADD_DEFINITIONS ( -DGTTK_INSTALL_XERROR_HANDLER )
88+
ADD_DEFINITIONS ( -DUSE_TCL_STUBS )
89+
ADD_DEFINITIONS ( -DUSE_TK_STUBS )
90+
ADD_DEFINITIONS ( -DUSE_TTK_STUBS )
91+
ADD_DEFINITIONS ( -DPACKAGE_NAME="${PKG_NAME}" )
92+
ADD_DEFINITIONS ( -DPACKAGE_VERSION="${PKG_VERSION}" )
93+
INCLUDE_DIRECTORIES ( ${TCL_INCLUDE_PATH} )
94+
INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH} )
95+
INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk-private/generic/ttk )
96+
IF ( WIN32 ) # Include additional directories for MSYS build
97+
INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/generic )
98+
INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/generic/ttk )
99+
INCLUDE_DIRECTORIES ( ${TK_INCLUDE_PATH}/tk8.6/tk-private/win )
100+
ENDIF ( WIN32 )
101+
INCLUDE_DIRECTORIES ( ${PROJECT_SOURCE_DIR}/generic )
102+
103+
## ===========================================================================
104+
## Target: tksvg shared library
105+
## ===========================================================================
106+
MESSAGE ( STATUS "===========================================================" )
107+
MESSAGE ( STATUS " ++++ Shared Library: ${PKG_TARGET_LIB_NAME} ++++" )
108+
MESSAGE ( STATUS "===========================================================" )
109+
ADD_LIBRARY ( ${PKG_TARGET_LIB_NAME} SHARED ${PKG_SOURCES} )
110+
TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TCL_STUB_LIBRARY} )
111+
TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TK_STUB_LIBRARY} )
112+
IF ( TTK_STUB_LIBRARY )
113+
TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TTK_STUB_LIBRARY} )
114+
ENDIF ( TTK_STUB_LIBRARY )
115+
# IF ( TCL_LIBRARY_STATIC )
116+
# TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TCL_LIBRARY_STATIC} )
117+
# ENDIF ( TCL_LIBRARY_STATIC )
118+
# IF ( TK_LIBRARY_STATIC )
119+
# TARGET_LINK_LIBRARIES ( ${PKG_TARGET_LIB_NAME} ${TK_LIBRARY_STATIC} )
120+
# ENDIF ( TK_LIBRARY_STATIC )
121+
122+
FILE ( WRITE tksvg/pkgIndex.tcl
123+
"package ifneeded tksvg ${PKG_VERSION} \\
124+
[list load [file join $dir lib${PKG_NAME}[info sharedlibextension]] tksvg]" )
125+
126+
SET ( LIBRARY_OUTPUT_PATH ${PKG_TARGET_LIB_NAME} )
127+
INSTALL ( TARGETS ${PKG_TARGET_LIB_NAME}
128+
RUNTIME DESTINATION ${PKG_TARGET_LIB_NAME}
129+
LIBRARY DESTINATION ${PKG_TARGET_LIB_NAME}
130+
ARCHIVE DESTINATION ${PKG_TARGET_LIB_NAME} )
131+
INSTALL ( FILES tksvg/pkgIndex.tcl DESTINATION ${PKG_TARGET_LIB_NAME} )

0 commit comments

Comments
 (0)