star-3daw

Create star-3d geometries from OBJ files
git clone git://git.meso-star.fr/star-3daw.git
Log | Files | Refs | README | LICENSE

commit e706b75756accff499dd65192b3efcb7dd963ba7
parent cf20bd4f69dd654415383be27263a9c01dc10e2a
Author: Vincent Forest <vincent.forest@meso-star.com>
Date:   Wed, 27 May 2015 12:14:23 +0200

Make the library compliant with the CL compiler

Diffstat:
Mcmake/CMakeLists.txt | 20++++++--------------
Msrc/s3daw.c | 33++++++++++++++++++++++++++++++++-
2 files changed, 38 insertions(+), 15 deletions(-)

diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt @@ -36,8 +36,8 @@ option(NO_TEST "Disable the test" OFF) ################################################################################ # Check dependencies ################################################################################ -find_package(AW 1.0.1 REQUIRED) -find_package(Polygon 0.0.1 REQUIRED) +find_package(AW 1.0.2 REQUIRED) +find_package(Polygon 0.0.3 REQUIRED) find_package(RCMake 0.1 REQUIRED) find_package(RSys 0.2 REQUIRED) find_package(Star3D 0.1 REQUIRED) @@ -88,18 +88,10 @@ rcmake_setup_devel(s3daw Star3DAW ${VERSION} star/s3daw_version.h) # Add tests ################################################################################ if(NOT NO_TEST) - function(new_test _name) - add_executable(${_name} - ${S3DAW_SOURCE_DIR}/${_name}.c) - target_link_libraries(${_name} s3daw RSys Star3D) - set(_libraries ${ARGN}) - foreach(_lib ${_libraries}) - target_link_libraries(${_name} ${_lib}) - endforeach() - add_test(${_name} ${_name}) - endfunction() - - new_test(test_s3daw) + add_executable(test_s3daw ${S3DAW_SOURCE_DIR}/test_s3daw.c) + target_link_libraries(test_s3daw s3daw RSys Star3D) + add_test(test_s3daw test_s3daw) + rcmake_copy_runtime_libraries(test_s3daw) endif() ################################################################################ diff --git a/src/s3daw.c b/src/s3daw.c @@ -44,7 +44,10 @@ #include <aw.h> #include <polygon.h> #include <string.h> -#include <libgen.h> /* dirname */ + +#ifdef COMPILER_GCC + #include <libgen.h> /* dirname */ +#endif #define DARRAY_NAME shape #define DARRAY_DATA struct s3d_shape* @@ -128,6 +131,34 @@ get_position(const unsigned ivert, float pos[3], void* ctx) f3_set(pos, vertex->position); } +#ifdef COMPILER_CL +static INLINE char* +dirname(char* filename) +{ + char drive[_MAX_DRIVE]; + char dir[_MAX_DIR]; + size_t drive_len, dir_len; + errno_t err; + ASSERT(filename); + + err = _splitpath_s + (filename, drive, sizeof(drive), dir, sizeof(dir), NULL, 0, NULL, 0); + ASSERT(err == 0); + drive_len = strlen(drive); + dir_len = strlen(dir); + if(!drive_len && !dir_len) { + ASSERT(strlen(filename) >= 1); + filename[0] = '.'; + filename[1] = '\0'; + } else { + ASSERT(strlen(filename) >= drive_len + dir_len); + strncpy(filename, drive, drive_len); + strncpy(filename + drive_len, dir, dir_len); + } + return filename; +} +#endif + static INLINE res_T get_dirname(const char* filename, struct darray_char* filedir) {