Add Microsoft Windows support.
Update issue 62 Status: Feedback Gleen, I slightly modified your patches to better stick with the style of the rest of the project, Can you please confirm that it does not break? PR: Issue 62 Submitted by: glenn.ergeerts
This commit is contained in:
parent
0f32259ee2
commit
de64cce14c
8 changed files with 207 additions and 1 deletions
56
CMakeLists.txt
Normal file
56
CMakeLists.txt
Normal file
|
@ -0,0 +1,56 @@
|
|||
# $Id$
|
||||
project(libfreefare C)
|
||||
cmake_minimum_required(VERSION 2.6)
|
||||
|
||||
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/modules/")
|
||||
|
||||
add_definitions("-std=c99")
|
||||
|
||||
find_package(LIBNFC REQUIRED)
|
||||
find_package(OpenSSL REQUIRED)
|
||||
|
||||
IF(WIN32)
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/config_windows.h.cmake ${CMAKE_CURRENT_SOURCE_DIR}/config.h)
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/contrib/win32)
|
||||
find_library(WINSOCK_LIB libws2_32.a)
|
||||
set(LIBS ${LIBS} ${WINSOCK_LIB})
|
||||
ENDIF(WIN32)
|
||||
|
||||
if(MINGW)
|
||||
# force MinGW-w64 in 32bit mode
|
||||
add_definitions("-m32")
|
||||
set(CMAKE_SHARED_LINKER_FLAGS -m32)
|
||||
set(CMAKE_EXE_LINKER_FLAGS -m32)
|
||||
endif(MINGW)
|
||||
|
||||
message("CMAKE_C_FLAGS: " ${CMAKE_C_FLAGS})
|
||||
message("CMAKE_SHARED_LINKER_FLAGS: " ${CMAKE_SHARED_LINKER_FLAGS})
|
||||
|
||||
include_directories(${LIBNFC_INCLUDE_DIRS} ${OPENSSL_INCLUDE_DIR} ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
set(LIBS ${LIBS} ${LIBNFC_LIBRARIES} ${OPENSSL_LIBRARIES})
|
||||
|
||||
if(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
message("CMAKE_INSTALL_PREFIX not defined")
|
||||
set(CMAKE_INSTALL_PREFIX "c:/projects/EVENT/install") # TODO
|
||||
endif(NOT DEFINED CMAKE_INSTALL_PREFIX)
|
||||
|
||||
if(DEFINED CMAKE_INSTALL_LIBDIR)
|
||||
set(libdir ${CMAKE_INSTALL_LIBDIR})
|
||||
else(DEFINED CMAKE_INSTALL_LIBDIR)
|
||||
set(CMAKE_INSTALL_LIBDIR lib)
|
||||
set(libdir ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR})
|
||||
endif(DEFINED CMAKE_INSTALL_LIBDIR)
|
||||
|
||||
if(DEFINED INCLUDE_INSTALL_DIR)
|
||||
set(includedir ${INCLUDE_INSTALL_DIR})
|
||||
else(DEFINED INCLUDE_INSTALL_DIR)
|
||||
set(INCLUDE_INSTALL_DIR include)
|
||||
set(includedir ${CMAKE_INSTALL_PREFIX}/${INCLUDE_INSTALL_DIR})
|
||||
endif(DEFINED INCLUDE_INSTALL_DIR)
|
||||
|
||||
if(NOT DEFINED SHARE_INSTALL_PREFIX)
|
||||
set(SHARE_INSTALL_PREFIX share)
|
||||
endif(NOT DEFINED SHARE_INSTALL_PREFIX)
|
||||
|
||||
add_subdirectory(libfreefare)
|
||||
add_subdirectory(examples)
|
21
FindLIBNFC.cmake
Normal file
21
FindLIBNFC.cmake
Normal file
|
@ -0,0 +1,21 @@
|
|||
# $Id$
|
||||
# TODO locate using pkg-config for linux/bsd
|
||||
|
||||
#set(LIBNFC_INCLUDE_DIRS "")
|
||||
#set(LIBNFC_LIBRARIES "")
|
||||
set(LIBNFC_INSTALL_DIR $ENV{PROGRAMFILES}/libnfc CACHE PATH "libnfc installation directory")
|
||||
|
||||
message("libnfc install dir: " ${LIBNFC_INSTALL_DIR})
|
||||
|
||||
find_path(LIBNFC_INCLUDE_DIRS NAMES nfc/nfc.h PATHS ${LIBNFC_INSTALL_DIR}/include)
|
||||
message("libnfc include dir found: " ${LIBNFC_INCLUDE_DIRS})
|
||||
|
||||
find_library(LIBNFC_LIBRARIES libnfc PATHS ${LIBNFC_INSTALL_DIR}/lib)
|
||||
message("libnfc library found: " ${LIBNFC_LIBRARIES})
|
||||
|
||||
INCLUDE(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LIBNFC DEFAULT_MSG
|
||||
LIBNFC_INCLUDE_DIRS
|
||||
LIBNFC_LIBRARIES
|
||||
)
|
||||
MARK_AS_ADVANCED(LIBNFC_INCLUDE_DIRS LIBNFC_LIBRARIES)
|
|
@ -32,7 +32,7 @@ clean-local-coverage:
|
|||
-rm -rf coverage
|
||||
|
||||
SVN_KEYWORDS_FILES_LIST_CMD = find $(top_srcdir) -name '*.[hc]' -a ! -name config.h \
|
||||
-o -name Makefile.am
|
||||
-o -name Makefile.am -o -name '*.cmake' -o -name 'CMakeLists.txt'
|
||||
svn-keywords:
|
||||
@echo Update files svn:keywords...
|
||||
@$(SVN_KEYWORDS_FILES_LIST_CMD) | xargs svn propset -q svn:keywords Id
|
||||
|
|
1
NEWS
1
NEWS
|
@ -14,6 +14,7 @@ Changes between 0.3.1 and 0.3.2 [XX xxx XXXX]
|
|||
mifare_desfire_create_backup_data_file_iso(),
|
||||
mifare_desfire_create_linear_record_file_iso(),
|
||||
mifare_desfire_create_cyclic_record_file_iso().
|
||||
*) Microsoft Windows support.
|
||||
|
||||
Changes between 0.3.0 and 0.3.1 [23 feb 2011]
|
||||
|
||||
|
|
33
config_windows.h.cmake
Normal file
33
config_windows.h.cmake
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*-
|
||||
* Copyright (C) 2011 Glenn Ergeerts.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_WINDOWS_H__
|
||||
#define __CONFIG_WINDOWS_H__
|
||||
|
||||
#include <winsock2.h>
|
||||
|
||||
#define htole32(x) (x)
|
||||
#define le32toh(x) (x)
|
||||
#define le16toh(x) (x)
|
||||
#define htobe16(x) htons(x)
|
||||
#define be16toh(x) ntohs(x)
|
||||
|
||||
#define ENOTSUP WSAEOPNOTSUPP
|
||||
|
||||
#endif /* !__CONFIG_WINDOWS_H__ */
|
40
err.h
Normal file
40
err.h
Normal file
|
@ -0,0 +1,40 @@
|
|||
/*-
|
||||
* Copyright (C) 2011 Glenn Ergeerts.
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify it
|
||||
* under the terms of the GNU Lesser General Public License as published by the
|
||||
* Free Software Foundation, either version 3 of the License, or (at your
|
||||
* option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
|
||||
* more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>
|
||||
*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
#ifndef __ERR_H__
|
||||
#define __ERR_H__
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#define warnx(...) do { \
|
||||
fprintf (stderr, __VA_ARGS__); \
|
||||
fprintf (stderr, "\n"); \
|
||||
} while (0)
|
||||
|
||||
#define errx(code, ...) do { \
|
||||
fprintf (stderr, __VA_ARGS__); \
|
||||
fprintf (stderr, "\n"); \
|
||||
exit (code); \
|
||||
} while (0)
|
||||
|
||||
/* FIXME: warn / err are supposed to display errno's message */
|
||||
#define warn warnx
|
||||
#define err errx
|
||||
|
||||
#endif /* !__ERR_H__ */
|
21
examples/CMakeLists.txt
Normal file
21
examples/CMakeLists.txt
Normal file
|
@ -0,0 +1,21 @@
|
|||
# $Id$
|
||||
set(EXAMPLES-SOURCES
|
||||
mifare-classic-format
|
||||
mifare-classic-write-ndef
|
||||
mifare-desfire-access
|
||||
mifare-desfire-format
|
||||
mifare-desfire-info
|
||||
mifare-desfire-write-ndef
|
||||
mifare-desfire-ev1-configure-ats
|
||||
mifare-desfire-ev1-configure-default-key
|
||||
mifare-desfire-ev1-configure-random-uid
|
||||
)
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR}/../libfreefare)
|
||||
|
||||
# Examples
|
||||
foreach(source ${EXAMPLES-SOURCES})
|
||||
add_executable(${source} ${source}.c)
|
||||
target_link_libraries(${source} freefare)
|
||||
install(TARGETS ${source} RUNTIME DESTINATION bin COMPONENT examples)
|
||||
endforeach(source)
|
34
libfreefare/CMakeLists.txt
Normal file
34
libfreefare/CMakeLists.txt
Normal file
|
@ -0,0 +1,34 @@
|
|||
# $Id$
|
||||
set(LIBRARY_SOURCES
|
||||
freefare
|
||||
freefare_internal
|
||||
mad
|
||||
mifare_application
|
||||
mifare_classic
|
||||
mifare_desfire
|
||||
mifare_desfire_aid
|
||||
mifare_desfire_crypto
|
||||
mifare_desfire_error
|
||||
mifare_desfire_key
|
||||
mifare_ultralight
|
||||
tlv
|
||||
)
|
||||
|
||||
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
||||
|
||||
add_library(freefare SHARED ${LIBRARY_SOURCES})
|
||||
target_link_libraries(freefare ${LIBS})
|
||||
|
||||
set(installheaders freefare.h)
|
||||
install(FILES ${installheaders} DESTINATION ${INCLUDE_INSTALL_DIR}/freefare COMPONENT headers)
|
||||
|
||||
if(WIN32)
|
||||
# On Windows the shared (runtime) library should be either in the same
|
||||
# directory as the excutables or in the path, we add it to same directory
|
||||
install(TARGETS freefare RUNTIME DESTINATION bin COMPONENT libraries)
|
||||
|
||||
# At compile time we need the .LIB file, we place it in the lib directory
|
||||
install(TARGETS freefare ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT headers)
|
||||
else(WIN32)
|
||||
install(TARGETS freefare LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} COMPONENT libraries)
|
||||
endif(WIN32)
|
Loading…
Reference in a new issue