Add CMake infrastructure
This commit is contained in:
		
							parent
							
								
									156e12c456
								
							
						
					
					
						commit
						9c024a57cd
					
				
							
								
								
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,15 +1,6 @@ | |||||||
| # Backup files | # Backup files | ||||||
| *.*~ | *.*~ | ||||||
| # Compile output |  | ||||||
| /sdtui |  | ||||||
| /add-pronunciation |  | ||||||
| /test-stardict |  | ||||||
| *.o |  | ||||||
| # IDE project files | # IDE project files | ||||||
| /sdtui.creator* | /CMakeLists.txt.user | ||||||
| /sdtui.includes |  | ||||||
| /sdtui.files |  | ||||||
| /sdtui.config |  | ||||||
| # Blah | # Blah | ||||||
| /GNUmakefile |  | ||||||
| /.clang_complete | /.clang_complete | ||||||
|  | |||||||
							
								
								
									
										111
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								CMakeLists.txt
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,111 @@ | |||||||
|  | project (sdtui C) | ||||||
|  | cmake_minimum_required (VERSION 2.8.0) | ||||||
|  | 
 | ||||||
|  | # Moar warnings | ||||||
|  | if ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUC) | ||||||
|  | 	set (CMAKE_C_FLAGS "-std=gnu99") | ||||||
|  | 	set (CMAKE_C_FLAGS_DEBUG | ||||||
|  | 		"${CMAKE_C_FLAGS_DEBUG} -Wall -Wextra -Wno-missing-field-initializers") | ||||||
|  | endif ("${CMAKE_C_COMPILER_ID}" MATCHES "GNU" OR CMAKE_COMPILER_IS_GNUC) | ||||||
|  | 
 | ||||||
|  | # Version | ||||||
|  | set (project_VERSION_MAJOR "0") | ||||||
|  | set (project_VERSION_MINOR "1") | ||||||
|  | set (project_VERSION_PATCH "0") | ||||||
|  | 
 | ||||||
|  | set (project_VERSION "${project_VERSION_MAJOR}") | ||||||
|  | set (project_VERSION "${project_VERSION}.${project_VERSION_MINOR}") | ||||||
|  | set (project_VERSION "${project_VERSION}.${project_VERSION_PATCH}") | ||||||
|  | 
 | ||||||
|  | # Dependecies | ||||||
|  | find_package (PkgConfig REQUIRED) | ||||||
|  | pkg_check_modules (dependencies REQUIRED ncursesw glib-2.0 gio-2.0 pango) | ||||||
|  | 
 | ||||||
|  | include_directories (${dependencies_INCLUDE_DIRS}) | ||||||
|  | 
 | ||||||
|  | # Project source files | ||||||
|  | set (project_common_sources | ||||||
|  | 	src/generator.c | ||||||
|  | 	src/stardict.c) | ||||||
|  | set (project_common_headers | ||||||
|  | 	${CMAKE_CURRENT_BINARY_DIR}/config.h | ||||||
|  | 	src/stardict.h | ||||||
|  | 	src/stardict-private.h | ||||||
|  | 	src/generator.h) | ||||||
|  | 
 | ||||||
|  | # Project libraries | ||||||
|  | set (project_common_libraries ${dependencies_LIBRARIES}) | ||||||
|  | 
 | ||||||
|  | # Create a common project library so that source files are only compiled once | ||||||
|  | if (${CMAKE_VERSION} VERSION_GREATER "2.8.7") | ||||||
|  | 	add_library (stardict OBJECT | ||||||
|  | 		${project_common_sources} | ||||||
|  | 		${project_common_headers}) | ||||||
|  | 	set (project_common_sources $<TARGET_OBJECTS:stardict>) | ||||||
|  | else (${CMAKE_VERSION} VERSION_GREATER "2.8.7") | ||||||
|  | 	add_library (stardict STATIC | ||||||
|  | 		${project_common_sources} | ||||||
|  | 		${project_common_headers}) | ||||||
|  | 	target_link_libraries (stardict ${project_common_libraries}) | ||||||
|  | 	list (APPEND project_common_libraries stardict) | ||||||
|  | 	set (project_common_sources) | ||||||
|  | endif (${CMAKE_VERSION} VERSION_GREATER "2.8.7") | ||||||
|  | 
 | ||||||
