Fixed the build system for Linux

This commit is contained in:
Andrew D'Addesio 2012-10-20 13:23:42 -05:00
parent aa50ab78ec
commit 6393955683
11 changed files with 103 additions and 43 deletions

8
.gitignore vendored
View file

@ -1,9 +1,9 @@
# build system # Build system
_build/ _build/
_deps/ _deps/
_dist/ _dist/
# objects # Objects
*.o *.o
*.lo *.lo
*.slo *.slo
@ -12,7 +12,7 @@ _dist/
*.pch *.pch
*.gch *.gch
# libraries # Libraries
*.a *.a
*.la *.la
*.lai *.lai
@ -22,7 +22,7 @@ _dist/
*.so.* *.so.*
*.dylib *.dylib
# binaries # Binaries
*.exe *.exe
*.app *.app

View file

@ -111,12 +111,12 @@ set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}") set(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/_dist/${DIST_NAME}")
if(WIN32) if(WIN32)
set(FREETYPE_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/freetype/include ${CMAKE_SOURCE_DIR}/_deps/freetype/include/freetype/config) set(FREETYPE_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/freetype/include ${CMAKE_SOURCE_DIR}/_deps/freetype/include/freetype/config)
set(LIBJPEGTURBO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/libjpeg-turbo) set(LIBJPEGTURBO_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libjpeg-turbo)
set(LIBMPG123_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/libmpg123) set(LIBMPG123_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libmpg123)
set(LIBPNG_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/libpng) set(LIBPNG_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpng)
set(LIBPQ_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/libpq ${CMAKE_SOURCE_DIR}/_deps/libpq/include ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port/win32 ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port) set(LIBPQ_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/libpq ${CMAKE_SOURCE_DIR}/_deps/libpq/include ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port/win32 ${CMAKE_SOURCE_DIR}/_deps/libpq/include/port)
set(ZLIB_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/_deps/zlib) set(ZLIB_INCLUDE ${CMAKE_SOURCE_DIR}/_deps/zlib)
add_subdirectory(_deps/freetype) add_subdirectory(_deps/freetype)
add_subdirectory(_deps/libjpeg-turbo) add_subdirectory(_deps/libjpeg-turbo)
@ -124,11 +124,33 @@ if(WIN32)
add_subdirectory(_deps/libpng) add_subdirectory(_deps/libpng)
add_subdirectory(_deps/libpq) add_subdirectory(_deps/libpq)
add_subdirectory(_deps/zlib) add_subdirectory(_deps/zlib)
set(FREETYPE_LINK freetype_shared)
set(LIBJPEG_LINK jpegturbo_static)
set(LIBMPG123_LINK libmpg123_static)
set(LIBPNG_LINK libpng_static)
set(LIBPQ_LINK libpq_shared)
set(ZLIB_LINK zlib_static)
else()
set(FREETYPE_LINK freetype)
set(LIBJPEG_LINK jpeg)
set(LIBMPG123_LINK mpg123)
set(LIBPNG_LINK png)
set(LIBPQ_LINK pq)
set(ZLIB_LINK z)
endif() endif()
set(FILEHANDLER_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/Libraries/FileHandler) set(FILEHANDLER_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/FileHandler)
set(LIBGLDEMO_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/Libraries/libgldemo) set(LIBGLDEMO_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libgldemo)
set(LIBVITABOY_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/Libraries/libvitaboy) set(LIBVITABOY_INCLUDE ${CMAKE_SOURCE_DIR}/Libraries/libvitaboy)
if(WIN32)
set(GLDEMO_EXE WIN32)
set(GLDEMO_LINK mingw32 libgldemo_static opengl32 glu32)
else()
set(GLDEMO_EXE "")
set(GLDEMO_LINK libgldemo_static Xxf86vm rt Xext X11 GL GLU)
endif()
add_subdirectory(Client) add_subdirectory(Client)
add_subdirectory(Libraries) add_subdirectory(Libraries)

View file

@ -1,7 +1,7 @@
cmake_minimum_required(VERSION 2.6) cmake_minimum_required(VERSION 2.6)
project(NiotsoClient) project(NiotsoClient)
include_directories(${FILEHANDLER_INCLUDE_DIR} ${FREETYPE_INCLUDE_DIR}) include_directories(${FILEHANDLER_INCLUDE} ${FREETYPE_INCLUDE})
if(WIN32) if(WIN32)
set(NIOTSOCLIENT_SOURCES set(NIOTSOCLIENT_SOURCES
@ -17,5 +17,6 @@ if(WIN32)
Window/Window.cpp Window/Window.cpp
) )
add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES}) add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES})
target_link_libraries(TSO FileHandler_shared freetype_shared ole32 opengl32) target_link_libraries(TSO ole32 opengl32)
target_link_libraries(TSO FileHandler_shared ${FREETYPE_LINK})
endif() endif()

