added precompiled macro.
added semaphore module