|  | # Generate a configuration file | ||||||
|  | configure_file (${CMAKE_CURRENT_SOURCE_DIR}/config.h.in | ||||||
|  | 	${CMAKE_CURRENT_BINARY_DIR}/config.h) | ||||||
|  | include_directories (${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR}) | ||||||
|  | 
 | ||||||
|  | # Primary target source files | ||||||
|  | set (project_sources | ||||||
|  | 	src/${CMAKE_PROJECT_NAME}.c) | ||||||
|  | set (project_headers | ||||||
|  | 	${project_common_headers}) | ||||||
|  | 
 | ||||||
|  | # Build the main executable and link it | ||||||
|  | add_executable (${CMAKE_PROJECT_NAME} | ||||||
|  | 	${project_sources} ${project_headers} ${project_common_sources}) | ||||||
|  | target_link_libraries (${CMAKE_PROJECT_NAME} ${project_common_libraries}) | ||||||
|  | 
 | ||||||
|  | # Tools | ||||||
|  | add_executable (add-pronunciation | ||||||
|  | 	src/add-pronunciation.c ${project_common_sources}) | ||||||
|  | target_link_libraries (add-pronunciation ${project_common_libraries}) | ||||||
|  | 
 | ||||||
|  | # The files to be installed | ||||||
|  | install (TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin) | ||||||
|  | install (FILES LICENSE DESTINATION share/doc/${CMAKE_PROJECT_NAME}) | ||||||
|  | 
 | ||||||
|  | # Do some unit tests | ||||||
|  | option (BUILD_TESTING "Build tests" OFF) | ||||||
|  | set (project_tests stardict) | ||||||
|  | 
 | ||||||
|  | if (BUILD_TESTING) | ||||||
|  | 	enable_testing () | ||||||
|  | 
 | ||||||
|  | 	foreach (name ${project_tests}) | ||||||
|  | 		add_executable (test-${name} | ||||||
|  | 			src/test-${name}.c ${project_common_sources}) | ||||||
|  | 		target_link_libraries (test-${name} ${project_common_libraries}) | ||||||
|  | 		add_test (test-${name} test-${name}) | ||||||
|  | 	endforeach (name) | ||||||
|  | endif (BUILD_TESTING) | ||||||
|  | 
 | ||||||