View file

@ -92,10 +92,9 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
LARGE_INTEGER CurrentTime; LARGE_INTEGER CurrentTime;
QueryPerformanceCounter(&CurrentTime); QueryPerformanceCounter(&CurrentTime);
float TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart; float TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/System::ClockFreq.QuadPart;
if(TimeDelta < 0 || TimeDelta >= 5){ //Invalid TimeDelta PreviousTime = CurrentTime;
PreviousTime.QuadPart = CurrentTime.QuadPart; if(TimeDelta < 0 || TimeDelta >= 5) //Safe-guard in case of system delay
continue; continue;
}
memcpy(&System::UserInput, (const void*) &System::UserInput_v, sizeof(System::UserInput_t)); memcpy(&System::UserInput, (const void*) &System::UserInput_v, sizeof(System::UserInput_t));
@ -108,6 +107,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
SwapBuffers(Graphics::hDC); SwapBuffers(Graphics::hDC);
} }
//Sleep for the remainder of the frame
PreviousTime.QuadPart = CurrentTime.QuadPart; PreviousTime.QuadPart = CurrentTime.QuadPart;
QueryPerformanceCounter(&CurrentTime); QueryPerformanceCounter(&CurrentTime);
float SleepDuration = float SleepDuration =

View file

@ -28,7 +28,7 @@ if(WIN32)
set(FILEHANDLER_SOURCES ${FILEHANDLER_SOURCES} resource.rc) set(FILEHANDLER_SOURCES ${FILEHANDLER_SOURCES} resource.rc)
endif() endif()
include_directories(${FILEHANDLER_INCLUDE_DIR} ${LIBMPG123_INCLUDE_DIR} ${LIBJPEGTURBO_INCLUDE_DIR} ${LIBPNG_INCLUDE_DIR}) include_directories(${FILEHANDLER_INCLUDE} ${LIBMPG123_INCLUDE} ${LIBJPEGTURBO_INCLUDE} ${LIBPNG_INCLUDE})
#### Static library (uncomment to build) #### Static library (uncomment to build)
#add_library(FileHandler_static STATIC ${FILEHANDLER_SOURCES}) #add_library(FileHandler_static STATIC ${FILEHANDLER_SOURCES})
@ -38,12 +38,15 @@ include_directories(${FILEHANDLER_INCLUDE_DIR} ${LIBMPG123_INCLUDE_DIR} ${LIBJPE
# CLEAN_DIRECT_OUTPUT 1) # CLEAN_DIRECT_OUTPUT 1)
add_library(FileHandler_shared SHARED ${FILEHANDLER_SOURCES}) add_library(FileHandler_shared SHARED ${FILEHANDLER_SOURCES})
if(WIN32)
set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}")
else()
set_target_properties(FileHandler_shared PROPERTIES OUTPUT_NAME "FileHandler")
endif()
set_target_properties(FileHandler_shared PROPERTIES set_target_properties(FileHandler_shared PROPERTIES
OUTPUT_NAME "FileHandler${FILEHANDLER_SERIES}" VERSION ${FILEHANDLER_SERIES}.${FILEHANDLER_MAJOR}.${FILEHANDLER_MINOR}
VERSION ${FILEHANDLER_SERIES}${FILEHANDLER_MAJOR}.${FILEHANDLER_MINOR}.0
SOVERSION ${FILEHANDLER_SERIES}${FILEHANDLER_MAJOR}
PREFIX "" PREFIX ""
IMPORT_PREFIX "" IMPORT_PREFIX ""
CLEAN_DIRECT_OUTPUT 1) CLEAN_DIRECT_OUTPUT 1)
target_link_libraries(FileHandler_shared far_static iff_static jpegturbo_static libmpg123_static libpng_static zlib_static m) target_link_libraries(FileHandler_shared far_static iff_static ${LIBJPEG_LINK} ${LIBMPG123_LINK} ${LIBPNG_LINK} ${ZLIB_LINK} m)

View file

@ -17,8 +17,9 @@
*/ */
#include "FileHandler.hpp" #include "FileHandler.hpp"
#include <setjmp.h> //Used by libpng #include <setjmp.h> //Used for libpng
#include <jpeglib.h> #include <jpeglib.h>
#include <jerror.h>
#include <png.h> #include <png.h>
#include "bmp/read_bmp.h" #include "bmp/read_bmp.h"
@ -117,13 +118,44 @@ static uint8_t * ReadBMP(Image_t * Image, const uint8_t * InData, size_t FileSiz
return OutData; return OutData;
} }
// libjpeg-turbo v6 doesn't support jpeg_mem_src, so we have to implement it here
static void term_source(j_decompress_ptr){}
static int fill_mem_input_buffer(j_decompress_ptr cinfo){
ERREXIT(cinfo, JERR_FILE_READ);
return FALSE;
}
static void skip_input_data(j_decompress_ptr cinfo, long bytes)
{
struct jpeg_source_mgr * src = cinfo->src;
if(bytes > (long) src->bytes_in_buffer){
ERREXIT(cinfo, JERR_FILE_READ);
return;
}
src->next_input_byte += bytes;
src->bytes_in_buffer -= bytes;
}
static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize){ static uint8_t * ReadJPG(Image_t * Image, const uint8_t * InData, size_t FileSize){
//Initialize //Initialize
jpeg_decompress_struct cinfo; jpeg_decompress_struct cinfo;
jpeg_error_mgr jerr; jpeg_error_mgr jerr;
cinfo.err = jpeg_std_error(&jerr); cinfo.err = jpeg_std_error(&jerr);
jpeg_create_decompress(&cinfo); jpeg_create_decompress(&cinfo);
jpeg_mem_src(&cinfo, (unsigned char*) InData, FileSize);
if (cinfo.src == NULL)
cinfo.src = (jpeg_source_mgr *)
(*cinfo.mem->alloc_small)((j_common_ptr) &cinfo, JPOOL_PERMANENT, sizeof(jpeg_source_mgr));
jpeg_source_mgr *src = cinfo.src;
src->init_source = term_source;
src->fill_input_buffer = fill_mem_input_buffer;
src->skip_input_data = skip_input_data;
src->resync_to_restart = jpeg_resync_to_restart;
src->term_source = term_source;
src->bytes_in_buffer = FileSize;
src->next_input_byte = InData;
if(jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK){ if(jpeg_read_header(&cinfo, TRUE) != JPEG_HEADER_OK){
jpeg_destroy_decompress(&cinfo); jpeg_destroy_decompress(&cinfo);
return NULL; return NULL;

View file

@ -264,8 +264,9 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
/* Find the timedelta */ /* Find the timedelta */
QueryPerformanceCounter(&CurrentTime); QueryPerformanceCounter(&CurrentTime);
TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/ClockFreq.QuadPart; TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/ClockFreq.QuadPart;
if(TimeDelta < 0) TimeDelta = 0; /* Safe-guard in case of system delay */
PreviousTime = CurrentTime; PreviousTime = CurrentTime;
if(TimeDelta < 0 || TimeDelta > 5) /* Safe-guard in case of system delay */
continue;
/* Draw */ /* Draw */
Demo.DrawScene(TimeDelta, keys); Demo.DrawScene(TimeDelta, keys);
@ -275,6 +276,6 @@ int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLi
QueryPerformanceCounter(&CurrentTime); QueryPerformanceCounter(&CurrentTime);
TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/ClockFreq.QuadPart; TimeDelta = (float)(CurrentTime.QuadPart-PreviousTime.QuadPart)/ClockFreq.QuadPart;
TimeDelta = (FramePeriod - TimeDelta) * 1000; TimeDelta = (FramePeriod - TimeDelta) * 1000;
if(TimeDelta > 1) Sleep((unsigned) TimeDelta); if(TimeDelta > 1 && TimeDelta < 100) Sleep((unsigned) TimeDelta);
} }
} }

