Content of Readme file of js-projekt. See Make Command and also System Configuration.
Licensed under GNU General Public License v2 (see LICENSE), or (at your option) any later version.
© 2010-2014 Jörg Seebohn
Free software project hosted at github: https://github.com/je-so/js-projekt
The newest source code (Linux version) can be downloaded from: http://github.com/je-so/js-projekt/zipball/master
Readme | Content of Readme file of js-projekt. |
Description | |
Goal | To develop a database server and also a transactional general purpose programming language. |
State | The current development is the architecture and design phase. |
Developed Ideas | Reads text database in CSV format and patches query result into C-source code. |
Build | |
Make Command | Run ‘make’ at the top level directory. |
System Configuration | To run the test program no special system configuration is required for most of the tests. |
Project Configuration | Run ./configure which reads the system configuration of freetype2 and writes it to projekte/external-lib/freetype2. |
Make Targets | |
Documentation | The documentation is extracted from the source files by naturaldoc. |
Dependencies | To build the whole project or any subproject the following dependencies should be considered. |
Development Environment: | |
Project-structure | Explanation of directory structure. |
Goal | To develop a database server and also a transactional general purpose programming language. |
State | The current development is the architecture and design phase. |
Developed Ideas | Reads text database in CSV format and patches query result into C-source code. |
To develop a database server and also a transactional general purpose programming language. The goal is to remove the impedance mismatch between computer languages and database backends. Implementation language is C99 (switch to C11 will be made if gcc supports it). During the design phase the development is done only on Linux. Development system is Ubuntu 11.04 or later.
The current development is the architecture and design phase. The structure of the base system must support many users so the concurrency problem has to be solved in one way or another. Some kind of transaction processing monitor which can handle things like client-server communication, transaction contexts and process management is needed.
Reads text database in CSV format and patches query result into C-source code. Used to manage initialization lists and to configure unix signal handlers. See directory “C-kern/resource/config/” for textdb databases.
The following code shows how the init and free functions (which should be called once at the start of the process) are patched into code. The list of functions is stored in the text database file ‘C-kern/resource/config/initprocess’.
// TEXTDB:SELECT(\n" err = initonce_"module"("(if (parameter!="") "&pcontext->" else "")parameter") ;"\n" if (err) goto ONABORT ;"\n" ++ pcontext->initcount ;")FROM("C-kern/resource/config/initprocess") ... err = initonce_valuecache(&pcontext->valuecache) ; if (err) goto ONABORT ; ++ pcontext->initcount ; err = initonce_thread() ; if (err) goto ONABORT ; ++ pcontext->initcount ; // TEXTDB:END
Automate generation of makefiles. Genmake offers a simple project description and generates the corresponding makefile with all source code dependencies.
The following example shows the project description of the text resource compiler.
include projekte/binary.gcc Src = C-kern/main/tools/resource_textcompiler.c Src += C-kern/tools/hash.c Includes = . Defines =
Handle text resources for different languages. The textres2compiler generates a C header and source file from a text resource file, see “C-kern/resource/loerror2.text”. The generated files can be used to produce text strings for any language described in the resource file. The kind of language must be decided at compile time - runtime switching is not supported at the moment.
The second version of the resource compiler supports conditional text which can depend on the supplied parameters.
The following text resource has as single parameter the number of files and the returned text depends on it.
FILES_DELETED(unsigned nr_of_deleted_files) en: "I have deleted " ((nr_of_deleted_files==0) "no" (nr_of_deleted_files==1) "one" else nr_of_deleted_files) ((nr_of_deleted_files==1) " file\n" else " files\n")
Make Command | Run ‘make’ at the top level directory. |
System Configuration | To run the test program no special system configuration is required for most of the tests. |
Project Configuration | Run ./configure which reads the system configuration of freetype2 and writes it to projekte/external-lib/freetype2. |
Make Targets | |
Documentation | The documentation is extracted from the source files by naturaldoc. |
Dependencies | To build the whole project or any subproject the following dependencies should be considered. |
Development Environment: | |
Project-structure | Explanation of directory structure. |
To run the test program no special system configuration is required for most of the tests.
The authenfication service which is implemented with help of libpam uses the service name “passwd” and therefore the same configuration as the passwd system command. But to make the unittest work you should create a user “guest” with passowrd “GUEST” and either run the test as setuid root or as setuid guest to work. If you want to change the values edit C-kern/resource/config/modulevalues and change the values prefixed with module “sysuser_t”.
Run ./configure which reads the system configuration of freetype2 and writes it to projekte/external-lib/freetype2.
If you want to build the tests with graphic subsystem enabled edit projekte/unittest.prj and uncomment the includes for the graphic subsystem and at the bottom of the file switch the comments for the Libs and Defines settings. The system uses: native X11, portable EGL (OpenGL binding to native window sytem), and portable OpenGL ES.
all | Builds »Debug« and »Release« version of every subproject except »html«. |
Debug | Builds debug binaries of every subproject. The generated binaries are stored under directory ‘bin/’. A binary is named after its corresponding project name plus an additional ‘_Debug’ suffix. |
Release | Builds release binaries of every subproject. The generated binaries are stored under directory ‘bin/’. A binary is named after its corresponding project name without any additional suffix or prefix. |
html | Generate documentation from source code with naturaldoc. You can view it by opening html/index.html in a browser. |
genmake | Build genmake binaries: »bin/genmake« and »bin/genmake_Debug«. |
unittest | Build test binaries »bin/unittest« and »bin/unittest_Debug« which run all unit tests of all devloped modules. |
textdb | Build text database tool binaries: »bin/textdb[_Debug]« |
textrescompiler | Build resource compiler binaries: »bin/textrescompiler[_Debug]« |
testchildprocess | Build test process »bin/testchildprocess[_Debug]« used in “unittest_platform_process”. |
pp-textdb | Runs the textdb tool to preprocess all C source files to patch the m with the content of the textdb database files. |
pp-textres | Runs the textrescompiler tool to preprocess all text resourc files and to generate the corresponding C header files. |
To build the whole project or any subproject the following dependencies should be considered.
You do not need OpenGL and OpenGL ES support both at the same time. Choose one. But EGL (OpenGL binding to native window system) supports both (version >= 1.4) with eglBindAPI.
Explanation of directory structure.
LICENSE | GPL v2 license |
Makefile | Top level makefile which calls project makefiles |
README | This readme file |
C-kern/ | Contains all C source code and other resources, e.g. localized text |
C-kern/api | Contains all C header files (interfaces) of the implementation modules |
C-kern/konfig.h | Global configuration file (must be included by every source module) |
coding-conventions/ | A textual description of the made design decisions |
projekte/ | Contains project descriptions suitable for Genmake |
projekte/makefiles/ | Contains generated makefiles |
projekte/codelite/ | Contains workspace & projects for the CodeLite IDE. |