|  | # CPack | ||||||
|  | set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "StarDict terminal UI") | ||||||
|  | set (CPACK_PACKAGE_VENDOR "Premysl Janouch") | ||||||
|  | set (CPACK_PACKAGE_CONTACT "Přemysl Janouch <p.janouch@gmail.com>") | ||||||
|  | set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE") | ||||||
|  | set (CPACK_PACKAGE_VERSION_MAJOR ${project_VERSION_MAJOR}) | ||||||
|  | set (CPACK_PACKAGE_VERSION_MINOR ${project_VERSION_MINOR}) | ||||||
|  | set (CPACK_PACKAGE_VERSION_PATCH ${project_VERSION_PATCH}) | ||||||
|  | set (CPACK_GENERATOR "TGZ;ZIP") | ||||||
|  | set (CPACK_PACKAGE_FILE_NAME | ||||||
|  | 	"${CMAKE_PROJECT_NAME}-${project_VERSION}-${CMAKE_SYSTEM_NAME}-${CMAKE_SYSTEM_PROCESSOR}") | ||||||
|  | set (CPACK_PACKAGE_INSTALL_DIRECTORY "${CMAKE_PROJECT_NAME}-${project_VERSION}") | ||||||
|  | set (CPACK_SOURCE_GENERATOR "TGZ;ZIP") | ||||||
|  | set (CPACK_SOURCE_IGNORE_FILES "/\\\\.git;/build;/CMakeLists.txt.user") | ||||||
|  | set (CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${project_VERSION}") | ||||||
|  | 
 | ||||||
|  | include (CPack) | ||||||
|  | 
 | ||||||
							
								
								
									
										33
									
								
								Makefile
									
									
									
									
									
								
							
							
						
						
									
										33
									
								
								Makefile
									
									
									
									
									
								
							| @ -1,33 +0,0 @@ | |||||||
| SHELL = /bin/sh |  | ||||||
| 
 |  | ||||||
| pkgs = ncursesw glib-2.0 gio-2.0 pango |  | ||||||
| tests = test-stardict |  | ||||||
| targets = sdtui add-pronunciation $(tests) |  | ||||||
| 
 |  | ||||||
| CFLAGS = -ggdb -std=gnu99 -Wall -Wextra -Wno-missing-field-initializers \
 |  | ||||||
| 		 `pkg-config --cflags $(pkgs)` |  | ||||||
| LDFLAGS = `pkg-config --libs $(pkgs)` |  | ||||||
| 
 |  | ||||||
| .PHONY: all clean test |  | ||||||
| 
 |  | ||||||
| all: $(targets) |  | ||||||
| 
 |  | ||||||
| clean: |  | ||||||
| 	rm -f $(targets) src/*.o |  | ||||||
| 
 |  | ||||||
| sdtui: src/sdtui.o src/stardict.o |  | ||||||
| 	$(CC) $^ -o $@ $(LDFLAGS) |  | ||||||
| 
 |  | ||||||
| add-pronunciation: src/add-pronunciation.o src/stardict.o src/generator.o |  | ||||||
| 	$(CC) $^ -o $@ $(LDFLAGS) |  | ||||||
| 
 |  | ||||||
| test-stardict: src/test-stardict.o src/stardict.o src/generator.o |  | ||||||
| 	$(CC) $^ -o $@ $(LDFLAGS) |  | ||||||
| 
 |  | ||||||
| test: $(tests) |  | ||||||
| 	for i in $(tests); do         \
 |  | ||||||
| 		gtester --verbose ./$$i;  \
 |  | ||||||
| 	done |  | ||||||
| 
 |  | ||||||
| %.o: %.c |  | ||||||
| 	$(CC) $(CFLAGS) -c $< -o $@ |  | ||||||
							
								
								
									
										9
									
								
								config.h.in
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								config.h.in
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,9 @@ | |||||||
|  | #ifndef CONFIG_H | ||||||
|  | #define CONFIG_H | ||||||
|  | 
 | ||||||
|  | #define PROJECT_NAME "${CMAKE_PROJECT_NAME}" | ||||||
|  | #define PROJECT_VERSION "${project_VERSION}" | ||||||
|  | #define PROJECT_URL "${project_URL}" | ||||||
|  | 
 | ||||||
|  | #endif /* ! CONFIG_H */ | ||||||
|  | 
 | ||||||
							
								
								
									
										13
									
								
								src/sdtui.c
									
									
									
									
									
								
							
							
						
						
									
										13
									
								
								src/sdtui.c
									
									
									
									
									
								
							| @ -37,6 +37,7 @@ | |||||||
| #include <errno.h> | #include <errno.h> | ||||||
| #include <signal.h> | #include <signal.h> | ||||||
| 
 | 
 | ||||||
|  | #include "config.h" | ||||||
| #include "stardict.h" | #include "stardict.h" | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -849,8 +850,12 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS | |||||||
| 		g_type_init (); | 		g_type_init (); | ||||||
| G_GNUC_END_IGNORE_DEPRECATIONS | G_GNUC_END_IGNORE_DEPRECATIONS | ||||||
| 
 | 
 | ||||||
| 	static GOptionEntry entries[] = | 	gboolean show_version = FALSE; | ||||||
|  | 	GOptionEntry entries[] = | ||||||
| 	{ | 	{ | ||||||
|  | 		{ "version", 0, G_OPTION_FLAG_IN_MAIN, | ||||||
|  | 		  G_OPTION_ARG_NONE, &show_version, | ||||||
|  | 		  "Output version information and exit", NULL }, | ||||||
| 		{ NULL } | 		{ NULL } | ||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| @ -868,6 +873,12 @@ G_GNUC_END_IGNORE_DEPRECATIONS | |||||||
| 		exit (EXIT_FAILURE); | 		exit (EXIT_FAILURE); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	if (show_version) | ||||||
|  | 	{ | ||||||
|  | 		g_print (PROJECT_NAME " " PROJECT_VERSION "\n"); | ||||||
|  | 		exit (EXIT_SUCCESS); | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	if (argc != 2) | 	if (argc != 2) | ||||||
| 	{ | 	{ | ||||||
| 		gchar *help = g_option_context_get_help (ctx, TRUE, FALSE); | 		gchar *help = g_option_context_get_help (ctx, TRUE, FALSE); | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user