View file

@ -23,8 +23,7 @@ else()
add_definitions(-Dstricmp=strcasecmp) add_definitions(-Dstricmp=strcasecmp)
endif() endif()
include_directories(${LIBGLDEMO_INCLUDE_DIR}) include_directories(${LIBGLDEMO_INCLUDE} ${FILEHANDLER_INCLUDE})
include_directories(${FILEHANDLER_INCLUDE_DIR})
#### Static library (uncomment to build) #### Static library (uncomment to build)
#add_library(libvitaboy_static STATIC ${LIBVITABOY_SOURCES}) #add_library(libvitaboy_static STATIC ${LIBVITABOY_SOURCES})
@ -33,12 +32,14 @@ include_directories(${FILEHANDLER_INCLUDE_DIR})
# CLEAN_DIRECT_OUTPUT 1) # CLEAN_DIRECT_OUTPUT 1)
add_library(libvitaboy_shared SHARED ${LIBVITABOY_SOURCES}) add_library(libvitaboy_shared SHARED ${LIBVITABOY_SOURCES})
if(WIN32)
set_target_properties(libvitaboy_shared PROPERTIES OUTPUT_NAME "vitaboy${LIBVITABOY_SERIES}")
else()
set_target_properties(libvitaboy_shared PROPERTIES OUTPUT_NAME "vitaboy")
endif()
set_target_properties(libvitaboy_shared PROPERTIES set_target_properties(libvitaboy_shared PROPERTIES
COMPILE_FLAGS "-fvisibility=default" COMPILE_FLAGS "-fvisibility=default"
OUTPUT_NAME "vitaboy${LIBVITABOY_SERIES}"
VERSION ${LIBVITABOY_SERIES}.${LIBVITABOY_MAJOR}.${LIBVITABOY_MINOR} VERSION ${LIBVITABOY_SERIES}.${LIBVITABOY_MAJOR}.${LIBVITABOY_MINOR}
SOVERSION ${LIBVITABOY_SERIES}
# msvc does not prepend 'lib' - do it here to have consistent name
PREFIX "lib" PREFIX "lib"
IMPORT_PREFIX "lib" IMPORT_PREFIX "lib"
CLEAN_DIRECT_OUTPUT 1) CLEAN_DIRECT_OUTPUT 1)
@ -47,4 +48,4 @@ add_executable(vbparse vbparse.cpp)
target_link_libraries(vbparse libvitaboy_shared FileHandler_shared) target_link_libraries(vbparse libvitaboy_shared FileHandler_shared)
add_executable(Renderer ${GLDEMO_EXE} Renderer.cpp) add_executable(Renderer ${GLDEMO_EXE} Renderer.cpp)
target_link_libraries(Renderer libvitaboy_shared ${GLDEMO_LIBS} FileHandler_shared m) target_link_libraries(Renderer libvitaboy_shared ${GLDEMO_LINK} FileHandler_shared m)

View file

@ -12,7 +12,7 @@ if(WIN32)
windows/Dialog/AddToArchive.cpp windows/Dialog/AddToArchive.cpp
windows/Dialog/NewArchive.cpp windows/Dialog/NewArchive.cpp
) )
include_directories(${LIBPNG_INCLUDE_DIR}) include_directories(${LIBPNG_INCLUDE})
add_executable(FARDive WIN32 ${FARDIVE_SOURCES}) add_executable(FARDive WIN32 ${FARDIVE_SOURCES})
target_link_libraries(FARDive ole32 uxtheme FileHandler_shared) target_link_libraries(FARDive ole32 uxtheme FileHandler_shared)
endif() endif()

View file

@ -9,7 +9,7 @@ set(IFF2HTML_SOURCES
../../Libraries/FileHandler/bmp/read_bmp.c ../../Libraries/FileHandler/bmp/read_bmp.c
) )
include_directories(${FILEHANDLER_INCLUDE_DIR} ${LIBPNG_INCLUDE_DIR}) include_directories(${FILEHANDLER_INCLUDE} ${LIBPNG_INCLUDE})
add_executable(iff2html ${IFF2HTML_SOURCES}) add_executable(iff2html ${IFF2HTML_SOURCES})
target_link_libraries(iff2html iff_static libpng_static zlib_static m) target_link_libraries(iff2html iff_static ${LIBPNG_LINK} ${ZLIB_LINK} m)

View file

@ -7,7 +7,7 @@ set(TSOSCAN_SOURCES
stats.c stats.c
) )
include_directories(${FILEHANDLER_INCLUDE_DIR}) include_directories(${FILEHANDLER_INCLUDE})
add_executable(tsoscan ${TSOSCAN_SOURCES}) add_executable(tsoscan ${TSOSCAN_SOURCES})
target_link_libraries(tsoscan iff_static) target_link_libraries(tsoscan iff_static)